diff --git a/README.md b/README.md index 74f028f09749f9b761f2201dd3b24edc6496ae8f..73a21c98f1cea1876231e24ce68d0dc5b7bca937 100644 --- a/README.md +++ b/README.md @@ -1,13 +1 @@ -# Extraction - -Application extraction - -## Install dev version (linux) - -To install the dev version of this project run the following steps: - -- Install the app via the VAI setup on var/www/[app name] -- Clone this repo on var/wwww/[app name]\_dev -- Run install.sh and give the var/www/[app name] path when asked to build your tree structure -- Now you have the correct versioned tree structure, rename var/www/[app name] as var/www/[app name]\_vai and var/www/[app name]\_dev as var/www/[app name] -- Run `git pull` and `git push` to update/post the project and his dependencies +Vitis framework \ No newline at end of file diff --git a/src/vitis/_install/dependencies/mapserver/.htaccess b/_install/dependencies/mapserver/.htaccess similarity index 100% rename from src/vitis/_install/dependencies/mapserver/.htaccess rename to _install/dependencies/mapserver/.htaccess diff --git a/src/vitis/_install/dependencies/mapserver/linux/apache.conf b/_install/dependencies/mapserver/linux/apache.conf similarity index 100% rename from src/vitis/_install/dependencies/mapserver/linux/apache.conf rename to _install/dependencies/mapserver/linux/apache.conf diff --git a/src/vitis/_install/dependencies/mapserver/windows/apache.conf b/_install/dependencies/mapserver/windows/apache.conf similarity index 100% rename from src/vitis/_install/dependencies/mapserver/windows/apache.conf rename to _install/dependencies/mapserver/windows/apache.conf diff --git a/src/vitis/_install/dependencies/php/linux/apache.conf b/_install/dependencies/php/linux/apache.conf similarity index 100% rename from src/vitis/_install/dependencies/php/linux/apache.conf rename to _install/dependencies/php/linux/apache.conf diff --git a/src/vitis/_install/dependencies/php/php.ini b/_install/dependencies/php/php.ini similarity index 100% rename from src/vitis/_install/dependencies/php/php.ini rename to _install/dependencies/php/php.ini diff --git a/src/vitis/_install/dependencies/php/windows/apache.conf b/_install/dependencies/php/windows/apache.conf similarity index 100% rename from src/vitis/_install/dependencies/php/windows/apache.conf rename to _install/dependencies/php/windows/apache.conf diff --git a/src/vitis/_install/dependencies/pycron/crontab.txt b/_install/dependencies/pycron/crontab.txt similarity index 100% rename from src/vitis/_install/dependencies/pycron/crontab.txt rename to _install/dependencies/pycron/crontab.txt diff --git a/src/vitis/_install/dependencies/websocket/apache.conf b/_install/dependencies/websocket/apache.conf similarity index 100% rename from src/vitis/_install/dependencies/websocket/apache.conf rename to _install/dependencies/websocket/apache.conf diff --git a/src/vitis/_install/dependencies/websocket/linux/websocket_vitis b/_install/dependencies/websocket/linux/websocket_vitis similarity index 100% rename from src/vitis/_install/dependencies/websocket/linux/websocket_vitis rename to _install/dependencies/websocket/linux/websocket_vitis diff --git a/src/vitis/_install/dependencies/websocket/websocket.cfg b/_install/dependencies/websocket/websocket.cfg similarity index 100% rename from src/vitis/_install/dependencies/websocket/websocket.cfg rename to _install/dependencies/websocket/websocket.cfg diff --git a/src/vitis/_install/dependency.xml b/_install/dependency.xml similarity index 100% rename from src/vitis/_install/dependency.xml rename to _install/dependency.xml diff --git a/src/vitis/client/.htaccess b/client/.htaccess similarity index 100% rename from src/vitis/client/.htaccess rename to client/.htaccess diff --git a/src/vitis/client/css/icons/fonts/veremes.eot b/client/css/icons/fonts/veremes.eot similarity index 100% rename from src/vitis/client/css/icons/fonts/veremes.eot rename to client/css/icons/fonts/veremes.eot diff --git a/src/vitis/client/css/icons/fonts/veremes.svg b/client/css/icons/fonts/veremes.svg similarity index 100% rename from src/vitis/client/css/icons/fonts/veremes.svg rename to client/css/icons/fonts/veremes.svg diff --git a/src/vitis/client/css/icons/fonts/veremes.ttf b/client/css/icons/fonts/veremes.ttf similarity index 100% rename from src/vitis/client/css/icons/fonts/veremes.ttf rename to client/css/icons/fonts/veremes.ttf diff --git a/src/vitis/client/css/icons/fonts/veremes.woff b/client/css/icons/fonts/veremes.woff similarity index 100% rename from src/vitis/client/css/icons/fonts/veremes.woff rename to client/css/icons/fonts/veremes.woff diff --git a/src/vitis/client/css/icons/selection.json b/client/css/icons/selection.json similarity index 100% rename from src/vitis/client/css/icons/selection.json rename to client/css/icons/selection.json diff --git a/src/vitis/client/css/icons/style.css b/client/css/icons/style.css similarity index 100% rename from src/vitis/client/css/icons/style.css rename to client/css/icons/style.css diff --git a/src/vitis/client/css/lib/awesome-bootstrap-checkbox.css b/client/css/lib/awesome-bootstrap-checkbox.css similarity index 100% rename from src/vitis/client/css/lib/awesome-bootstrap-checkbox.css rename to client/css/lib/awesome-bootstrap-checkbox.css diff --git a/src/vitis/client/css/lib/bootstrap-checkbox/build.css b/client/css/lib/bootstrap-checkbox/build.css similarity index 100% rename from src/vitis/client/css/lib/bootstrap-checkbox/build.css rename to client/css/lib/bootstrap-checkbox/build.css diff --git a/src/vitis/client/css/lib/bootstrap-checkbox/font-awesome.css b/client/css/lib/bootstrap-checkbox/font-awesome.css similarity index 100% rename from src/vitis/client/css/lib/bootstrap-checkbox/font-awesome.css rename to client/css/lib/bootstrap-checkbox/font-awesome.css diff --git a/src/vitis/client/css/lib/bootstrap-checkbox/font-awesome.min.css b/client/css/lib/bootstrap-checkbox/font-awesome.min.css similarity index 100% rename from src/vitis/client/css/lib/bootstrap-checkbox/font-awesome.min.css rename to client/css/lib/bootstrap-checkbox/font-awesome.min.css diff --git a/src/vitis/client/css/lib/bootstrap/css/bootstrap-theme.css b/client/css/lib/bootstrap/css/bootstrap-theme.css similarity index 100% rename from src/vitis/client/css/lib/bootstrap/css/bootstrap-theme.css rename to client/css/lib/bootstrap/css/bootstrap-theme.css diff --git a/src/vitis/client/css/lib/bootstrap/css/bootstrap-theme.css.map b/client/css/lib/bootstrap/css/bootstrap-theme.css.map similarity index 100% rename from src/vitis/client/css/lib/bootstrap/css/bootstrap-theme.css.map rename to client/css/lib/bootstrap/css/bootstrap-theme.css.map diff --git a/src/vitis/client/css/lib/bootstrap/css/bootstrap-theme.min.css b/client/css/lib/bootstrap/css/bootstrap-theme.min.css similarity index 100% rename from src/vitis/client/css/lib/bootstrap/css/bootstrap-theme.min.css rename to client/css/lib/bootstrap/css/bootstrap-theme.min.css diff --git a/src/vitis/client/css/lib/bootstrap/css/bootstrap.css b/client/css/lib/bootstrap/css/bootstrap.css similarity index 100% rename from src/vitis/client/css/lib/bootstrap/css/bootstrap.css rename to client/css/lib/bootstrap/css/bootstrap.css diff --git a/src/vitis/client/css/lib/bootstrap/css/bootstrap.css.map b/client/css/lib/bootstrap/css/bootstrap.css.map similarity index 100% rename from src/vitis/client/css/lib/bootstrap/css/bootstrap.css.map rename to client/css/lib/bootstrap/css/bootstrap.css.map diff --git a/src/vitis/client/css/lib/bootstrap/css/bootstrap.min.css b/client/css/lib/bootstrap/css/bootstrap.min.css similarity index 100% rename from src/vitis/client/css/lib/bootstrap/css/bootstrap.min.css rename to client/css/lib/bootstrap/css/bootstrap.min.css diff --git a/src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.eot b/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.eot rename to client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.eot diff --git a/src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.svg b/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.svg rename to client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.svg diff --git a/src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf b/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf rename to client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf diff --git a/src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff b/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff rename to client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from src/vitis/client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 rename to client/css/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 diff --git a/src/vitis/client/css/lib/codemirror/codemirror.css b/client/css/lib/codemirror/codemirror.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/codemirror.css rename to client/css/lib/codemirror/codemirror.css diff --git a/src/vitis/client/css/lib/codemirror/codemirror_foldgutter.css b/client/css/lib/codemirror/codemirror_foldgutter.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/codemirror_foldgutter.css rename to client/css/lib/codemirror/codemirror_foldgutter.css diff --git a/src/vitis/client/css/lib/codemirror/dialog.css b/client/css/lib/codemirror/dialog.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/dialog.css rename to client/css/lib/codemirror/dialog.css diff --git a/src/vitis/client/css/lib/codemirror/docs.css b/client/css/lib/codemirror/docs.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/docs.css rename to client/css/lib/codemirror/docs.css diff --git a/src/vitis/client/css/lib/codemirror/map.css b/client/css/lib/codemirror/map.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/map.css rename to client/css/lib/codemirror/map.css diff --git a/src/vitis/client/css/lib/codemirror/show-hint.css b/client/css/lib/codemirror/show-hint.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/show-hint.css rename to client/css/lib/codemirror/show-hint.css diff --git a/src/vitis/client/css/lib/codemirror/theme/3024-day.css b/client/css/lib/codemirror/theme/3024-day.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/3024-day.css rename to client/css/lib/codemirror/theme/3024-day.css diff --git a/src/vitis/client/css/lib/codemirror/theme/3024-night.css b/client/css/lib/codemirror/theme/3024-night.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/3024-night.css rename to client/css/lib/codemirror/theme/3024-night.css diff --git a/src/vitis/client/css/lib/codemirror/theme/Veremes.css b/client/css/lib/codemirror/theme/Veremes.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/Veremes.css rename to client/css/lib/codemirror/theme/Veremes.css diff --git a/src/vitis/client/css/lib/codemirror/theme/abcdef.css b/client/css/lib/codemirror/theme/abcdef.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/abcdef.css rename to client/css/lib/codemirror/theme/abcdef.css diff --git a/src/vitis/client/css/lib/codemirror/theme/ambiance-mobile.css b/client/css/lib/codemirror/theme/ambiance-mobile.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/ambiance-mobile.css rename to client/css/lib/codemirror/theme/ambiance-mobile.css diff --git a/src/vitis/client/css/lib/codemirror/theme/ambiance.css b/client/css/lib/codemirror/theme/ambiance.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/ambiance.css rename to client/css/lib/codemirror/theme/ambiance.css diff --git a/src/vitis/client/css/lib/codemirror/theme/base16-dark.css b/client/css/lib/codemirror/theme/base16-dark.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/base16-dark.css rename to client/css/lib/codemirror/theme/base16-dark.css diff --git a/src/vitis/client/css/lib/codemirror/theme/base16-light.css b/client/css/lib/codemirror/theme/base16-light.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/base16-light.css rename to client/css/lib/codemirror/theme/base16-light.css diff --git a/src/vitis/client/css/lib/codemirror/theme/bespin.css b/client/css/lib/codemirror/theme/bespin.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/bespin.css rename to client/css/lib/codemirror/theme/bespin.css diff --git a/src/vitis/client/css/lib/codemirror/theme/blackboard.css b/client/css/lib/codemirror/theme/blackboard.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/blackboard.css rename to client/css/lib/codemirror/theme/blackboard.css diff --git a/src/vitis/client/css/lib/codemirror/theme/cobalt.css b/client/css/lib/codemirror/theme/cobalt.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/cobalt.css rename to client/css/lib/codemirror/theme/cobalt.css diff --git a/src/vitis/client/css/lib/codemirror/theme/colorforth.css b/client/css/lib/codemirror/theme/colorforth.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/colorforth.css rename to client/css/lib/codemirror/theme/colorforth.css diff --git a/src/vitis/client/css/lib/codemirror/theme/dracula.css b/client/css/lib/codemirror/theme/dracula.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/dracula.css rename to client/css/lib/codemirror/theme/dracula.css diff --git a/src/vitis/client/css/lib/codemirror/theme/eclipse.css b/client/css/lib/codemirror/theme/eclipse.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/eclipse.css rename to client/css/lib/codemirror/theme/eclipse.css diff --git a/src/vitis/client/css/lib/codemirror/theme/elegant.css b/client/css/lib/codemirror/theme/elegant.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/elegant.css rename to client/css/lib/codemirror/theme/elegant.css diff --git a/src/vitis/client/css/lib/codemirror/theme/erlang-dark.css b/client/css/lib/codemirror/theme/erlang-dark.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/erlang-dark.css rename to client/css/lib/codemirror/theme/erlang-dark.css diff --git a/src/vitis/client/css/lib/codemirror/theme/hopscotch.css b/client/css/lib/codemirror/theme/hopscotch.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/hopscotch.css rename to client/css/lib/codemirror/theme/hopscotch.css diff --git a/src/vitis/client/css/lib/codemirror/theme/icecoder.css b/client/css/lib/codemirror/theme/icecoder.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/icecoder.css rename to client/css/lib/codemirror/theme/icecoder.css diff --git a/src/vitis/client/css/lib/codemirror/theme/isotope.css b/client/css/lib/codemirror/theme/isotope.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/isotope.css rename to client/css/lib/codemirror/theme/isotope.css diff --git a/src/vitis/client/css/lib/codemirror/theme/lesser-dark.css b/client/css/lib/codemirror/theme/lesser-dark.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/lesser-dark.css rename to client/css/lib/codemirror/theme/lesser-dark.css diff --git a/src/vitis/client/css/lib/codemirror/theme/liquibyte.css b/client/css/lib/codemirror/theme/liquibyte.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/liquibyte.css rename to client/css/lib/codemirror/theme/liquibyte.css diff --git a/src/vitis/client/css/lib/codemirror/theme/material.css b/client/css/lib/codemirror/theme/material.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/material.css rename to client/css/lib/codemirror/theme/material.css diff --git a/src/vitis/client/css/lib/codemirror/theme/mbo.css b/client/css/lib/codemirror/theme/mbo.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/mbo.css rename to client/css/lib/codemirror/theme/mbo.css diff --git a/src/vitis/client/css/lib/codemirror/theme/mdn-like.css b/client/css/lib/codemirror/theme/mdn-like.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/mdn-like.css rename to client/css/lib/codemirror/theme/mdn-like.css diff --git a/src/vitis/client/css/lib/codemirror/theme/midnight.css b/client/css/lib/codemirror/theme/midnight.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/midnight.css rename to client/css/lib/codemirror/theme/midnight.css diff --git a/src/vitis/client/css/lib/codemirror/theme/monokai.css b/client/css/lib/codemirror/theme/monokai.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/monokai.css rename to client/css/lib/codemirror/theme/monokai.css diff --git a/src/vitis/client/css/lib/codemirror/theme/neat.css b/client/css/lib/codemirror/theme/neat.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/neat.css rename to client/css/lib/codemirror/theme/neat.css diff --git a/src/vitis/client/css/lib/codemirror/theme/neo.css b/client/css/lib/codemirror/theme/neo.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/neo.css rename to client/css/lib/codemirror/theme/neo.css diff --git a/src/vitis/client/css/lib/codemirror/theme/night.css b/client/css/lib/codemirror/theme/night.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/night.css rename to client/css/lib/codemirror/theme/night.css diff --git a/src/vitis/client/css/lib/codemirror/theme/paraiso-dark.css b/client/css/lib/codemirror/theme/paraiso-dark.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/paraiso-dark.css rename to client/css/lib/codemirror/theme/paraiso-dark.css diff --git a/src/vitis/client/css/lib/codemirror/theme/paraiso-light.css b/client/css/lib/codemirror/theme/paraiso-light.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/paraiso-light.css rename to client/css/lib/codemirror/theme/paraiso-light.css diff --git a/src/vitis/client/css/lib/codemirror/theme/pastel-on-dark.css b/client/css/lib/codemirror/theme/pastel-on-dark.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/pastel-on-dark.css rename to client/css/lib/codemirror/theme/pastel-on-dark.css diff --git a/src/vitis/client/css/lib/codemirror/theme/railscasts.css b/client/css/lib/codemirror/theme/railscasts.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/railscasts.css rename to client/css/lib/codemirror/theme/railscasts.css diff --git a/src/vitis/client/css/lib/codemirror/theme/rubyblue.css b/client/css/lib/codemirror/theme/rubyblue.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/rubyblue.css rename to client/css/lib/codemirror/theme/rubyblue.css diff --git a/src/vitis/client/css/lib/codemirror/theme/seti.css b/client/css/lib/codemirror/theme/seti.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/seti.css rename to client/css/lib/codemirror/theme/seti.css diff --git a/src/vitis/client/css/lib/codemirror/theme/solarized.css b/client/css/lib/codemirror/theme/solarized.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/solarized.css rename to client/css/lib/codemirror/theme/solarized.css diff --git a/src/vitis/client/css/lib/codemirror/theme/the-matrix.css b/client/css/lib/codemirror/theme/the-matrix.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/the-matrix.css rename to client/css/lib/codemirror/theme/the-matrix.css diff --git a/src/vitis/client/css/lib/codemirror/theme/tomorrow-night-bright.css b/client/css/lib/codemirror/theme/tomorrow-night-bright.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/tomorrow-night-bright.css rename to client/css/lib/codemirror/theme/tomorrow-night-bright.css diff --git a/src/vitis/client/css/lib/codemirror/theme/tomorrow-night-eighties.css b/client/css/lib/codemirror/theme/tomorrow-night-eighties.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/tomorrow-night-eighties.css rename to client/css/lib/codemirror/theme/tomorrow-night-eighties.css diff --git a/src/vitis/client/css/lib/codemirror/theme/ttcn.css b/client/css/lib/codemirror/theme/ttcn.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/ttcn.css rename to client/css/lib/codemirror/theme/ttcn.css diff --git a/src/vitis/client/css/lib/codemirror/theme/twilight.css b/client/css/lib/codemirror/theme/twilight.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/twilight.css rename to client/css/lib/codemirror/theme/twilight.css diff --git a/src/vitis/client/css/lib/codemirror/theme/vibrant-ink.css b/client/css/lib/codemirror/theme/vibrant-ink.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/vibrant-ink.css rename to client/css/lib/codemirror/theme/vibrant-ink.css diff --git a/src/vitis/client/css/lib/codemirror/theme/xq-dark.css b/client/css/lib/codemirror/theme/xq-dark.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/xq-dark.css rename to client/css/lib/codemirror/theme/xq-dark.css diff --git a/src/vitis/client/css/lib/codemirror/theme/xq-light.css b/client/css/lib/codemirror/theme/xq-light.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/xq-light.css rename to client/css/lib/codemirror/theme/xq-light.css diff --git a/src/vitis/client/css/lib/codemirror/theme/yeti.css b/client/css/lib/codemirror/theme/yeti.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/yeti.css rename to client/css/lib/codemirror/theme/yeti.css diff --git a/src/vitis/client/css/lib/codemirror/theme/zenburn.css b/client/css/lib/codemirror/theme/zenburn.css similarity index 100% rename from src/vitis/client/css/lib/codemirror/theme/zenburn.css rename to client/css/lib/codemirror/theme/zenburn.css diff --git a/src/vitis/client/css/lib/font-awesome/HELP-US-OUT.txt b/client/css/lib/font-awesome/HELP-US-OUT.txt similarity index 100% rename from src/vitis/client/css/lib/font-awesome/HELP-US-OUT.txt rename to client/css/lib/font-awesome/HELP-US-OUT.txt diff --git a/src/vitis/client/css/lib/font-awesome/css/font-awesome.css b/client/css/lib/font-awesome/css/font-awesome.css similarity index 100% rename from src/vitis/client/css/lib/font-awesome/css/font-awesome.css rename to client/css/lib/font-awesome/css/font-awesome.css diff --git a/src/vitis/client/css/lib/font-awesome/css/font-awesome.min.css b/client/css/lib/font-awesome/css/font-awesome.min.css similarity index 100% rename from src/vitis/client/css/lib/font-awesome/css/font-awesome.min.css rename to client/css/lib/font-awesome/css/font-awesome.min.css diff --git a/src/vitis/client/css/lib/font-awesome/fonts/FontAwesome.otf b/client/css/lib/font-awesome/fonts/FontAwesome.otf similarity index 100% rename from src/vitis/client/css/lib/font-awesome/fonts/FontAwesome.otf rename to client/css/lib/font-awesome/fonts/FontAwesome.otf diff --git a/src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.eot b/client/css/lib/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.eot rename to client/css/lib/font-awesome/fonts/fontawesome-webfont.eot diff --git a/src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.svg b/client/css/lib/font-awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.svg rename to client/css/lib/font-awesome/fonts/fontawesome-webfont.svg diff --git a/src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.ttf b/client/css/lib/font-awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.ttf rename to client/css/lib/font-awesome/fonts/fontawesome-webfont.ttf diff --git a/src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.woff b/client/css/lib/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.woff rename to client/css/lib/font-awesome/fonts/fontawesome-webfont.woff diff --git a/src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.woff2 b/client/css/lib/font-awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from src/vitis/client/css/lib/font-awesome/fonts/fontawesome-webfont.woff2 rename to client/css/lib/font-awesome/fonts/fontawesome-webfont.woff2 diff --git a/src/vitis/client/css/lib/font-awesome/less/animated.less b/client/css/lib/font-awesome/less/animated.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/animated.less rename to client/css/lib/font-awesome/less/animated.less diff --git a/src/vitis/client/css/lib/font-awesome/less/bordered-pulled.less b/client/css/lib/font-awesome/less/bordered-pulled.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/bordered-pulled.less rename to client/css/lib/font-awesome/less/bordered-pulled.less diff --git a/src/vitis/client/css/lib/font-awesome/less/core.less b/client/css/lib/font-awesome/less/core.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/core.less rename to client/css/lib/font-awesome/less/core.less diff --git a/src/vitis/client/css/lib/font-awesome/less/fixed-width.less b/client/css/lib/font-awesome/less/fixed-width.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/fixed-width.less rename to client/css/lib/font-awesome/less/fixed-width.less diff --git a/src/vitis/client/css/lib/font-awesome/less/font-awesome.less b/client/css/lib/font-awesome/less/font-awesome.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/font-awesome.less rename to client/css/lib/font-awesome/less/font-awesome.less diff --git a/src/vitis/client/css/lib/font-awesome/less/icons.less b/client/css/lib/font-awesome/less/icons.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/icons.less rename to client/css/lib/font-awesome/less/icons.less diff --git a/src/vitis/client/css/lib/font-awesome/less/larger.less b/client/css/lib/font-awesome/less/larger.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/larger.less rename to client/css/lib/font-awesome/less/larger.less diff --git a/src/vitis/client/css/lib/font-awesome/less/list.less b/client/css/lib/font-awesome/less/list.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/list.less rename to client/css/lib/font-awesome/less/list.less diff --git a/src/vitis/client/css/lib/font-awesome/less/mixins.less b/client/css/lib/font-awesome/less/mixins.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/mixins.less rename to client/css/lib/font-awesome/less/mixins.less diff --git a/src/vitis/client/css/lib/font-awesome/less/path.less b/client/css/lib/font-awesome/less/path.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/path.less rename to client/css/lib/font-awesome/less/path.less diff --git a/src/vitis/client/css/lib/font-awesome/less/rotated-flipped.less b/client/css/lib/font-awesome/less/rotated-flipped.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/rotated-flipped.less rename to client/css/lib/font-awesome/less/rotated-flipped.less diff --git a/src/vitis/client/css/lib/font-awesome/less/stacked.less b/client/css/lib/font-awesome/less/stacked.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/stacked.less rename to client/css/lib/font-awesome/less/stacked.less diff --git a/src/vitis/client/css/lib/font-awesome/less/variables.less b/client/css/lib/font-awesome/less/variables.less similarity index 100% rename from src/vitis/client/css/lib/font-awesome/less/variables.less rename to client/css/lib/font-awesome/less/variables.less diff --git a/src/vitis/client/css/lib/font-awesome/scss/_animated.scss b/client/css/lib/font-awesome/scss/_animated.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_animated.scss rename to client/css/lib/font-awesome/scss/_animated.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_bordered-pulled.scss b/client/css/lib/font-awesome/scss/_bordered-pulled.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_bordered-pulled.scss rename to client/css/lib/font-awesome/scss/_bordered-pulled.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_core.scss b/client/css/lib/font-awesome/scss/_core.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_core.scss rename to client/css/lib/font-awesome/scss/_core.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_fixed-width.scss b/client/css/lib/font-awesome/scss/_fixed-width.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_fixed-width.scss rename to client/css/lib/font-awesome/scss/_fixed-width.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_icons.scss b/client/css/lib/font-awesome/scss/_icons.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_icons.scss rename to client/css/lib/font-awesome/scss/_icons.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_larger.scss b/client/css/lib/font-awesome/scss/_larger.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_larger.scss rename to client/css/lib/font-awesome/scss/_larger.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_list.scss b/client/css/lib/font-awesome/scss/_list.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_list.scss rename to client/css/lib/font-awesome/scss/_list.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_mixins.scss b/client/css/lib/font-awesome/scss/_mixins.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_mixins.scss rename to client/css/lib/font-awesome/scss/_mixins.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_path.scss b/client/css/lib/font-awesome/scss/_path.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_path.scss rename to client/css/lib/font-awesome/scss/_path.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_rotated-flipped.scss b/client/css/lib/font-awesome/scss/_rotated-flipped.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_rotated-flipped.scss rename to client/css/lib/font-awesome/scss/_rotated-flipped.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_stacked.scss b/client/css/lib/font-awesome/scss/_stacked.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_stacked.scss rename to client/css/lib/font-awesome/scss/_stacked.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/_variables.scss b/client/css/lib/font-awesome/scss/_variables.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/_variables.scss rename to client/css/lib/font-awesome/scss/_variables.scss diff --git a/src/vitis/client/css/lib/font-awesome/scss/font-awesome.scss b/client/css/lib/font-awesome/scss/font-awesome.scss similarity index 100% rename from src/vitis/client/css/lib/font-awesome/scss/font-awesome.scss rename to client/css/lib/font-awesome/scss/font-awesome.scss diff --git a/src/vitis/client/css/lib/fonts/FontAwesome.otf b/client/css/lib/fonts/FontAwesome.otf similarity index 100% rename from src/vitis/client/css/lib/fonts/FontAwesome.otf rename to client/css/lib/fonts/FontAwesome.otf diff --git a/src/vitis/client/css/lib/fonts/fontawesome-webfont.eot b/client/css/lib/fonts/fontawesome-webfont.eot similarity index 100% rename from src/vitis/client/css/lib/fonts/fontawesome-webfont.eot rename to client/css/lib/fonts/fontawesome-webfont.eot diff --git a/src/vitis/client/css/lib/fonts/fontawesome-webfont.svg b/client/css/lib/fonts/fontawesome-webfont.svg similarity index 100% rename from src/vitis/client/css/lib/fonts/fontawesome-webfont.svg rename to client/css/lib/fonts/fontawesome-webfont.svg diff --git a/src/vitis/client/css/lib/fonts/fontawesome-webfont.ttf b/client/css/lib/fonts/fontawesome-webfont.ttf similarity index 100% rename from src/vitis/client/css/lib/fonts/fontawesome-webfont.ttf rename to client/css/lib/fonts/fontawesome-webfont.ttf diff --git a/src/vitis/client/css/lib/fonts/fontawesome-webfont.woff b/client/css/lib/fonts/fontawesome-webfont.woff similarity index 100% rename from src/vitis/client/css/lib/fonts/fontawesome-webfont.woff rename to client/css/lib/fonts/fontawesome-webfont.woff diff --git a/src/vitis/client/css/lib/fonts/fontawesome-webfont.woff2 b/client/css/lib/fonts/fontawesome-webfont.woff2 similarity index 100% rename from src/vitis/client/css/lib/fonts/fontawesome-webfont.woff2 rename to client/css/lib/fonts/fontawesome-webfont.woff2 diff --git a/src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.eot b/client/css/lib/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.eot rename to client/css/lib/fonts/glyphicons-halflings-regular.eot diff --git a/src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.svg b/client/css/lib/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.svg rename to client/css/lib/fonts/glyphicons-halflings-regular.svg diff --git a/src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.ttf b/client/css/lib/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.ttf rename to client/css/lib/fonts/glyphicons-halflings-regular.ttf diff --git a/src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.woff b/client/css/lib/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.woff rename to client/css/lib/fonts/glyphicons-halflings-regular.woff diff --git a/src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.woff2 b/client/css/lib/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from src/vitis/client/css/lib/fonts/glyphicons-halflings-regular.woff2 rename to client/css/lib/fonts/glyphicons-halflings-regular.woff2 diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css b/client/css/lib/jquery/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css rename to client/css/lib/jquery/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png b/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png rename to client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png b/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png rename to client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png b/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png rename to client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png b/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png rename to client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png b/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png rename to client/css/lib/jquery/plugins/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.css b/client/css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.css rename to client/css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.css diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.min.css b/client/css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.min.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.min.css rename to client/css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.min.css diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.css b/client/css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.css rename to client/css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.css diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.min.css b/client/css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.min.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.min.css rename to client/css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.min.css diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-fileinput/img/loading-sm.gif b/client/css/lib/jquery/plugins/bootstrap-fileinput/img/loading-sm.gif similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-fileinput/img/loading-sm.gif rename to client/css/lib/jquery/plugins/bootstrap-fileinput/img/loading-sm.gif diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-fileinput/img/loading.gif b/client/css/lib/jquery/plugins/bootstrap-fileinput/img/loading.gif similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-fileinput/img/loading.gif rename to client/css/lib/jquery/plugins/bootstrap-fileinput/img/loading.gif diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-slider/bootstrap-slider.min.css b/client/css/lib/jquery/plugins/bootstrap-slider/bootstrap-slider.min.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-slider/bootstrap-slider.min.css rename to client/css/lib/jquery/plugins/bootstrap-slider/bootstrap-slider.min.css diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css b/client/css/lib/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css rename to client/css/lib/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.css b/client/css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.css rename to client/css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.css diff --git a/src/vitis/client/css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.css b/client/css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.css rename to client/css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.css diff --git a/src/vitis/client/css/lib/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.min.css b/client/css/lib/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.min.css similarity index 100% rename from src/vitis/client/css/lib/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.min.css rename to client/css/lib/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.min.css diff --git a/src/vitis/client/css/lib/materialize/materialize.css b/client/css/lib/materialize/materialize.css similarity index 100% rename from src/vitis/client/css/lib/materialize/materialize.css rename to client/css/lib/materialize/materialize.css diff --git a/src/vitis/client/css/lib/materialize/materialize.min.css b/client/css/lib/materialize/materialize.min.css similarity index 100% rename from src/vitis/client/css/lib/materialize/materialize.min.css rename to client/css/lib/materialize/materialize.min.css diff --git a/src/vitis/client/css/lib/openlayers/ol.css b/client/css/lib/openlayers/ol.css similarity index 100% rename from src/vitis/client/css/lib/openlayers/ol.css rename to client/css/lib/openlayers/ol.css diff --git a/src/vitis/client/css/lib/ui-grid/plugins/draggable-rows.less b/client/css/lib/ui-grid/plugins/draggable-rows.less similarity index 100% rename from src/vitis/client/css/lib/ui-grid/plugins/draggable-rows.less rename to client/css/lib/ui-grid/plugins/draggable-rows.less diff --git a/src/vitis/client/css/lib/ui-grid/ui-grid.css b/client/css/lib/ui-grid/ui-grid.css similarity index 100% rename from src/vitis/client/css/lib/ui-grid/ui-grid.css rename to client/css/lib/ui-grid/ui-grid.css diff --git a/src/vitis/client/css/lib/ui-grid/ui-grid.eot b/client/css/lib/ui-grid/ui-grid.eot similarity index 100% rename from src/vitis/client/css/lib/ui-grid/ui-grid.eot rename to client/css/lib/ui-grid/ui-grid.eot diff --git a/src/vitis/client/css/lib/ui-grid/ui-grid.min.css b/client/css/lib/ui-grid/ui-grid.min.css similarity index 100% rename from src/vitis/client/css/lib/ui-grid/ui-grid.min.css rename to client/css/lib/ui-grid/ui-grid.min.css diff --git a/src/vitis/client/css/lib/ui-grid/ui-grid.svg b/client/css/lib/ui-grid/ui-grid.svg similarity index 100% rename from src/vitis/client/css/lib/ui-grid/ui-grid.svg rename to client/css/lib/ui-grid/ui-grid.svg diff --git a/src/vitis/client/css/lib/ui-grid/ui-grid.ttf b/client/css/lib/ui-grid/ui-grid.ttf similarity index 100% rename from src/vitis/client/css/lib/ui-grid/ui-grid.ttf rename to client/css/lib/ui-grid/ui-grid.ttf diff --git a/src/vitis/client/css/lib/ui-grid/ui-grid.woff b/client/css/lib/ui-grid/ui-grid.woff similarity index 100% rename from src/vitis/client/css/lib/ui-grid/ui-grid.woff rename to client/css/lib/ui-grid/ui-grid.woff diff --git a/src/vitis/client/css/lib/viewer/viewer.min.css b/client/css/lib/viewer/viewer.min.css similarity index 100% rename from src/vitis/client/css/lib/viewer/viewer.min.css rename to client/css/lib/viewer/viewer.min.css diff --git a/src/vitis/client/forms/forgotten_password.json b/client/forms/forgotten_password.json similarity index 100% rename from src/vitis/client/forms/forgotten_password.json rename to client/forms/forgotten_password.json diff --git a/src/vitis/client/forms/login.js b/client/forms/login.js similarity index 100% rename from src/vitis/client/forms/login.js rename to client/forms/login.js diff --git a/src/vitis/client/forms/login.json b/client/forms/login.json similarity index 100% rename from src/vitis/client/forms/login.json rename to client/forms/login.json diff --git a/src/vitis/client/forms/sign_up.json b/client/forms/sign_up.json similarity index 100% rename from src/vitis/client/forms/sign_up.json rename to client/forms/sign_up.json diff --git a/src/vitis/client/images/ajax-big-loader.GIF b/client/images/ajax-big-loader.GIF similarity index 100% rename from src/vitis/client/images/ajax-big-loader.GIF rename to client/images/ajax-big-loader.GIF diff --git a/src/vitis/client/images/ajax-load-big.gif b/client/images/ajax-load-big.gif similarity index 100% rename from src/vitis/client/images/ajax-load-big.gif rename to client/images/ajax-load-big.gif diff --git a/src/vitis/client/images/ajax-load.gif b/client/images/ajax-load.gif similarity index 100% rename from src/vitis/client/images/ajax-load.gif rename to client/images/ajax-load.gif diff --git a/src/vitis/client/images/bandeau.png b/client/images/bandeau.png similarity index 100% rename from src/vitis/client/images/bandeau.png rename to client/images/bandeau.png diff --git a/src/vitis/client/images/custom.png b/client/images/custom.png similarity index 100% rename from src/vitis/client/images/custom.png rename to client/images/custom.png diff --git a/src/vitis/client/images/disconnect_button.png b/client/images/disconnect_button.png similarity index 100% rename from src/vitis/client/images/disconnect_button.png rename to client/images/disconnect_button.png diff --git a/src/vitis/client/images/download.png b/client/images/download.png similarity index 100% rename from src/vitis/client/images/download.png rename to client/images/download.png diff --git a/src/vitis/client/images/editer.png b/client/images/editer.png similarity index 100% rename from src/vitis/client/images/editer.png rename to client/images/editer.png diff --git a/src/vitis/client/images/enveloppe.png b/client/images/enveloppe.png similarity index 100% rename from src/vitis/client/images/enveloppe.png rename to client/images/enveloppe.png diff --git a/src/vitis/client/images/false.png b/client/images/false.png similarity index 100% rename from src/vitis/client/images/false.png rename to client/images/false.png diff --git a/src/vitis/client/images/favicon.ico b/client/images/favicon.ico similarity index 100% rename from src/vitis/client/images/favicon.ico rename to client/images/favicon.ico diff --git a/src/vitis/client/images/i.png b/client/images/i.png similarity index 100% rename from src/vitis/client/images/i.png rename to client/images/i.png diff --git a/src/vitis/client/images/icons/geolocation_marker.png b/client/images/icons/geolocation_marker.png similarity index 100% rename from src/vitis/client/images/icons/geolocation_marker.png rename to client/images/icons/geolocation_marker.png diff --git a/src/vitis/client/images/icons/geolocation_marker_heading.png b/client/images/icons/geolocation_marker_heading.png similarity index 100% rename from src/vitis/client/images/icons/geolocation_marker_heading.png rename to client/images/icons/geolocation_marker_heading.png diff --git a/src/vitis/client/images/icons/icon-arrow-FME.png b/client/images/icons/icon-arrow-FME.png similarity index 100% rename from src/vitis/client/images/icons/icon-arrow-FME.png rename to client/images/icons/icon-arrow-FME.png diff --git a/src/vitis/client/images/icons/icon-arrow-FME2.png b/client/images/icons/icon-arrow-FME2.png similarity index 100% rename from src/vitis/client/images/icons/icon-arrow-FME2.png rename to client/images/icons/icon-arrow-FME2.png diff --git a/src/vitis/client/images/icons/icon-filtrage.png b/client/images/icons/icon-filtrage.png similarity index 100% rename from src/vitis/client/images/icons/icon-filtrage.png rename to client/images/icons/icon-filtrage.png diff --git a/src/vitis/client/images/icons/icons-down-search-arrow.png b/client/images/icons/icons-down-search-arrow.png similarity index 100% rename from src/vitis/client/images/icons/icons-down-search-arrow.png rename to client/images/icons/icons-down-search-arrow.png diff --git a/src/vitis/client/images/icons/icons-right-search-arrow.png b/client/images/icons/icons-right-search-arrow.png similarity index 100% rename from src/vitis/client/images/icons/icons-right-search-arrow.png rename to client/images/icons/icons-right-search-arrow.png diff --git a/src/vitis/client/images/logo-veremes.jpg b/client/images/logo-veremes.jpg similarity index 100% rename from src/vitis/client/images/logo-veremes.jpg rename to client/images/logo-veremes.jpg diff --git a/src/vitis/client/images/logo-veremes.png b/client/images/logo-veremes.png similarity index 100% rename from src/vitis/client/images/logo-veremes.png rename to client/images/logo-veremes.png diff --git a/src/vitis/client/images/mode/configuration.png b/client/images/mode/configuration.png similarity index 100% rename from src/vitis/client/images/mode/configuration.png rename to client/images/mode/configuration.png diff --git a/src/vitis/client/images/mode/development.png b/client/images/mode/development.png similarity index 100% rename from src/vitis/client/images/mode/development.png rename to client/images/mode/development.png diff --git a/src/vitis/client/images/mode/engine.png b/client/images/mode/engine.png similarity index 100% rename from src/vitis/client/images/mode/engine.png rename to client/images/mode/engine.png diff --git a/src/vitis/client/images/mode/help.png b/client/images/mode/help.png similarity index 100% rename from src/vitis/client/images/mode/help.png rename to client/images/mode/help.png diff --git a/src/vitis/client/images/mode/logs.png b/client/images/mode/logs.png similarity index 100% rename from src/vitis/client/images/mode/logs.png rename to client/images/mode/logs.png diff --git a/src/vitis/client/images/mode/my_work.png b/client/images/mode/my_work.png similarity index 100% rename from src/vitis/client/images/mode/my_work.png rename to client/images/mode/my_work.png diff --git a/src/vitis/client/images/mode/publication.png b/client/images/mode/publication.png similarity index 100% rename from src/vitis/client/images/mode/publication.png rename to client/images/mode/publication.png diff --git a/src/vitis/client/images/mode/statistics.png b/client/images/mode/statistics.png similarity index 100% rename from src/vitis/client/images/mode/statistics.png rename to client/images/mode/statistics.png diff --git a/src/vitis/client/images/mode/supervision.png b/client/images/mode/supervision.png similarity index 100% rename from src/vitis/client/images/mode/supervision.png rename to client/images/mode/supervision.png diff --git a/src/vitis/client/images/mode/user.png b/client/images/mode/user.png similarity index 100% rename from src/vitis/client/images/mode/user.png rename to client/images/mode/user.png diff --git a/src/vitis/client/images/mode/users.png b/client/images/mode/users.png similarity index 100% rename from src/vitis/client/images/mode/users.png rename to client/images/mode/users.png diff --git a/src/vitis/client/images/mode/vmap.png b/client/images/mode/vmap.png similarity index 100% rename from src/vitis/client/images/mode/vmap.png rename to client/images/mode/vmap.png diff --git a/src/vitis/client/images/page.png b/client/images/page.png similarity index 100% rename from src/vitis/client/images/page.png rename to client/images/page.png diff --git a/src/vitis/client/images/sql_list/st1.gif b/client/images/sql_list/st1.gif similarity index 100% rename from src/vitis/client/images/sql_list/st1.gif rename to client/images/sql_list/st1.gif diff --git a/src/vitis/client/images/sql_list/st1.png b/client/images/sql_list/st1.png similarity index 100% rename from src/vitis/client/images/sql_list/st1.png rename to client/images/sql_list/st1.png diff --git a/src/vitis/client/images/sql_list/st2.png b/client/images/sql_list/st2.png similarity index 100% rename from src/vitis/client/images/sql_list/st2.png rename to client/images/sql_list/st2.png diff --git a/src/vitis/client/images/sql_list/st3.png b/client/images/sql_list/st3.png similarity index 100% rename from src/vitis/client/images/sql_list/st3.png rename to client/images/sql_list/st3.png diff --git a/src/vitis/client/images/sql_list/st4.png b/client/images/sql_list/st4.png similarity index 100% rename from src/vitis/client/images/sql_list/st4.png rename to client/images/sql_list/st4.png diff --git a/src/vitis/client/images/sql_list/st5.gif b/client/images/sql_list/st5.gif similarity index 100% rename from src/vitis/client/images/sql_list/st5.gif rename to client/images/sql_list/st5.gif diff --git a/src/vitis/client/images/sql_list/st6.png b/client/images/sql_list/st6.png similarity index 100% rename from src/vitis/client/images/sql_list/st6.png rename to client/images/sql_list/st6.png diff --git a/src/vitis/client/images/true.png b/client/images/true.png similarity index 100% rename from src/vitis/client/images/true.png rename to client/images/true.png diff --git a/src/vitis/client/images/ui-grid/wbg.gif b/client/images/ui-grid/wbg.gif similarity index 100% rename from src/vitis/client/images/ui-grid/wbg.gif rename to client/images/ui-grid/wbg.gif diff --git a/src/vitis/client/images/visualiser.png b/client/images/visualiser.png similarity index 100% rename from src/vitis/client/images/visualiser.png rename to client/images/visualiser.png diff --git a/src/vitis/client/images/wk_params.png b/client/images/wk_params.png similarity index 100% rename from src/vitis/client/images/wk_params.png rename to client/images/wk_params.png diff --git a/src/vitis/client/index.html b/client/index.html similarity index 100% rename from src/vitis/client/index.html rename to client/index.html diff --git a/src/vitis/client/javascript/app/app.js b/client/javascript/app/app.js similarity index 100% rename from src/vitis/client/javascript/app/app.js rename to client/javascript/app/app.js diff --git a/src/vitis/client/javascript/app/config.js b/client/javascript/app/config.js similarity index 100% rename from src/vitis/client/javascript/app/config.js rename to client/javascript/app/config.js diff --git a/src/vitis/client/javascript/app/controllers/doubleFormCtrl.js b/client/javascript/app/controllers/doubleFormCtrl.js similarity index 100% rename from src/vitis/client/javascript/app/controllers/doubleFormCtrl.js rename to client/javascript/app/controllers/doubleFormCtrl.js diff --git a/src/vitis/client/javascript/app/controllers/htmlFormCtrl.js b/client/javascript/app/controllers/htmlFormCtrl.js similarity index 100% rename from src/vitis/client/javascript/app/controllers/htmlFormCtrl.js rename to client/javascript/app/controllers/htmlFormCtrl.js diff --git a/src/vitis/client/javascript/app/controllers/initCtrl.js b/client/javascript/app/controllers/initCtrl.js similarity index 100% rename from src/vitis/client/javascript/app/controllers/initCtrl.js rename to client/javascript/app/controllers/initCtrl.js diff --git a/src/vitis/client/javascript/app/controllers/loginCtrl.js b/client/javascript/app/controllers/loginCtrl.js similarity index 100% rename from src/vitis/client/javascript/app/controllers/loginCtrl.js rename to client/javascript/app/controllers/loginCtrl.js diff --git a/src/vitis/client/javascript/app/controllers/mainCtrl.js b/client/javascript/app/controllers/mainCtrl.js similarity index 100% rename from src/vitis/client/javascript/app/controllers/mainCtrl.js rename to client/javascript/app/controllers/mainCtrl.js diff --git a/src/vitis/client/javascript/app/controllers/sectionFormCtrl.js b/client/javascript/app/controllers/sectionFormCtrl.js similarity index 100% rename from src/vitis/client/javascript/app/controllers/sectionFormCtrl.js rename to client/javascript/app/controllers/sectionFormCtrl.js diff --git a/src/vitis/client/javascript/app/controllers/simpleFormCtrl.js b/client/javascript/app/controllers/simpleFormCtrl.js similarity index 100% rename from src/vitis/client/javascript/app/controllers/simpleFormCtrl.js rename to client/javascript/app/controllers/simpleFormCtrl.js diff --git a/src/vitis/client/javascript/app/controllers/workspaceListCtrl.js b/client/javascript/app/controllers/workspaceListCtrl.js similarity index 100% rename from src/vitis/client/javascript/app/controllers/workspaceListCtrl.js rename to client/javascript/app/controllers/workspaceListCtrl.js diff --git a/src/vitis/client/javascript/app/directives/doubleFormDrtv.js b/client/javascript/app/directives/doubleFormDrtv.js similarity index 100% rename from src/vitis/client/javascript/app/directives/doubleFormDrtv.js rename to client/javascript/app/directives/doubleFormDrtv.js diff --git a/src/vitis/client/javascript/app/directives/htmlFormDrtv.js b/client/javascript/app/directives/htmlFormDrtv.js similarity index 100% rename from src/vitis/client/javascript/app/directives/htmlFormDrtv.js rename to client/javascript/app/directives/htmlFormDrtv.js diff --git a/src/vitis/client/javascript/app/directives/initDrtv.js b/client/javascript/app/directives/initDrtv.js similarity index 100% rename from src/vitis/client/javascript/app/directives/initDrtv.js rename to client/javascript/app/directives/initDrtv.js diff --git a/src/vitis/client/javascript/app/directives/loginDrtv.js b/client/javascript/app/directives/loginDrtv.js similarity index 100% rename from src/vitis/client/javascript/app/directives/loginDrtv.js rename to client/javascript/app/directives/loginDrtv.js diff --git a/src/vitis/client/javascript/app/directives/mainDrtv.js b/client/javascript/app/directives/mainDrtv.js similarity index 100% rename from src/vitis/client/javascript/app/directives/mainDrtv.js rename to client/javascript/app/directives/mainDrtv.js diff --git a/src/vitis/client/javascript/app/directives/sectionFormDrtv.js b/client/javascript/app/directives/sectionFormDrtv.js similarity index 100% rename from src/vitis/client/javascript/app/directives/sectionFormDrtv.js rename to client/javascript/app/directives/sectionFormDrtv.js diff --git a/src/vitis/client/javascript/app/directives/simpleFormDrtv.js b/client/javascript/app/directives/simpleFormDrtv.js similarity index 100% rename from src/vitis/client/javascript/app/directives/simpleFormDrtv.js rename to client/javascript/app/directives/simpleFormDrtv.js diff --git a/src/vitis/client/javascript/app/directives/workspaceListDrtv.js b/client/javascript/app/directives/workspaceListDrtv.js similarity index 100% rename from src/vitis/client/javascript/app/directives/workspaceListDrtv.js rename to client/javascript/app/directives/workspaceListDrtv.js diff --git a/src/vitis/client/javascript/app/loadApp.js b/client/javascript/app/loadApp.js similarity index 100% rename from src/vitis/client/javascript/app/loadApp.js rename to client/javascript/app/loadApp.js diff --git a/src/vitis/client/javascript/app/loadExternalFiles.js b/client/javascript/app/loadExternalFiles.js similarity index 100% rename from src/vitis/client/javascript/app/loadExternalFiles.js rename to client/javascript/app/loadExternalFiles.js diff --git a/src/vitis/client/javascript/app/modules/mainMod.js b/client/javascript/app/modules/mainMod.js similarity index 100% rename from src/vitis/client/javascript/app/modules/mainMod.js rename to client/javascript/app/modules/mainMod.js diff --git a/src/vitis/client/javascript/app/script_client.js b/client/javascript/app/script_client.js similarity index 100% rename from src/vitis/client/javascript/app/script_client.js rename to client/javascript/app/script_client.js diff --git a/src/vitis/client/javascript/app/services/formSrvc.js b/client/javascript/app/services/formSrvc.js similarity index 100% rename from src/vitis/client/javascript/app/services/formSrvc.js rename to client/javascript/app/services/formSrvc.js diff --git a/src/vitis/client/javascript/app/services/mainSrvc.js b/client/javascript/app/services/mainSrvc.js similarity index 100% rename from src/vitis/client/javascript/app/services/mainSrvc.js rename to client/javascript/app/services/mainSrvc.js diff --git a/src/vitis/client/javascript/app/vitiswebsocket.js b/client/javascript/app/vitiswebsocket.js similarity index 100% rename from src/vitis/client/javascript/app/vitiswebsocket.js rename to client/javascript/app/vitiswebsocket.js diff --git a/src/vitis/client/javascript/externs/LICENSE b/client/javascript/externs/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/LICENSE rename to client/javascript/externs/LICENSE diff --git a/src/vitis/client/javascript/externs/alasql/alasql.min.js b/client/javascript/externs/alasql/alasql.min.js similarity index 100% rename from src/vitis/client/javascript/externs/alasql/alasql.min.js rename to client/javascript/externs/alasql/alasql.min.js diff --git a/src/vitis/client/javascript/externs/alasql/xlsx.core.min.js b/client/javascript/externs/alasql/xlsx.core.min.js similarity index 100% rename from src/vitis/client/javascript/externs/alasql/xlsx.core.min.js rename to client/javascript/externs/alasql/xlsx.core.min.js diff --git a/src/vitis/client/javascript/externs/angular-bind-notifier/LICENSE b/client/javascript/externs/angular-bind-notifier/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/angular-bind-notifier/LICENSE rename to client/javascript/externs/angular-bind-notifier/LICENSE diff --git a/src/vitis/client/javascript/externs/angular-bind-notifier/bindNotifier.js b/client/javascript/externs/angular-bind-notifier/bindNotifier.js similarity index 100% rename from src/vitis/client/javascript/externs/angular-bind-notifier/bindNotifier.js rename to client/javascript/externs/angular-bind-notifier/bindNotifier.js diff --git a/src/vitis/client/javascript/externs/angular-ui-codemirror/LICENSE b/client/javascript/externs/angular-ui-codemirror/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/angular-ui-codemirror/LICENSE rename to client/javascript/externs/angular-ui-codemirror/LICENSE diff --git a/src/vitis/client/javascript/externs/angular-ui-codemirror/ui-codemirror.js b/client/javascript/externs/angular-ui-codemirror/ui-codemirror.js similarity index 100% rename from src/vitis/client/javascript/externs/angular-ui-codemirror/ui-codemirror.js rename to client/javascript/externs/angular-ui-codemirror/ui-codemirror.js diff --git a/src/vitis/client/javascript/externs/angular-ui-codemirror/ui-codemirror.min.js b/client/javascript/externs/angular-ui-codemirror/ui-codemirror.min.js similarity index 100% rename from src/vitis/client/javascript/externs/angular-ui-codemirror/ui-codemirror.min.js rename to client/javascript/externs/angular-ui-codemirror/ui-codemirror.min.js diff --git a/src/vitis/client/javascript/externs/angular/LICENSE b/client/javascript/externs/angular/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/angular/LICENSE rename to client/javascript/externs/angular/LICENSE diff --git a/src/vitis/client/javascript/externs/angular/angular.js b/client/javascript/externs/angular/angular.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/angular.js rename to client/javascript/externs/angular/angular.js diff --git a/src/vitis/client/javascript/externs/angular/angular.min.js b/client/javascript/externs/angular/angular.min.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/angular.min.js rename to client/javascript/externs/angular/angular.min.js diff --git a/src/vitis/client/javascript/externs/angular/angular.min.js.map b/client/javascript/externs/angular/angular.min.js.map similarity index 100% rename from src/vitis/client/javascript/externs/angular/angular.min.js.map rename to client/javascript/externs/angular/angular.min.js.map diff --git a/src/vitis/client/javascript/externs/angular/modules/angular-translate/LICENSE b/client/javascript/externs/angular/modules/angular-translate/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/angular-translate/LICENSE rename to client/javascript/externs/angular/modules/angular-translate/LICENSE diff --git a/src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-partial.js b/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-partial.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-partial.js rename to client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-partial.js diff --git a/src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-partial.min.js b/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-partial.min.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-partial.min.js rename to client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-partial.min.js diff --git a/src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-static-files.js b/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-static-files.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-static-files.js rename to client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-static-files.js diff --git a/src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-static-files.min.js b/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-static-files.min.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-static-files.min.js rename to client/javascript/externs/angular/modules/angular-translate/angular-translate-loader-static-files.min.js diff --git a/src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate.js b/client/javascript/externs/angular/modules/angular-translate/angular-translate.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate.js rename to client/javascript/externs/angular/modules/angular-translate/angular-translate.js diff --git a/src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate.min.js b/client/javascript/externs/angular/modules/angular-translate/angular-translate.min.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/angular-translate/angular-translate.min.js rename to client/javascript/externs/angular/modules/angular-translate/angular-translate.min.js diff --git a/src/vitis/client/javascript/externs/angular/modules/sanitize/angular-sanitize.js b/client/javascript/externs/angular/modules/sanitize/angular-sanitize.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/sanitize/angular-sanitize.js rename to client/javascript/externs/angular/modules/sanitize/angular-sanitize.js diff --git a/src/vitis/client/javascript/externs/angular/modules/sanitize/angular-sanitize.min.js b/client/javascript/externs/angular/modules/sanitize/angular-sanitize.min.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/sanitize/angular-sanitize.min.js rename to client/javascript/externs/angular/modules/sanitize/angular-sanitize.min.js diff --git a/src/vitis/client/javascript/externs/angular/modules/sanitize/angular-sanitize.min.js.map b/client/javascript/externs/angular/modules/sanitize/angular-sanitize.min.js.map similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/sanitize/angular-sanitize.min.js.map rename to client/javascript/externs/angular/modules/sanitize/angular-sanitize.min.js.map diff --git a/src/vitis/client/javascript/externs/angular/modules/ui-codemirror/LICENSE b/client/javascript/externs/angular/modules/ui-codemirror/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/ui-codemirror/LICENSE rename to client/javascript/externs/angular/modules/ui-codemirror/LICENSE diff --git a/src/vitis/client/javascript/externs/angular/modules/ui-codemirror/ui-codemirror.min.js b/client/javascript/externs/angular/modules/ui-codemirror/ui-codemirror.min.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/ui-codemirror/ui-codemirror.min.js rename to client/javascript/externs/angular/modules/ui-codemirror/ui-codemirror.min.js diff --git a/src/vitis/client/javascript/externs/angular/modules/ui-grid/LICENSE.md b/client/javascript/externs/angular/modules/ui-grid/LICENSE.md similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/ui-grid/LICENSE.md rename to client/javascript/externs/angular/modules/ui-grid/LICENSE.md diff --git a/src/vitis/client/javascript/externs/angular/modules/ui-grid/plugins/draggable-rows.js b/client/javascript/externs/angular/modules/ui-grid/plugins/draggable-rows.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/ui-grid/plugins/draggable-rows.js rename to client/javascript/externs/angular/modules/ui-grid/plugins/draggable-rows.js diff --git a/src/vitis/client/javascript/externs/angular/modules/ui-grid/ui-grid.js b/client/javascript/externs/angular/modules/ui-grid/ui-grid.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/ui-grid/ui-grid.js rename to client/javascript/externs/angular/modules/ui-grid/ui-grid.js diff --git a/src/vitis/client/javascript/externs/angular/modules/ui-grid/ui-grid.min.js b/client/javascript/externs/angular/modules/ui-grid/ui-grid.min.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/ui-grid/ui-grid.min.js rename to client/javascript/externs/angular/modules/ui-grid/ui-grid.min.js diff --git a/src/vitis/client/javascript/externs/angular/modules/ui-tinymce/LICENSE b/client/javascript/externs/angular/modules/ui-tinymce/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/ui-tinymce/LICENSE rename to client/javascript/externs/angular/modules/ui-tinymce/LICENSE diff --git a/src/vitis/client/javascript/externs/angular/modules/ui-tinymce/tinymce.js b/client/javascript/externs/angular/modules/ui-tinymce/tinymce.js similarity index 100% rename from src/vitis/client/javascript/externs/angular/modules/ui-tinymce/tinymce.js rename to client/javascript/externs/angular/modules/ui-tinymce/tinymce.js diff --git a/src/vitis/client/javascript/externs/bootbox/LICENSE.md b/client/javascript/externs/bootbox/LICENSE.md similarity index 100% rename from src/vitis/client/javascript/externs/bootbox/LICENSE.md rename to client/javascript/externs/bootbox/LICENSE.md diff --git a/src/vitis/client/javascript/externs/bootbox/bootbox.min.js b/client/javascript/externs/bootbox/bootbox.min.js similarity index 100% rename from src/vitis/client/javascript/externs/bootbox/bootbox.min.js rename to client/javascript/externs/bootbox/bootbox.min.js diff --git a/src/vitis/client/javascript/externs/bootstrap/LICENSE b/client/javascript/externs/bootstrap/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/bootstrap/LICENSE rename to client/javascript/externs/bootstrap/LICENSE diff --git a/src/vitis/client/javascript/externs/bootstrap/bootstrap.js b/client/javascript/externs/bootstrap/bootstrap.js similarity index 100% rename from src/vitis/client/javascript/externs/bootstrap/bootstrap.js rename to client/javascript/externs/bootstrap/bootstrap.js diff --git a/src/vitis/client/javascript/externs/bootstrap/bootstrap.min.js b/client/javascript/externs/bootstrap/bootstrap.min.js similarity index 100% rename from src/vitis/client/javascript/externs/bootstrap/bootstrap.min.js rename to client/javascript/externs/bootstrap/bootstrap.min.js diff --git a/src/vitis/client/javascript/externs/codemirror/LICENSE b/client/javascript/externs/codemirror/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/LICENSE rename to client/javascript/externs/codemirror/LICENSE diff --git a/src/vitis/client/javascript/externs/codemirror/addon/comment/comment.js b/client/javascript/externs/codemirror/addon/comment/comment.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/comment/comment.js rename to client/javascript/externs/codemirror/addon/comment/comment.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/comment/continuecomment.js b/client/javascript/externs/codemirror/addon/comment/continuecomment.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/comment/continuecomment.js rename to client/javascript/externs/codemirror/addon/comment/continuecomment.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/dialog/dialog.css b/client/javascript/externs/codemirror/addon/dialog/dialog.css similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/dialog/dialog.css rename to client/javascript/externs/codemirror/addon/dialog/dialog.css diff --git a/src/vitis/client/javascript/externs/codemirror/addon/dialog/dialog.js b/client/javascript/externs/codemirror/addon/dialog/dialog.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/dialog/dialog.js rename to client/javascript/externs/codemirror/addon/dialog/dialog.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/display/autorefresh.js b/client/javascript/externs/codemirror/addon/display/autorefresh.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/display/autorefresh.js rename to client/javascript/externs/codemirror/addon/display/autorefresh.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/display/fullscreen.css b/client/javascript/externs/codemirror/addon/display/fullscreen.css similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/display/fullscreen.css rename to client/javascript/externs/codemirror/addon/display/fullscreen.css diff --git a/src/vitis/client/javascript/externs/codemirror/addon/display/fullscreen.js b/client/javascript/externs/codemirror/addon/display/fullscreen.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/display/fullscreen.js rename to client/javascript/externs/codemirror/addon/display/fullscreen.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/display/panel.js b/client/javascript/externs/codemirror/addon/display/panel.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/display/panel.js rename to client/javascript/externs/codemirror/addon/display/panel.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/display/placeholder.js b/client/javascript/externs/codemirror/addon/display/placeholder.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/display/placeholder.js rename to client/javascript/externs/codemirror/addon/display/placeholder.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/display/rulers.js b/client/javascript/externs/codemirror/addon/display/rulers.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/display/rulers.js rename to client/javascript/externs/codemirror/addon/display/rulers.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/edit/closebrackets.js b/client/javascript/externs/codemirror/addon/edit/closebrackets.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/edit/closebrackets.js rename to client/javascript/externs/codemirror/addon/edit/closebrackets.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/edit/closetag.js b/client/javascript/externs/codemirror/addon/edit/closetag.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/edit/closetag.js rename to client/javascript/externs/codemirror/addon/edit/closetag.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/edit/continuelist.js b/client/javascript/externs/codemirror/addon/edit/continuelist.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/edit/continuelist.js rename to client/javascript/externs/codemirror/addon/edit/continuelist.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/edit/matchbrackets.js b/client/javascript/externs/codemirror/addon/edit/matchbrackets.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/edit/matchbrackets.js rename to client/javascript/externs/codemirror/addon/edit/matchbrackets.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/edit/matchtags.js b/client/javascript/externs/codemirror/addon/edit/matchtags.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/edit/matchtags.js rename to client/javascript/externs/codemirror/addon/edit/matchtags.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/edit/trailingspace.js b/client/javascript/externs/codemirror/addon/edit/trailingspace.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/edit/trailingspace.js rename to client/javascript/externs/codemirror/addon/edit/trailingspace.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/fold/brace-fold.js b/client/javascript/externs/codemirror/addon/fold/brace-fold.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/fold/brace-fold.js rename to client/javascript/externs/codemirror/addon/fold/brace-fold.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/fold/comment-fold.js b/client/javascript/externs/codemirror/addon/fold/comment-fold.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/fold/comment-fold.js rename to client/javascript/externs/codemirror/addon/fold/comment-fold.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/fold/foldcode.js b/client/javascript/externs/codemirror/addon/fold/foldcode.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/fold/foldcode.js rename to client/javascript/externs/codemirror/addon/fold/foldcode.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/fold/foldgutter.css b/client/javascript/externs/codemirror/addon/fold/foldgutter.css similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/fold/foldgutter.css rename to client/javascript/externs/codemirror/addon/fold/foldgutter.css diff --git a/src/vitis/client/javascript/externs/codemirror/addon/fold/foldgutter.js b/client/javascript/externs/codemirror/addon/fold/foldgutter.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/fold/foldgutter.js rename to client/javascript/externs/codemirror/addon/fold/foldgutter.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/fold/indent-fold.js b/client/javascript/externs/codemirror/addon/fold/indent-fold.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/fold/indent-fold.js rename to client/javascript/externs/codemirror/addon/fold/indent-fold.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/fold/markdown-fold.js b/client/javascript/externs/codemirror/addon/fold/markdown-fold.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/fold/markdown-fold.js rename to client/javascript/externs/codemirror/addon/fold/markdown-fold.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/fold/xml-fold.js b/client/javascript/externs/codemirror/addon/fold/xml-fold.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/fold/xml-fold.js rename to client/javascript/externs/codemirror/addon/fold/xml-fold.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/hint/anyword-hint.js b/client/javascript/externs/codemirror/addon/hint/anyword-hint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/hint/anyword-hint.js rename to client/javascript/externs/codemirror/addon/hint/anyword-hint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/hint/css-hint.js b/client/javascript/externs/codemirror/addon/hint/css-hint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/hint/css-hint.js rename to client/javascript/externs/codemirror/addon/hint/css-hint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/hint/html-hint.js b/client/javascript/externs/codemirror/addon/hint/html-hint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/hint/html-hint.js rename to client/javascript/externs/codemirror/addon/hint/html-hint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/hint/javascript-hint.js b/client/javascript/externs/codemirror/addon/hint/javascript-hint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/hint/javascript-hint.js rename to client/javascript/externs/codemirror/addon/hint/javascript-hint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/hint/show-hint.css b/client/javascript/externs/codemirror/addon/hint/show-hint.css similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/hint/show-hint.css rename to client/javascript/externs/codemirror/addon/hint/show-hint.css diff --git a/src/vitis/client/javascript/externs/codemirror/addon/hint/show-hint.js b/client/javascript/externs/codemirror/addon/hint/show-hint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/hint/show-hint.js rename to client/javascript/externs/codemirror/addon/hint/show-hint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/hint/sql-hint.js b/client/javascript/externs/codemirror/addon/hint/sql-hint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/hint/sql-hint.js rename to client/javascript/externs/codemirror/addon/hint/sql-hint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/hint/xml-hint.js b/client/javascript/externs/codemirror/addon/hint/xml-hint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/hint/xml-hint.js rename to client/javascript/externs/codemirror/addon/hint/xml-hint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/keymap/sublime.js b/client/javascript/externs/codemirror/addon/keymap/sublime.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/keymap/sublime.js rename to client/javascript/externs/codemirror/addon/keymap/sublime.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/lint/coffeescript-lint.js b/client/javascript/externs/codemirror/addon/lint/coffeescript-lint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/lint/coffeescript-lint.js rename to client/javascript/externs/codemirror/addon/lint/coffeescript-lint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/lint/css-lint.js b/client/javascript/externs/codemirror/addon/lint/css-lint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/lint/css-lint.js rename to client/javascript/externs/codemirror/addon/lint/css-lint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/lint/html-lint.js b/client/javascript/externs/codemirror/addon/lint/html-lint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/lint/html-lint.js rename to client/javascript/externs/codemirror/addon/lint/html-lint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/lint/javascript-lint.js b/client/javascript/externs/codemirror/addon/lint/javascript-lint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/lint/javascript-lint.js rename to client/javascript/externs/codemirror/addon/lint/javascript-lint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/lint/json-lint.js b/client/javascript/externs/codemirror/addon/lint/json-lint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/lint/json-lint.js rename to client/javascript/externs/codemirror/addon/lint/json-lint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/lint/lint.css b/client/javascript/externs/codemirror/addon/lint/lint.css similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/lint/lint.css rename to client/javascript/externs/codemirror/addon/lint/lint.css diff --git a/src/vitis/client/javascript/externs/codemirror/addon/lint/lint.js b/client/javascript/externs/codemirror/addon/lint/lint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/lint/lint.js rename to client/javascript/externs/codemirror/addon/lint/lint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/lint/yaml-lint.js b/client/javascript/externs/codemirror/addon/lint/yaml-lint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/lint/yaml-lint.js rename to client/javascript/externs/codemirror/addon/lint/yaml-lint.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/merge/merge.css b/client/javascript/externs/codemirror/addon/merge/merge.css similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/merge/merge.css rename to client/javascript/externs/codemirror/addon/merge/merge.css diff --git a/src/vitis/client/javascript/externs/codemirror/addon/merge/merge.js b/client/javascript/externs/codemirror/addon/merge/merge.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/merge/merge.js rename to client/javascript/externs/codemirror/addon/merge/merge.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/mode/loadmode.js b/client/javascript/externs/codemirror/addon/mode/loadmode.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/mode/loadmode.js rename to client/javascript/externs/codemirror/addon/mode/loadmode.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/mode/multiplex.js b/client/javascript/externs/codemirror/addon/mode/multiplex.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/mode/multiplex.js rename to client/javascript/externs/codemirror/addon/mode/multiplex.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/mode/multiplex_test.js b/client/javascript/externs/codemirror/addon/mode/multiplex_test.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/mode/multiplex_test.js rename to client/javascript/externs/codemirror/addon/mode/multiplex_test.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/mode/overlay.js b/client/javascript/externs/codemirror/addon/mode/overlay.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/mode/overlay.js rename to client/javascript/externs/codemirror/addon/mode/overlay.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/mode/simple.js b/client/javascript/externs/codemirror/addon/mode/simple.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/mode/simple.js rename to client/javascript/externs/codemirror/addon/mode/simple.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/runmode/colorize.js b/client/javascript/externs/codemirror/addon/runmode/colorize.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/runmode/colorize.js rename to client/javascript/externs/codemirror/addon/runmode/colorize.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/runmode/runmode-standalone.js b/client/javascript/externs/codemirror/addon/runmode/runmode-standalone.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/runmode/runmode-standalone.js rename to client/javascript/externs/codemirror/addon/runmode/runmode-standalone.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/runmode/runmode.js b/client/javascript/externs/codemirror/addon/runmode/runmode.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/runmode/runmode.js rename to client/javascript/externs/codemirror/addon/runmode/runmode.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/runmode/runmode.node.js b/client/javascript/externs/codemirror/addon/runmode/runmode.node.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/runmode/runmode.node.js rename to client/javascript/externs/codemirror/addon/runmode/runmode.node.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/scroll/annotatescrollbar.js b/client/javascript/externs/codemirror/addon/scroll/annotatescrollbar.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/scroll/annotatescrollbar.js rename to client/javascript/externs/codemirror/addon/scroll/annotatescrollbar.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/scroll/scrollpastend.js b/client/javascript/externs/codemirror/addon/scroll/scrollpastend.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/scroll/scrollpastend.js rename to client/javascript/externs/codemirror/addon/scroll/scrollpastend.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/scroll/simplescrollbars.css b/client/javascript/externs/codemirror/addon/scroll/simplescrollbars.css similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/scroll/simplescrollbars.css rename to client/javascript/externs/codemirror/addon/scroll/simplescrollbars.css diff --git a/src/vitis/client/javascript/externs/codemirror/addon/scroll/simplescrollbars.js b/client/javascript/externs/codemirror/addon/scroll/simplescrollbars.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/scroll/simplescrollbars.js rename to client/javascript/externs/codemirror/addon/scroll/simplescrollbars.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/search/jump-to-line.js b/client/javascript/externs/codemirror/addon/search/jump-to-line.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/search/jump-to-line.js rename to client/javascript/externs/codemirror/addon/search/jump-to-line.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/search/match-highlighter.js b/client/javascript/externs/codemirror/addon/search/match-highlighter.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/search/match-highlighter.js rename to client/javascript/externs/codemirror/addon/search/match-highlighter.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/search/matchesonscrollbar.css b/client/javascript/externs/codemirror/addon/search/matchesonscrollbar.css similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/search/matchesonscrollbar.css rename to client/javascript/externs/codemirror/addon/search/matchesonscrollbar.css diff --git a/src/vitis/client/javascript/externs/codemirror/addon/search/matchesonscrollbar.js b/client/javascript/externs/codemirror/addon/search/matchesonscrollbar.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/search/matchesonscrollbar.js rename to client/javascript/externs/codemirror/addon/search/matchesonscrollbar.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/search/search.js b/client/javascript/externs/codemirror/addon/search/search.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/search/search.js rename to client/javascript/externs/codemirror/addon/search/search.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/search/searchcursor.js b/client/javascript/externs/codemirror/addon/search/searchcursor.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/search/searchcursor.js rename to client/javascript/externs/codemirror/addon/search/searchcursor.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/selection/active-line.js b/client/javascript/externs/codemirror/addon/selection/active-line.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/selection/active-line.js rename to client/javascript/externs/codemirror/addon/selection/active-line.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/selection/mark-selection.js b/client/javascript/externs/codemirror/addon/selection/mark-selection.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/selection/mark-selection.js rename to client/javascript/externs/codemirror/addon/selection/mark-selection.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/selection/selection-pointer.js b/client/javascript/externs/codemirror/addon/selection/selection-pointer.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/selection/selection-pointer.js rename to client/javascript/externs/codemirror/addon/selection/selection-pointer.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/tern/tern.css b/client/javascript/externs/codemirror/addon/tern/tern.css similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/tern/tern.css rename to client/javascript/externs/codemirror/addon/tern/tern.css diff --git a/src/vitis/client/javascript/externs/codemirror/addon/tern/tern.js b/client/javascript/externs/codemirror/addon/tern/tern.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/tern/tern.js rename to client/javascript/externs/codemirror/addon/tern/tern.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/tern/worker.js b/client/javascript/externs/codemirror/addon/tern/worker.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/tern/worker.js rename to client/javascript/externs/codemirror/addon/tern/worker.js diff --git a/src/vitis/client/javascript/externs/codemirror/addon/wrap/hardwrap.js b/client/javascript/externs/codemirror/addon/wrap/hardwrap.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/addon/wrap/hardwrap.js rename to client/javascript/externs/codemirror/addon/wrap/hardwrap.js diff --git a/src/vitis/client/javascript/externs/codemirror/clike.js b/client/javascript/externs/codemirror/clike.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/clike.js rename to client/javascript/externs/codemirror/clike.js diff --git a/src/vitis/client/javascript/externs/codemirror/codemirror.js b/client/javascript/externs/codemirror/codemirror.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/codemirror.js rename to client/javascript/externs/codemirror/codemirror.js diff --git a/src/vitis/client/javascript/externs/codemirror/codemirror.min.js b/client/javascript/externs/codemirror/codemirror.min.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/codemirror.min.js rename to client/javascript/externs/codemirror/codemirror.min.js diff --git a/src/vitis/client/javascript/externs/codemirror/css.js b/client/javascript/externs/codemirror/css.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/css.js rename to client/javascript/externs/codemirror/css.js diff --git a/src/vitis/client/javascript/externs/codemirror/htmlmixed.js b/client/javascript/externs/codemirror/htmlmixed.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/htmlmixed.js rename to client/javascript/externs/codemirror/htmlmixed.js diff --git a/src/vitis/client/javascript/externs/codemirror/javascript.js b/client/javascript/externs/codemirror/javascript.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/javascript.js rename to client/javascript/externs/codemirror/javascript.js diff --git a/src/vitis/client/javascript/externs/codemirror/map.js b/client/javascript/externs/codemirror/map.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/map.js rename to client/javascript/externs/codemirror/map.js diff --git a/src/vitis/client/javascript/externs/codemirror/php.js b/client/javascript/externs/codemirror/php.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/php.js rename to client/javascript/externs/codemirror/php.js diff --git a/src/vitis/client/javascript/externs/codemirror/show-hint.js b/client/javascript/externs/codemirror/show-hint.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/show-hint.js rename to client/javascript/externs/codemirror/show-hint.js diff --git a/src/vitis/client/javascript/externs/codemirror/sql.js b/client/javascript/externs/codemirror/sql.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/sql.js rename to client/javascript/externs/codemirror/sql.js diff --git a/src/vitis/client/javascript/externs/codemirror/xml.js b/client/javascript/externs/codemirror/xml.js similarity index 100% rename from src/vitis/client/javascript/externs/codemirror/xml.js rename to client/javascript/externs/codemirror/xml.js diff --git a/src/vitis/client/javascript/externs/formReader/component/component.js b/client/javascript/externs/formReader/component/component.js similarity index 100% rename from src/vitis/client/javascript/externs/formReader/component/component.js rename to client/javascript/externs/formReader/component/component.js diff --git a/src/vitis/client/javascript/externs/formReader/component/map.js b/client/javascript/externs/formReader/component/map.js similarity index 100% rename from src/vitis/client/javascript/externs/formReader/component/map.js rename to client/javascript/externs/formReader/component/map.js diff --git a/src/vitis/client/javascript/externs/formReader/component/map_workbench/map_workbench.html b/client/javascript/externs/formReader/component/map_workbench/map_workbench.html similarity index 100% rename from src/vitis/client/javascript/externs/formReader/component/map_workbench/map_workbench.html rename to client/javascript/externs/formReader/component/map_workbench/map_workbench.html diff --git a/src/vitis/client/javascript/externs/formReader/component/map_workbench/map_workbench.js b/client/javascript/externs/formReader/component/map_workbench/map_workbench.js similarity index 100% rename from src/vitis/client/javascript/externs/formReader/component/map_workbench/map_workbench.js rename to client/javascript/externs/formReader/component/map_workbench/map_workbench.js diff --git a/src/vitis/client/javascript/externs/formReader/formReader.html b/client/javascript/externs/formReader/formReader.html similarity index 100% rename from src/vitis/client/javascript/externs/formReader/formReader.html rename to client/javascript/externs/formReader/formReader.html diff --git a/src/vitis/client/javascript/externs/formReader/formReader.js b/client/javascript/externs/formReader/formReader.js similarity index 100% rename from src/vitis/client/javascript/externs/formReader/formReader.js rename to client/javascript/externs/formReader/formReader.js diff --git a/src/vitis/client/javascript/externs/formReader/formReaderCtrl.js b/client/javascript/externs/formReader/formReaderCtrl.js similarity index 100% rename from src/vitis/client/javascript/externs/formReader/formReaderCtrl.js rename to client/javascript/externs/formReader/formReaderCtrl.js diff --git a/src/vitis/client/javascript/externs/formReader/formReaderDrtv.js b/client/javascript/externs/formReader/formReaderDrtv.js similarity index 100% rename from src/vitis/client/javascript/externs/formReader/formReaderDrtv.js rename to client/javascript/externs/formReader/formReaderDrtv.js diff --git a/src/vitis/client/javascript/externs/formReader/formReaderSrvc.js b/client/javascript/externs/formReader/formReaderSrvc.js similarity index 100% rename from src/vitis/client/javascript/externs/formReader/formReaderSrvc.js rename to client/javascript/externs/formReader/formReaderSrvc.js diff --git a/src/vitis/client/javascript/externs/jquery/LICENSE.txt b/client/javascript/externs/jquery/LICENSE.txt similarity index 100% rename from src/vitis/client/javascript/externs/jquery/LICENSE.txt rename to client/javascript/externs/jquery/LICENSE.txt diff --git a/src/vitis/client/javascript/externs/jquery/jquery-1.11.3.js b/client/javascript/externs/jquery/jquery-1.11.3.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/jquery-1.11.3.js rename to client/javascript/externs/jquery/jquery-1.11.3.js diff --git a/src/vitis/client/javascript/externs/jquery/jquery-1.11.3.min.js b/client/javascript/externs/jquery/jquery-1.11.3.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/jquery-1.11.3.min.js rename to client/javascript/externs/jquery/jquery-1.11.3.min.js diff --git a/src/vitis/client/javascript/externs/jquery/jquery-1.11.3.min.map b/client/javascript/externs/jquery/jquery-1.11.3.min.map similarity index 100% rename from src/vitis/client/javascript/externs/jquery/jquery-1.11.3.min.map rename to client/javascript/externs/jquery/jquery-1.11.3.min.map diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootbox/bootbox.js b/client/javascript/externs/jquery/plugins/bootbox/bootbox.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootbox/bootbox.js rename to client/javascript/externs/jquery/plugins/bootbox/bootbox.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootbox/bootbox.min.js b/client/javascript/externs/jquery/plugins/bootbox/bootbox.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootbox/bootbox.min.js rename to client/javascript/externs/jquery/plugins/bootbox/bootbox.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-colorpicker/bootstrap-colorpicker.min.js b/client/javascript/externs/jquery/plugins/bootstrap-colorpicker/bootstrap-colorpicker.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-colorpicker/bootstrap-colorpicker.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-colorpicker/bootstrap-colorpicker.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js b/client/javascript/externs/jquery/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js rename to client/javascript/externs/jquery/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js b/client/javascript/externs/jquery/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-confirmation/bootstrap-confirmation.min.js b/client/javascript/externs/jquery/plugins/bootstrap-confirmation/bootstrap-confirmation.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-confirmation/bootstrap-confirmation.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-confirmation/bootstrap-confirmation.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker.js b/client/javascript/externs/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker.js rename to client/javascript/externs/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker.min.js b/client/javascript/externs/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js b/client/javascript/externs/jquery/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js b/client/javascript/externs/jquery/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput.js b/client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput.js rename to client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput.min.js b/client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput_locale_fr.js b/client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput_locale_fr.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput_locale_fr.js rename to client/javascript/externs/jquery/plugins/bootstrap-fileinput/fileinput_locale_fr.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-slider/bootstrap-slider.min.js b/client/javascript/externs/jquery/plugins/bootstrap-slider/bootstrap-slider.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-slider/bootstrap-slider.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-slider/bootstrap-slider.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js b/client/javascript/externs/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.js b/client/javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.js rename to client/javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.js b/client/javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.js rename to client/javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.concat.min.js b/client/javascript/externs/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.concat.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.concat.min.js rename to client/javascript/externs/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.concat.min.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/notify/notify.js b/client/javascript/externs/jquery/plugins/notify/notify.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/notify/notify.js rename to client/javascript/externs/jquery/plugins/notify/notify.js diff --git a/src/vitis/client/javascript/externs/jquery/plugins/notify/notify.min.js b/client/javascript/externs/jquery/plugins/notify/notify.min.js similarity index 100% rename from src/vitis/client/javascript/externs/jquery/plugins/notify/notify.min.js rename to client/javascript/externs/jquery/plugins/notify/notify.min.js diff --git a/src/vitis/client/javascript/externs/less/LICENSE b/client/javascript/externs/less/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/less/LICENSE rename to client/javascript/externs/less/LICENSE diff --git a/src/vitis/client/javascript/externs/less/less.min.js b/client/javascript/externs/less/less.min.js similarity index 100% rename from src/vitis/client/javascript/externs/less/less.min.js rename to client/javascript/externs/less/less.min.js diff --git a/src/vitis/client/javascript/externs/letter-avatar/ngletteravatar.js b/client/javascript/externs/letter-avatar/ngletteravatar.js similarity index 100% rename from src/vitis/client/javascript/externs/letter-avatar/ngletteravatar.js rename to client/javascript/externs/letter-avatar/ngletteravatar.js diff --git a/src/vitis/client/javascript/externs/letter-avatar/ngletteravatar.min.js b/client/javascript/externs/letter-avatar/ngletteravatar.min.js similarity index 100% rename from src/vitis/client/javascript/externs/letter-avatar/ngletteravatar.min.js rename to client/javascript/externs/letter-avatar/ngletteravatar.min.js diff --git a/src/vitis/client/javascript/externs/mapJSON/MapJSON.js b/client/javascript/externs/mapJSON/MapJSON.js similarity index 100% rename from src/vitis/client/javascript/externs/mapJSON/MapJSON.js rename to client/javascript/externs/mapJSON/MapJSON.js diff --git a/src/vitis/client/javascript/externs/materialize/materialize.js b/client/javascript/externs/materialize/materialize.js similarity index 100% rename from src/vitis/client/javascript/externs/materialize/materialize.js rename to client/javascript/externs/materialize/materialize.js diff --git a/src/vitis/client/javascript/externs/materialize/materialize.min.js b/client/javascript/externs/materialize/materialize.min.js similarity index 100% rename from src/vitis/client/javascript/externs/materialize/materialize.min.js rename to client/javascript/externs/materialize/materialize.min.js diff --git a/src/vitis/client/javascript/externs/mobile-detect/LICENSE b/client/javascript/externs/mobile-detect/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/mobile-detect/LICENSE rename to client/javascript/externs/mobile-detect/LICENSE diff --git a/src/vitis/client/javascript/externs/mobile-detect/mobile-detect.js b/client/javascript/externs/mobile-detect/mobile-detect.js similarity index 100% rename from src/vitis/client/javascript/externs/mobile-detect/mobile-detect.js rename to client/javascript/externs/mobile-detect/mobile-detect.js diff --git a/src/vitis/client/javascript/externs/mobile-detect/mobile-detect.min.js b/client/javascript/externs/mobile-detect/mobile-detect.min.js similarity index 100% rename from src/vitis/client/javascript/externs/mobile-detect/mobile-detect.min.js rename to client/javascript/externs/mobile-detect/mobile-detect.min.js diff --git a/src/vitis/client/javascript/externs/moment/LICENSE b/client/javascript/externs/moment/LICENSE similarity index 100% rename from src/vitis/client/javascript/externs/moment/LICENSE rename to client/javascript/externs/moment/LICENSE diff --git a/src/vitis/client/javascript/externs/moment/locale/af.js b/client/javascript/externs/moment/locale/af.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/af.js rename to client/javascript/externs/moment/locale/af.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ar-ma.js b/client/javascript/externs/moment/locale/ar-ma.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ar-ma.js rename to client/javascript/externs/moment/locale/ar-ma.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ar-sa.js b/client/javascript/externs/moment/locale/ar-sa.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ar-sa.js rename to client/javascript/externs/moment/locale/ar-sa.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ar-tn.js b/client/javascript/externs/moment/locale/ar-tn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ar-tn.js rename to client/javascript/externs/moment/locale/ar-tn.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ar.js b/client/javascript/externs/moment/locale/ar.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ar.js rename to client/javascript/externs/moment/locale/ar.js diff --git a/src/vitis/client/javascript/externs/moment/locale/az.js b/client/javascript/externs/moment/locale/az.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/az.js rename to client/javascript/externs/moment/locale/az.js diff --git a/src/vitis/client/javascript/externs/moment/locale/be.js b/client/javascript/externs/moment/locale/be.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/be.js rename to client/javascript/externs/moment/locale/be.js diff --git a/src/vitis/client/javascript/externs/moment/locale/bg.js b/client/javascript/externs/moment/locale/bg.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/bg.js rename to client/javascript/externs/moment/locale/bg.js diff --git a/src/vitis/client/javascript/externs/moment/locale/bn.js b/client/javascript/externs/moment/locale/bn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/bn.js rename to client/javascript/externs/moment/locale/bn.js diff --git a/src/vitis/client/javascript/externs/moment/locale/bo.js b/client/javascript/externs/moment/locale/bo.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/bo.js rename to client/javascript/externs/moment/locale/bo.js diff --git a/src/vitis/client/javascript/externs/moment/locale/br.js b/client/javascript/externs/moment/locale/br.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/br.js rename to client/javascript/externs/moment/locale/br.js diff --git a/src/vitis/client/javascript/externs/moment/locale/bs.js b/client/javascript/externs/moment/locale/bs.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/bs.js rename to client/javascript/externs/moment/locale/bs.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ca.js b/client/javascript/externs/moment/locale/ca.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ca.js rename to client/javascript/externs/moment/locale/ca.js diff --git a/src/vitis/client/javascript/externs/moment/locale/cs.js b/client/javascript/externs/moment/locale/cs.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/cs.js rename to client/javascript/externs/moment/locale/cs.js diff --git a/src/vitis/client/javascript/externs/moment/locale/cv.js b/client/javascript/externs/moment/locale/cv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/cv.js rename to client/javascript/externs/moment/locale/cv.js diff --git a/src/vitis/client/javascript/externs/moment/locale/cy.js b/client/javascript/externs/moment/locale/cy.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/cy.js rename to client/javascript/externs/moment/locale/cy.js diff --git a/src/vitis/client/javascript/externs/moment/locale/da.js b/client/javascript/externs/moment/locale/da.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/da.js rename to client/javascript/externs/moment/locale/da.js diff --git a/src/vitis/client/javascript/externs/moment/locale/de-at.js b/client/javascript/externs/moment/locale/de-at.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/de-at.js rename to client/javascript/externs/moment/locale/de-at.js diff --git a/src/vitis/client/javascript/externs/moment/locale/de.js b/client/javascript/externs/moment/locale/de.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/de.js rename to client/javascript/externs/moment/locale/de.js diff --git a/src/vitis/client/javascript/externs/moment/locale/dv.js b/client/javascript/externs/moment/locale/dv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/dv.js rename to client/javascript/externs/moment/locale/dv.js diff --git a/src/vitis/client/javascript/externs/moment/locale/el.js b/client/javascript/externs/moment/locale/el.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/el.js rename to client/javascript/externs/moment/locale/el.js diff --git a/src/vitis/client/javascript/externs/moment/locale/en-au.js b/client/javascript/externs/moment/locale/en-au.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/en-au.js rename to client/javascript/externs/moment/locale/en-au.js diff --git a/src/vitis/client/javascript/externs/moment/locale/en-ca.js b/client/javascript/externs/moment/locale/en-ca.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/en-ca.js rename to client/javascript/externs/moment/locale/en-ca.js diff --git a/src/vitis/client/javascript/externs/moment/locale/en-gb.js b/client/javascript/externs/moment/locale/en-gb.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/en-gb.js rename to client/javascript/externs/moment/locale/en-gb.js diff --git a/src/vitis/client/javascript/externs/moment/locale/en-ie.js b/client/javascript/externs/moment/locale/en-ie.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/en-ie.js rename to client/javascript/externs/moment/locale/en-ie.js diff --git a/src/vitis/client/javascript/externs/moment/locale/en-nz.js b/client/javascript/externs/moment/locale/en-nz.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/en-nz.js rename to client/javascript/externs/moment/locale/en-nz.js diff --git a/src/vitis/client/javascript/externs/moment/locale/eo.js b/client/javascript/externs/moment/locale/eo.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/eo.js rename to client/javascript/externs/moment/locale/eo.js diff --git a/src/vitis/client/javascript/externs/moment/locale/es.js b/client/javascript/externs/moment/locale/es.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/es.js rename to client/javascript/externs/moment/locale/es.js diff --git a/src/vitis/client/javascript/externs/moment/locale/et.js b/client/javascript/externs/moment/locale/et.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/et.js rename to client/javascript/externs/moment/locale/et.js diff --git a/src/vitis/client/javascript/externs/moment/locale/eu.js b/client/javascript/externs/moment/locale/eu.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/eu.js rename to client/javascript/externs/moment/locale/eu.js diff --git a/src/vitis/client/javascript/externs/moment/locale/fa.js b/client/javascript/externs/moment/locale/fa.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/fa.js rename to client/javascript/externs/moment/locale/fa.js diff --git a/src/vitis/client/javascript/externs/moment/locale/fi.js b/client/javascript/externs/moment/locale/fi.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/fi.js rename to client/javascript/externs/moment/locale/fi.js diff --git a/src/vitis/client/javascript/externs/moment/locale/fo.js b/client/javascript/externs/moment/locale/fo.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/fo.js rename to client/javascript/externs/moment/locale/fo.js diff --git a/src/vitis/client/javascript/externs/moment/locale/fr-ca.js b/client/javascript/externs/moment/locale/fr-ca.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/fr-ca.js rename to client/javascript/externs/moment/locale/fr-ca.js diff --git a/src/vitis/client/javascript/externs/moment/locale/fr-ch.js b/client/javascript/externs/moment/locale/fr-ch.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/fr-ch.js rename to client/javascript/externs/moment/locale/fr-ch.js diff --git a/src/vitis/client/javascript/externs/moment/locale/fr.js b/client/javascript/externs/moment/locale/fr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/fr.js rename to client/javascript/externs/moment/locale/fr.js diff --git a/src/vitis/client/javascript/externs/moment/locale/fy.js b/client/javascript/externs/moment/locale/fy.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/fy.js rename to client/javascript/externs/moment/locale/fy.js diff --git a/src/vitis/client/javascript/externs/moment/locale/gd.js b/client/javascript/externs/moment/locale/gd.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/gd.js rename to client/javascript/externs/moment/locale/gd.js diff --git a/src/vitis/client/javascript/externs/moment/locale/gl.js b/client/javascript/externs/moment/locale/gl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/gl.js rename to client/javascript/externs/moment/locale/gl.js diff --git a/src/vitis/client/javascript/externs/moment/locale/he.js b/client/javascript/externs/moment/locale/he.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/he.js rename to client/javascript/externs/moment/locale/he.js diff --git a/src/vitis/client/javascript/externs/moment/locale/hi.js b/client/javascript/externs/moment/locale/hi.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/hi.js rename to client/javascript/externs/moment/locale/hi.js diff --git a/src/vitis/client/javascript/externs/moment/locale/hr.js b/client/javascript/externs/moment/locale/hr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/hr.js rename to client/javascript/externs/moment/locale/hr.js diff --git a/src/vitis/client/javascript/externs/moment/locale/hu.js b/client/javascript/externs/moment/locale/hu.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/hu.js rename to client/javascript/externs/moment/locale/hu.js diff --git a/src/vitis/client/javascript/externs/moment/locale/hy-am.js b/client/javascript/externs/moment/locale/hy-am.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/hy-am.js rename to client/javascript/externs/moment/locale/hy-am.js diff --git a/src/vitis/client/javascript/externs/moment/locale/id.js b/client/javascript/externs/moment/locale/id.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/id.js rename to client/javascript/externs/moment/locale/id.js diff --git a/src/vitis/client/javascript/externs/moment/locale/is.js b/client/javascript/externs/moment/locale/is.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/is.js rename to client/javascript/externs/moment/locale/is.js diff --git a/src/vitis/client/javascript/externs/moment/locale/it.js b/client/javascript/externs/moment/locale/it.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/it.js rename to client/javascript/externs/moment/locale/it.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ja.js b/client/javascript/externs/moment/locale/ja.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ja.js rename to client/javascript/externs/moment/locale/ja.js diff --git a/src/vitis/client/javascript/externs/moment/locale/jv.js b/client/javascript/externs/moment/locale/jv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/jv.js rename to client/javascript/externs/moment/locale/jv.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ka.js b/client/javascript/externs/moment/locale/ka.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ka.js rename to client/javascript/externs/moment/locale/ka.js diff --git a/src/vitis/client/javascript/externs/moment/locale/kk.js b/client/javascript/externs/moment/locale/kk.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/kk.js rename to client/javascript/externs/moment/locale/kk.js diff --git a/src/vitis/client/javascript/externs/moment/locale/km.js b/client/javascript/externs/moment/locale/km.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/km.js rename to client/javascript/externs/moment/locale/km.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ko.js b/client/javascript/externs/moment/locale/ko.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ko.js rename to client/javascript/externs/moment/locale/ko.js diff --git a/src/vitis/client/javascript/externs/moment/locale/lb.js b/client/javascript/externs/moment/locale/lb.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/lb.js rename to client/javascript/externs/moment/locale/lb.js diff --git a/src/vitis/client/javascript/externs/moment/locale/lo.js b/client/javascript/externs/moment/locale/lo.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/lo.js rename to client/javascript/externs/moment/locale/lo.js diff --git a/src/vitis/client/javascript/externs/moment/locale/lt.js b/client/javascript/externs/moment/locale/lt.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/lt.js rename to client/javascript/externs/moment/locale/lt.js diff --git a/src/vitis/client/javascript/externs/moment/locale/lv.js b/client/javascript/externs/moment/locale/lv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/lv.js rename to client/javascript/externs/moment/locale/lv.js diff --git a/src/vitis/client/javascript/externs/moment/locale/me.js b/client/javascript/externs/moment/locale/me.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/me.js rename to client/javascript/externs/moment/locale/me.js diff --git a/src/vitis/client/javascript/externs/moment/locale/mk.js b/client/javascript/externs/moment/locale/mk.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/mk.js rename to client/javascript/externs/moment/locale/mk.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ml.js b/client/javascript/externs/moment/locale/ml.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ml.js rename to client/javascript/externs/moment/locale/ml.js diff --git a/src/vitis/client/javascript/externs/moment/locale/mr.js b/client/javascript/externs/moment/locale/mr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/mr.js rename to client/javascript/externs/moment/locale/mr.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ms-my.js b/client/javascript/externs/moment/locale/ms-my.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ms-my.js rename to client/javascript/externs/moment/locale/ms-my.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ms.js b/client/javascript/externs/moment/locale/ms.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ms.js rename to client/javascript/externs/moment/locale/ms.js diff --git a/src/vitis/client/javascript/externs/moment/locale/my.js b/client/javascript/externs/moment/locale/my.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/my.js rename to client/javascript/externs/moment/locale/my.js diff --git a/src/vitis/client/javascript/externs/moment/locale/nb.js b/client/javascript/externs/moment/locale/nb.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/nb.js rename to client/javascript/externs/moment/locale/nb.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ne.js b/client/javascript/externs/moment/locale/ne.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ne.js rename to client/javascript/externs/moment/locale/ne.js diff --git a/src/vitis/client/javascript/externs/moment/locale/nl.js b/client/javascript/externs/moment/locale/nl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/nl.js rename to client/javascript/externs/moment/locale/nl.js diff --git a/src/vitis/client/javascript/externs/moment/locale/nn.js b/client/javascript/externs/moment/locale/nn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/nn.js rename to client/javascript/externs/moment/locale/nn.js diff --git a/src/vitis/client/javascript/externs/moment/locale/pl.js b/client/javascript/externs/moment/locale/pl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/pl.js rename to client/javascript/externs/moment/locale/pl.js diff --git a/src/vitis/client/javascript/externs/moment/locale/pt-br.js b/client/javascript/externs/moment/locale/pt-br.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/pt-br.js rename to client/javascript/externs/moment/locale/pt-br.js diff --git a/src/vitis/client/javascript/externs/moment/locale/pt.js b/client/javascript/externs/moment/locale/pt.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/pt.js rename to client/javascript/externs/moment/locale/pt.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ro.js b/client/javascript/externs/moment/locale/ro.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ro.js rename to client/javascript/externs/moment/locale/ro.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ru.js b/client/javascript/externs/moment/locale/ru.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ru.js rename to client/javascript/externs/moment/locale/ru.js diff --git a/src/vitis/client/javascript/externs/moment/locale/se.js b/client/javascript/externs/moment/locale/se.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/se.js rename to client/javascript/externs/moment/locale/se.js diff --git a/src/vitis/client/javascript/externs/moment/locale/si.js b/client/javascript/externs/moment/locale/si.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/si.js rename to client/javascript/externs/moment/locale/si.js diff --git a/src/vitis/client/javascript/externs/moment/locale/sk.js b/client/javascript/externs/moment/locale/sk.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/sk.js rename to client/javascript/externs/moment/locale/sk.js diff --git a/src/vitis/client/javascript/externs/moment/locale/sl.js b/client/javascript/externs/moment/locale/sl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/sl.js rename to client/javascript/externs/moment/locale/sl.js diff --git a/src/vitis/client/javascript/externs/moment/locale/sq.js b/client/javascript/externs/moment/locale/sq.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/sq.js rename to client/javascript/externs/moment/locale/sq.js diff --git a/src/vitis/client/javascript/externs/moment/locale/sr-cyrl.js b/client/javascript/externs/moment/locale/sr-cyrl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/sr-cyrl.js rename to client/javascript/externs/moment/locale/sr-cyrl.js diff --git a/src/vitis/client/javascript/externs/moment/locale/sr.js b/client/javascript/externs/moment/locale/sr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/sr.js rename to client/javascript/externs/moment/locale/sr.js diff --git a/src/vitis/client/javascript/externs/moment/locale/sv.js b/client/javascript/externs/moment/locale/sv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/sv.js rename to client/javascript/externs/moment/locale/sv.js diff --git a/src/vitis/client/javascript/externs/moment/locale/sw.js b/client/javascript/externs/moment/locale/sw.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/sw.js rename to client/javascript/externs/moment/locale/sw.js diff --git a/src/vitis/client/javascript/externs/moment/locale/ta.js b/client/javascript/externs/moment/locale/ta.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/ta.js rename to client/javascript/externs/moment/locale/ta.js diff --git a/src/vitis/client/javascript/externs/moment/locale/te.js b/client/javascript/externs/moment/locale/te.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/te.js rename to client/javascript/externs/moment/locale/te.js diff --git a/src/vitis/client/javascript/externs/moment/locale/th.js b/client/javascript/externs/moment/locale/th.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/th.js rename to client/javascript/externs/moment/locale/th.js diff --git a/src/vitis/client/javascript/externs/moment/locale/tl-ph.js b/client/javascript/externs/moment/locale/tl-ph.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/tl-ph.js rename to client/javascript/externs/moment/locale/tl-ph.js diff --git a/src/vitis/client/javascript/externs/moment/locale/tlh.js b/client/javascript/externs/moment/locale/tlh.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/tlh.js rename to client/javascript/externs/moment/locale/tlh.js diff --git a/src/vitis/client/javascript/externs/moment/locale/tr.js b/client/javascript/externs/moment/locale/tr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/tr.js rename to client/javascript/externs/moment/locale/tr.js diff --git a/src/vitis/client/javascript/externs/moment/locale/tzl.js b/client/javascript/externs/moment/locale/tzl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/tzl.js rename to client/javascript/externs/moment/locale/tzl.js diff --git a/src/vitis/client/javascript/externs/moment/locale/tzm-latn.js b/client/javascript/externs/moment/locale/tzm-latn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/tzm-latn.js rename to client/javascript/externs/moment/locale/tzm-latn.js diff --git a/src/vitis/client/javascript/externs/moment/locale/tzm.js b/client/javascript/externs/moment/locale/tzm.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/tzm.js rename to client/javascript/externs/moment/locale/tzm.js diff --git a/src/vitis/client/javascript/externs/moment/locale/uk.js b/client/javascript/externs/moment/locale/uk.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/uk.js rename to client/javascript/externs/moment/locale/uk.js diff --git a/src/vitis/client/javascript/externs/moment/locale/uz.js b/client/javascript/externs/moment/locale/uz.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/uz.js rename to client/javascript/externs/moment/locale/uz.js diff --git a/src/vitis/client/javascript/externs/moment/locale/vi.js b/client/javascript/externs/moment/locale/vi.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/vi.js rename to client/javascript/externs/moment/locale/vi.js diff --git a/src/vitis/client/javascript/externs/moment/locale/zh-cn.js b/client/javascript/externs/moment/locale/zh-cn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/zh-cn.js rename to client/javascript/externs/moment/locale/zh-cn.js diff --git a/src/vitis/client/javascript/externs/moment/locale/zh-tw.js b/client/javascript/externs/moment/locale/zh-tw.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/locale/zh-tw.js rename to client/javascript/externs/moment/locale/zh-tw.js diff --git a/src/vitis/client/javascript/externs/moment/min/locales.js b/client/javascript/externs/moment/min/locales.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/min/locales.js rename to client/javascript/externs/moment/min/locales.js diff --git a/src/vitis/client/javascript/externs/moment/min/locales.min.js b/client/javascript/externs/moment/min/locales.min.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/min/locales.min.js rename to client/javascript/externs/moment/min/locales.min.js diff --git a/src/vitis/client/javascript/externs/moment/min/moment-with-locales.js b/client/javascript/externs/moment/min/moment-with-locales.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/min/moment-with-locales.js rename to client/javascript/externs/moment/min/moment-with-locales.js diff --git a/src/vitis/client/javascript/externs/moment/min/moment-with-locales.min.js b/client/javascript/externs/moment/min/moment-with-locales.min.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/min/moment-with-locales.min.js rename to client/javascript/externs/moment/min/moment-with-locales.min.js diff --git a/src/vitis/client/javascript/externs/moment/min/moment.min.js b/client/javascript/externs/moment/min/moment.min.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/min/moment.min.js rename to client/javascript/externs/moment/min/moment.min.js diff --git a/src/vitis/client/javascript/externs/moment/min/tests.js b/client/javascript/externs/moment/min/tests.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/min/tests.js rename to client/javascript/externs/moment/min/tests.js diff --git a/src/vitis/client/javascript/externs/moment/moment.min.js b/client/javascript/externs/moment/moment.min.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/moment.min.js rename to client/javascript/externs/moment/moment.min.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/check-overflow.js b/client/javascript/externs/moment/src/lib/create/check-overflow.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/check-overflow.js rename to client/javascript/externs/moment/src/lib/create/check-overflow.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/date-from-array.js b/client/javascript/externs/moment/src/lib/create/date-from-array.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/date-from-array.js rename to client/javascript/externs/moment/src/lib/create/date-from-array.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/from-anything.js b/client/javascript/externs/moment/src/lib/create/from-anything.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/from-anything.js rename to client/javascript/externs/moment/src/lib/create/from-anything.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/from-array.js b/client/javascript/externs/moment/src/lib/create/from-array.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/from-array.js rename to client/javascript/externs/moment/src/lib/create/from-array.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/from-object.js b/client/javascript/externs/moment/src/lib/create/from-object.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/from-object.js rename to client/javascript/externs/moment/src/lib/create/from-object.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/from-string-and-array.js b/client/javascript/externs/moment/src/lib/create/from-string-and-array.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/from-string-and-array.js rename to client/javascript/externs/moment/src/lib/create/from-string-and-array.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/from-string-and-format.js b/client/javascript/externs/moment/src/lib/create/from-string-and-format.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/from-string-and-format.js rename to client/javascript/externs/moment/src/lib/create/from-string-and-format.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/from-string.js b/client/javascript/externs/moment/src/lib/create/from-string.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/from-string.js rename to client/javascript/externs/moment/src/lib/create/from-string.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/local.js b/client/javascript/externs/moment/src/lib/create/local.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/local.js rename to client/javascript/externs/moment/src/lib/create/local.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/parsing-flags.js b/client/javascript/externs/moment/src/lib/create/parsing-flags.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/parsing-flags.js rename to client/javascript/externs/moment/src/lib/create/parsing-flags.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/utc.js b/client/javascript/externs/moment/src/lib/create/utc.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/utc.js rename to client/javascript/externs/moment/src/lib/create/utc.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/create/valid.js b/client/javascript/externs/moment/src/lib/create/valid.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/create/valid.js rename to client/javascript/externs/moment/src/lib/create/valid.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/abs.js b/client/javascript/externs/moment/src/lib/duration/abs.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/abs.js rename to client/javascript/externs/moment/src/lib/duration/abs.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/add-subtract.js b/client/javascript/externs/moment/src/lib/duration/add-subtract.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/add-subtract.js rename to client/javascript/externs/moment/src/lib/duration/add-subtract.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/as.js b/client/javascript/externs/moment/src/lib/duration/as.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/as.js rename to client/javascript/externs/moment/src/lib/duration/as.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/bubble.js b/client/javascript/externs/moment/src/lib/duration/bubble.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/bubble.js rename to client/javascript/externs/moment/src/lib/duration/bubble.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/constructor.js b/client/javascript/externs/moment/src/lib/duration/constructor.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/constructor.js rename to client/javascript/externs/moment/src/lib/duration/constructor.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/create.js b/client/javascript/externs/moment/src/lib/duration/create.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/create.js rename to client/javascript/externs/moment/src/lib/duration/create.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/duration.js b/client/javascript/externs/moment/src/lib/duration/duration.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/duration.js rename to client/javascript/externs/moment/src/lib/duration/duration.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/get.js b/client/javascript/externs/moment/src/lib/duration/get.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/get.js rename to client/javascript/externs/moment/src/lib/duration/get.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/humanize.js b/client/javascript/externs/moment/src/lib/duration/humanize.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/humanize.js rename to client/javascript/externs/moment/src/lib/duration/humanize.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/iso-string.js b/client/javascript/externs/moment/src/lib/duration/iso-string.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/iso-string.js rename to client/javascript/externs/moment/src/lib/duration/iso-string.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/duration/prototype.js b/client/javascript/externs/moment/src/lib/duration/prototype.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/duration/prototype.js rename to client/javascript/externs/moment/src/lib/duration/prototype.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/format/format.js b/client/javascript/externs/moment/src/lib/format/format.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/format/format.js rename to client/javascript/externs/moment/src/lib/format/format.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/calendar.js b/client/javascript/externs/moment/src/lib/locale/calendar.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/calendar.js rename to client/javascript/externs/moment/src/lib/locale/calendar.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/constructor.js b/client/javascript/externs/moment/src/lib/locale/constructor.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/constructor.js rename to client/javascript/externs/moment/src/lib/locale/constructor.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/en.js b/client/javascript/externs/moment/src/lib/locale/en.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/en.js rename to client/javascript/externs/moment/src/lib/locale/en.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/formats.js b/client/javascript/externs/moment/src/lib/locale/formats.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/formats.js rename to client/javascript/externs/moment/src/lib/locale/formats.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/invalid.js b/client/javascript/externs/moment/src/lib/locale/invalid.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/invalid.js rename to client/javascript/externs/moment/src/lib/locale/invalid.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/lists.js b/client/javascript/externs/moment/src/lib/locale/lists.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/lists.js rename to client/javascript/externs/moment/src/lib/locale/lists.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/locale.js b/client/javascript/externs/moment/src/lib/locale/locale.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/locale.js rename to client/javascript/externs/moment/src/lib/locale/locale.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/locales.js b/client/javascript/externs/moment/src/lib/locale/locales.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/locales.js rename to client/javascript/externs/moment/src/lib/locale/locales.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/ordinal.js b/client/javascript/externs/moment/src/lib/locale/ordinal.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/ordinal.js rename to client/javascript/externs/moment/src/lib/locale/ordinal.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/pre-post-format.js b/client/javascript/externs/moment/src/lib/locale/pre-post-format.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/pre-post-format.js rename to client/javascript/externs/moment/src/lib/locale/pre-post-format.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/prototype.js b/client/javascript/externs/moment/src/lib/locale/prototype.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/prototype.js rename to client/javascript/externs/moment/src/lib/locale/prototype.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/relative.js b/client/javascript/externs/moment/src/lib/locale/relative.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/relative.js rename to client/javascript/externs/moment/src/lib/locale/relative.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/locale/set.js b/client/javascript/externs/moment/src/lib/locale/set.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/locale/set.js rename to client/javascript/externs/moment/src/lib/locale/set.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/add-subtract.js b/client/javascript/externs/moment/src/lib/moment/add-subtract.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/add-subtract.js rename to client/javascript/externs/moment/src/lib/moment/add-subtract.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/calendar.js b/client/javascript/externs/moment/src/lib/moment/calendar.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/calendar.js rename to client/javascript/externs/moment/src/lib/moment/calendar.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/clone.js b/client/javascript/externs/moment/src/lib/moment/clone.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/clone.js rename to client/javascript/externs/moment/src/lib/moment/clone.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/compare.js b/client/javascript/externs/moment/src/lib/moment/compare.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/compare.js rename to client/javascript/externs/moment/src/lib/moment/compare.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/constructor.js b/client/javascript/externs/moment/src/lib/moment/constructor.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/constructor.js rename to client/javascript/externs/moment/src/lib/moment/constructor.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/creation-data.js b/client/javascript/externs/moment/src/lib/moment/creation-data.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/creation-data.js rename to client/javascript/externs/moment/src/lib/moment/creation-data.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/diff.js b/client/javascript/externs/moment/src/lib/moment/diff.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/diff.js rename to client/javascript/externs/moment/src/lib/moment/diff.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/format.js b/client/javascript/externs/moment/src/lib/moment/format.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/format.js rename to client/javascript/externs/moment/src/lib/moment/format.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/from.js b/client/javascript/externs/moment/src/lib/moment/from.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/from.js rename to client/javascript/externs/moment/src/lib/moment/from.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/get-set.js b/client/javascript/externs/moment/src/lib/moment/get-set.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/get-set.js rename to client/javascript/externs/moment/src/lib/moment/get-set.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/locale.js b/client/javascript/externs/moment/src/lib/moment/locale.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/locale.js rename to client/javascript/externs/moment/src/lib/moment/locale.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/min-max.js b/client/javascript/externs/moment/src/lib/moment/min-max.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/min-max.js rename to client/javascript/externs/moment/src/lib/moment/min-max.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/moment.js b/client/javascript/externs/moment/src/lib/moment/moment.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/moment.js rename to client/javascript/externs/moment/src/lib/moment/moment.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/now.js b/client/javascript/externs/moment/src/lib/moment/now.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/now.js rename to client/javascript/externs/moment/src/lib/moment/now.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/prototype.js b/client/javascript/externs/moment/src/lib/moment/prototype.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/prototype.js rename to client/javascript/externs/moment/src/lib/moment/prototype.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/start-end-of.js b/client/javascript/externs/moment/src/lib/moment/start-end-of.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/start-end-of.js rename to client/javascript/externs/moment/src/lib/moment/start-end-of.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/to-type.js b/client/javascript/externs/moment/src/lib/moment/to-type.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/to-type.js rename to client/javascript/externs/moment/src/lib/moment/to-type.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/to.js b/client/javascript/externs/moment/src/lib/moment/to.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/to.js rename to client/javascript/externs/moment/src/lib/moment/to.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/moment/valid.js b/client/javascript/externs/moment/src/lib/moment/valid.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/moment/valid.js rename to client/javascript/externs/moment/src/lib/moment/valid.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/parse/regex.js b/client/javascript/externs/moment/src/lib/parse/regex.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/parse/regex.js rename to client/javascript/externs/moment/src/lib/parse/regex.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/parse/token.js b/client/javascript/externs/moment/src/lib/parse/token.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/parse/token.js rename to client/javascript/externs/moment/src/lib/parse/token.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/aliases.js b/client/javascript/externs/moment/src/lib/units/aliases.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/aliases.js rename to client/javascript/externs/moment/src/lib/units/aliases.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/constants.js b/client/javascript/externs/moment/src/lib/units/constants.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/constants.js rename to client/javascript/externs/moment/src/lib/units/constants.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/day-of-month.js b/client/javascript/externs/moment/src/lib/units/day-of-month.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/day-of-month.js rename to client/javascript/externs/moment/src/lib/units/day-of-month.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/day-of-week.js b/client/javascript/externs/moment/src/lib/units/day-of-week.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/day-of-week.js rename to client/javascript/externs/moment/src/lib/units/day-of-week.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/day-of-year.js b/client/javascript/externs/moment/src/lib/units/day-of-year.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/day-of-year.js rename to client/javascript/externs/moment/src/lib/units/day-of-year.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/hour.js b/client/javascript/externs/moment/src/lib/units/hour.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/hour.js rename to client/javascript/externs/moment/src/lib/units/hour.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/millisecond.js b/client/javascript/externs/moment/src/lib/units/millisecond.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/millisecond.js rename to client/javascript/externs/moment/src/lib/units/millisecond.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/minute.js b/client/javascript/externs/moment/src/lib/units/minute.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/minute.js rename to client/javascript/externs/moment/src/lib/units/minute.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/month.js b/client/javascript/externs/moment/src/lib/units/month.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/month.js rename to client/javascript/externs/moment/src/lib/units/month.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/offset.js b/client/javascript/externs/moment/src/lib/units/offset.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/offset.js rename to client/javascript/externs/moment/src/lib/units/offset.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/quarter.js b/client/javascript/externs/moment/src/lib/units/quarter.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/quarter.js rename to client/javascript/externs/moment/src/lib/units/quarter.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/second.js b/client/javascript/externs/moment/src/lib/units/second.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/second.js rename to client/javascript/externs/moment/src/lib/units/second.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/timestamp.js b/client/javascript/externs/moment/src/lib/units/timestamp.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/timestamp.js rename to client/javascript/externs/moment/src/lib/units/timestamp.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/timezone.js b/client/javascript/externs/moment/src/lib/units/timezone.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/timezone.js rename to client/javascript/externs/moment/src/lib/units/timezone.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/units.js b/client/javascript/externs/moment/src/lib/units/units.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/units.js rename to client/javascript/externs/moment/src/lib/units/units.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/week-calendar-utils.js b/client/javascript/externs/moment/src/lib/units/week-calendar-utils.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/week-calendar-utils.js rename to client/javascript/externs/moment/src/lib/units/week-calendar-utils.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/week-year.js b/client/javascript/externs/moment/src/lib/units/week-year.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/week-year.js rename to client/javascript/externs/moment/src/lib/units/week-year.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/week.js b/client/javascript/externs/moment/src/lib/units/week.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/week.js rename to client/javascript/externs/moment/src/lib/units/week.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/units/year.js b/client/javascript/externs/moment/src/lib/units/year.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/units/year.js rename to client/javascript/externs/moment/src/lib/units/year.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/abs-ceil.js b/client/javascript/externs/moment/src/lib/utils/abs-ceil.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/abs-ceil.js rename to client/javascript/externs/moment/src/lib/utils/abs-ceil.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/abs-floor.js b/client/javascript/externs/moment/src/lib/utils/abs-floor.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/abs-floor.js rename to client/javascript/externs/moment/src/lib/utils/abs-floor.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/compare-arrays.js b/client/javascript/externs/moment/src/lib/utils/compare-arrays.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/compare-arrays.js rename to client/javascript/externs/moment/src/lib/utils/compare-arrays.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/defaults.js b/client/javascript/externs/moment/src/lib/utils/defaults.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/defaults.js rename to client/javascript/externs/moment/src/lib/utils/defaults.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/deprecate.js b/client/javascript/externs/moment/src/lib/utils/deprecate.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/deprecate.js rename to client/javascript/externs/moment/src/lib/utils/deprecate.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/extend.js b/client/javascript/externs/moment/src/lib/utils/extend.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/extend.js rename to client/javascript/externs/moment/src/lib/utils/extend.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/has-own-prop.js b/client/javascript/externs/moment/src/lib/utils/has-own-prop.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/has-own-prop.js rename to client/javascript/externs/moment/src/lib/utils/has-own-prop.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/hooks.js b/client/javascript/externs/moment/src/lib/utils/hooks.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/hooks.js rename to client/javascript/externs/moment/src/lib/utils/hooks.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/is-array.js b/client/javascript/externs/moment/src/lib/utils/is-array.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/is-array.js rename to client/javascript/externs/moment/src/lib/utils/is-array.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/is-date.js b/client/javascript/externs/moment/src/lib/utils/is-date.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/is-date.js rename to client/javascript/externs/moment/src/lib/utils/is-date.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/is-function.js b/client/javascript/externs/moment/src/lib/utils/is-function.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/is-function.js rename to client/javascript/externs/moment/src/lib/utils/is-function.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/is-undefined.js b/client/javascript/externs/moment/src/lib/utils/is-undefined.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/is-undefined.js rename to client/javascript/externs/moment/src/lib/utils/is-undefined.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/map.js b/client/javascript/externs/moment/src/lib/utils/map.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/map.js rename to client/javascript/externs/moment/src/lib/utils/map.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/to-int.js b/client/javascript/externs/moment/src/lib/utils/to-int.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/to-int.js rename to client/javascript/externs/moment/src/lib/utils/to-int.js diff --git a/src/vitis/client/javascript/externs/moment/src/lib/utils/zero-fill.js b/client/javascript/externs/moment/src/lib/utils/zero-fill.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/lib/utils/zero-fill.js rename to client/javascript/externs/moment/src/lib/utils/zero-fill.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/af.js b/client/javascript/externs/moment/src/locale/af.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/af.js rename to client/javascript/externs/moment/src/locale/af.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ar-ma.js b/client/javascript/externs/moment/src/locale/ar-ma.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ar-ma.js rename to client/javascript/externs/moment/src/locale/ar-ma.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ar-sa.js b/client/javascript/externs/moment/src/locale/ar-sa.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ar-sa.js rename to client/javascript/externs/moment/src/locale/ar-sa.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ar-tn.js b/client/javascript/externs/moment/src/locale/ar-tn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ar-tn.js rename to client/javascript/externs/moment/src/locale/ar-tn.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ar.js b/client/javascript/externs/moment/src/locale/ar.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ar.js rename to client/javascript/externs/moment/src/locale/ar.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/az.js b/client/javascript/externs/moment/src/locale/az.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/az.js rename to client/javascript/externs/moment/src/locale/az.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/be.js b/client/javascript/externs/moment/src/locale/be.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/be.js rename to client/javascript/externs/moment/src/locale/be.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/bg.js b/client/javascript/externs/moment/src/locale/bg.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/bg.js rename to client/javascript/externs/moment/src/locale/bg.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/bn.js b/client/javascript/externs/moment/src/locale/bn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/bn.js rename to client/javascript/externs/moment/src/locale/bn.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/bo.js b/client/javascript/externs/moment/src/locale/bo.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/bo.js rename to client/javascript/externs/moment/src/locale/bo.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/br.js b/client/javascript/externs/moment/src/locale/br.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/br.js rename to client/javascript/externs/moment/src/locale/br.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/bs.js b/client/javascript/externs/moment/src/locale/bs.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/bs.js rename to client/javascript/externs/moment/src/locale/bs.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ca.js b/client/javascript/externs/moment/src/locale/ca.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ca.js rename to client/javascript/externs/moment/src/locale/ca.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/cs.js b/client/javascript/externs/moment/src/locale/cs.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/cs.js rename to client/javascript/externs/moment/src/locale/cs.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/cv.js b/client/javascript/externs/moment/src/locale/cv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/cv.js rename to client/javascript/externs/moment/src/locale/cv.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/cy.js b/client/javascript/externs/moment/src/locale/cy.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/cy.js rename to client/javascript/externs/moment/src/locale/cy.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/da.js b/client/javascript/externs/moment/src/locale/da.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/da.js rename to client/javascript/externs/moment/src/locale/da.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/de-at.js b/client/javascript/externs/moment/src/locale/de-at.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/de-at.js rename to client/javascript/externs/moment/src/locale/de-at.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/de.js b/client/javascript/externs/moment/src/locale/de.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/de.js rename to client/javascript/externs/moment/src/locale/de.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/dv.js b/client/javascript/externs/moment/src/locale/dv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/dv.js rename to client/javascript/externs/moment/src/locale/dv.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/el.js b/client/javascript/externs/moment/src/locale/el.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/el.js rename to client/javascript/externs/moment/src/locale/el.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/en-au.js b/client/javascript/externs/moment/src/locale/en-au.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/en-au.js rename to client/javascript/externs/moment/src/locale/en-au.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/en-ca.js b/client/javascript/externs/moment/src/locale/en-ca.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/en-ca.js rename to client/javascript/externs/moment/src/locale/en-ca.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/en-gb.js b/client/javascript/externs/moment/src/locale/en-gb.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/en-gb.js rename to client/javascript/externs/moment/src/locale/en-gb.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/en-ie.js b/client/javascript/externs/moment/src/locale/en-ie.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/en-ie.js rename to client/javascript/externs/moment/src/locale/en-ie.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/en-nz.js b/client/javascript/externs/moment/src/locale/en-nz.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/en-nz.js rename to client/javascript/externs/moment/src/locale/en-nz.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/eo.js b/client/javascript/externs/moment/src/locale/eo.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/eo.js rename to client/javascript/externs/moment/src/locale/eo.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/es.js b/client/javascript/externs/moment/src/locale/es.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/es.js rename to client/javascript/externs/moment/src/locale/es.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/et.js b/client/javascript/externs/moment/src/locale/et.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/et.js rename to client/javascript/externs/moment/src/locale/et.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/eu.js b/client/javascript/externs/moment/src/locale/eu.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/eu.js rename to client/javascript/externs/moment/src/locale/eu.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/fa.js b/client/javascript/externs/moment/src/locale/fa.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/fa.js rename to client/javascript/externs/moment/src/locale/fa.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/fi.js b/client/javascript/externs/moment/src/locale/fi.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/fi.js rename to client/javascript/externs/moment/src/locale/fi.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/fo.js b/client/javascript/externs/moment/src/locale/fo.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/fo.js rename to client/javascript/externs/moment/src/locale/fo.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/fr-ca.js b/client/javascript/externs/moment/src/locale/fr-ca.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/fr-ca.js rename to client/javascript/externs/moment/src/locale/fr-ca.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/fr-ch.js b/client/javascript/externs/moment/src/locale/fr-ch.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/fr-ch.js rename to client/javascript/externs/moment/src/locale/fr-ch.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/fr.js b/client/javascript/externs/moment/src/locale/fr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/fr.js rename to client/javascript/externs/moment/src/locale/fr.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/fy.js b/client/javascript/externs/moment/src/locale/fy.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/fy.js rename to client/javascript/externs/moment/src/locale/fy.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/gd.js b/client/javascript/externs/moment/src/locale/gd.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/gd.js rename to client/javascript/externs/moment/src/locale/gd.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/gl.js b/client/javascript/externs/moment/src/locale/gl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/gl.js rename to client/javascript/externs/moment/src/locale/gl.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/he.js b/client/javascript/externs/moment/src/locale/he.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/he.js rename to client/javascript/externs/moment/src/locale/he.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/hi.js b/client/javascript/externs/moment/src/locale/hi.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/hi.js rename to client/javascript/externs/moment/src/locale/hi.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/hr.js b/client/javascript/externs/moment/src/locale/hr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/hr.js rename to client/javascript/externs/moment/src/locale/hr.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/hu.js b/client/javascript/externs/moment/src/locale/hu.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/hu.js rename to client/javascript/externs/moment/src/locale/hu.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/hy-am.js b/client/javascript/externs/moment/src/locale/hy-am.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/hy-am.js rename to client/javascript/externs/moment/src/locale/hy-am.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/id.js b/client/javascript/externs/moment/src/locale/id.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/id.js rename to client/javascript/externs/moment/src/locale/id.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/is.js b/client/javascript/externs/moment/src/locale/is.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/is.js rename to client/javascript/externs/moment/src/locale/is.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/it.js b/client/javascript/externs/moment/src/locale/it.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/it.js rename to client/javascript/externs/moment/src/locale/it.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ja.js b/client/javascript/externs/moment/src/locale/ja.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ja.js rename to client/javascript/externs/moment/src/locale/ja.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/jv.js b/client/javascript/externs/moment/src/locale/jv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/jv.js rename to client/javascript/externs/moment/src/locale/jv.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ka.js b/client/javascript/externs/moment/src/locale/ka.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ka.js rename to client/javascript/externs/moment/src/locale/ka.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/kk.js b/client/javascript/externs/moment/src/locale/kk.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/kk.js rename to client/javascript/externs/moment/src/locale/kk.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/km.js b/client/javascript/externs/moment/src/locale/km.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/km.js rename to client/javascript/externs/moment/src/locale/km.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ko.js b/client/javascript/externs/moment/src/locale/ko.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ko.js rename to client/javascript/externs/moment/src/locale/ko.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/lb.js b/client/javascript/externs/moment/src/locale/lb.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/lb.js rename to client/javascript/externs/moment/src/locale/lb.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/lo.js b/client/javascript/externs/moment/src/locale/lo.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/lo.js rename to client/javascript/externs/moment/src/locale/lo.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/lt.js b/client/javascript/externs/moment/src/locale/lt.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/lt.js rename to client/javascript/externs/moment/src/locale/lt.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/lv.js b/client/javascript/externs/moment/src/locale/lv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/lv.js rename to client/javascript/externs/moment/src/locale/lv.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/me.js b/client/javascript/externs/moment/src/locale/me.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/me.js rename to client/javascript/externs/moment/src/locale/me.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/mk.js b/client/javascript/externs/moment/src/locale/mk.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/mk.js rename to client/javascript/externs/moment/src/locale/mk.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ml.js b/client/javascript/externs/moment/src/locale/ml.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ml.js rename to client/javascript/externs/moment/src/locale/ml.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/mr.js b/client/javascript/externs/moment/src/locale/mr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/mr.js rename to client/javascript/externs/moment/src/locale/mr.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ms-my.js b/client/javascript/externs/moment/src/locale/ms-my.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ms-my.js rename to client/javascript/externs/moment/src/locale/ms-my.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ms.js b/client/javascript/externs/moment/src/locale/ms.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ms.js rename to client/javascript/externs/moment/src/locale/ms.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/my.js b/client/javascript/externs/moment/src/locale/my.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/my.js rename to client/javascript/externs/moment/src/locale/my.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/nb.js b/client/javascript/externs/moment/src/locale/nb.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/nb.js rename to client/javascript/externs/moment/src/locale/nb.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ne.js b/client/javascript/externs/moment/src/locale/ne.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ne.js rename to client/javascript/externs/moment/src/locale/ne.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/nl.js b/client/javascript/externs/moment/src/locale/nl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/nl.js rename to client/javascript/externs/moment/src/locale/nl.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/nn.js b/client/javascript/externs/moment/src/locale/nn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/nn.js rename to client/javascript/externs/moment/src/locale/nn.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/pl.js b/client/javascript/externs/moment/src/locale/pl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/pl.js rename to client/javascript/externs/moment/src/locale/pl.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/pt-br.js b/client/javascript/externs/moment/src/locale/pt-br.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/pt-br.js rename to client/javascript/externs/moment/src/locale/pt-br.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/pt.js b/client/javascript/externs/moment/src/locale/pt.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/pt.js rename to client/javascript/externs/moment/src/locale/pt.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ro.js b/client/javascript/externs/moment/src/locale/ro.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ro.js rename to client/javascript/externs/moment/src/locale/ro.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ru.js b/client/javascript/externs/moment/src/locale/ru.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ru.js rename to client/javascript/externs/moment/src/locale/ru.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/se.js b/client/javascript/externs/moment/src/locale/se.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/se.js rename to client/javascript/externs/moment/src/locale/se.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/si.js b/client/javascript/externs/moment/src/locale/si.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/si.js rename to client/javascript/externs/moment/src/locale/si.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/sk.js b/client/javascript/externs/moment/src/locale/sk.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/sk.js rename to client/javascript/externs/moment/src/locale/sk.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/sl.js b/client/javascript/externs/moment/src/locale/sl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/sl.js rename to client/javascript/externs/moment/src/locale/sl.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/sq.js b/client/javascript/externs/moment/src/locale/sq.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/sq.js rename to client/javascript/externs/moment/src/locale/sq.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/sr-cyrl.js b/client/javascript/externs/moment/src/locale/sr-cyrl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/sr-cyrl.js rename to client/javascript/externs/moment/src/locale/sr-cyrl.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/sr.js b/client/javascript/externs/moment/src/locale/sr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/sr.js rename to client/javascript/externs/moment/src/locale/sr.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/sv.js b/client/javascript/externs/moment/src/locale/sv.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/sv.js rename to client/javascript/externs/moment/src/locale/sv.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/sw.js b/client/javascript/externs/moment/src/locale/sw.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/sw.js rename to client/javascript/externs/moment/src/locale/sw.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/ta.js b/client/javascript/externs/moment/src/locale/ta.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/ta.js rename to client/javascript/externs/moment/src/locale/ta.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/te.js b/client/javascript/externs/moment/src/locale/te.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/te.js rename to client/javascript/externs/moment/src/locale/te.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/th.js b/client/javascript/externs/moment/src/locale/th.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/th.js rename to client/javascript/externs/moment/src/locale/th.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/tl-ph.js b/client/javascript/externs/moment/src/locale/tl-ph.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/tl-ph.js rename to client/javascript/externs/moment/src/locale/tl-ph.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/tlh.js b/client/javascript/externs/moment/src/locale/tlh.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/tlh.js rename to client/javascript/externs/moment/src/locale/tlh.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/tr.js b/client/javascript/externs/moment/src/locale/tr.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/tr.js rename to client/javascript/externs/moment/src/locale/tr.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/tzl.js b/client/javascript/externs/moment/src/locale/tzl.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/tzl.js rename to client/javascript/externs/moment/src/locale/tzl.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/tzm-latn.js b/client/javascript/externs/moment/src/locale/tzm-latn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/tzm-latn.js rename to client/javascript/externs/moment/src/locale/tzm-latn.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/tzm.js b/client/javascript/externs/moment/src/locale/tzm.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/tzm.js rename to client/javascript/externs/moment/src/locale/tzm.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/uk.js b/client/javascript/externs/moment/src/locale/uk.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/uk.js rename to client/javascript/externs/moment/src/locale/uk.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/uz.js b/client/javascript/externs/moment/src/locale/uz.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/uz.js rename to client/javascript/externs/moment/src/locale/uz.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/vi.js b/client/javascript/externs/moment/src/locale/vi.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/vi.js rename to client/javascript/externs/moment/src/locale/vi.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/zh-cn.js b/client/javascript/externs/moment/src/locale/zh-cn.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/zh-cn.js rename to client/javascript/externs/moment/src/locale/zh-cn.js diff --git a/src/vitis/client/javascript/externs/moment/src/locale/zh-tw.js b/client/javascript/externs/moment/src/locale/zh-tw.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/locale/zh-tw.js rename to client/javascript/externs/moment/src/locale/zh-tw.js diff --git a/src/vitis/client/javascript/externs/moment/src/moment.js b/client/javascript/externs/moment/src/moment.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/src/moment.js rename to client/javascript/externs/moment/src/moment.js diff --git a/src/vitis/client/javascript/externs/moment/templates/amd-named.js b/client/javascript/externs/moment/templates/amd-named.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/templates/amd-named.js rename to client/javascript/externs/moment/templates/amd-named.js diff --git a/src/vitis/client/javascript/externs/moment/templates/amd.js b/client/javascript/externs/moment/templates/amd.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/templates/amd.js rename to client/javascript/externs/moment/templates/amd.js diff --git a/src/vitis/client/javascript/externs/moment/templates/default.js b/client/javascript/externs/moment/templates/default.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/templates/default.js rename to client/javascript/externs/moment/templates/default.js diff --git a/src/vitis/client/javascript/externs/moment/templates/globals.js b/client/javascript/externs/moment/templates/globals.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/templates/globals.js rename to client/javascript/externs/moment/templates/globals.js diff --git a/src/vitis/client/javascript/externs/moment/templates/locale-header.js b/client/javascript/externs/moment/templates/locale-header.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/templates/locale-header.js rename to client/javascript/externs/moment/templates/locale-header.js diff --git a/src/vitis/client/javascript/externs/moment/templates/test-header.js b/client/javascript/externs/moment/templates/test-header.js similarity index 100% rename from src/vitis/client/javascript/externs/moment/templates/test-header.js rename to client/javascript/externs/moment/templates/test-header.js diff --git a/src/vitis/client/javascript/externs/openLayers/licenses/APACHE-2.0.txt b/client/javascript/externs/openLayers/licenses/APACHE-2.0.txt similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/licenses/APACHE-2.0.txt rename to client/javascript/externs/openLayers/licenses/APACHE-2.0.txt diff --git a/src/vitis/client/javascript/externs/openLayers/licenses/BSD-LICENSE.txt b/client/javascript/externs/openLayers/licenses/BSD-LICENSE.txt similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/licenses/BSD-LICENSE.txt rename to client/javascript/externs/openLayers/licenses/BSD-LICENSE.txt diff --git a/src/vitis/client/javascript/externs/openLayers/licenses/MIT-LICENSE.txt b/client/javascript/externs/openLayers/licenses/MIT-LICENSE.txt similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/licenses/MIT-LICENSE.txt rename to client/javascript/externs/openLayers/licenses/MIT-LICENSE.txt diff --git a/src/vitis/client/javascript/externs/openLayers/ol.ext/pbf.js b/client/javascript/externs/openLayers/ol.ext/pbf.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol.ext/pbf.js rename to client/javascript/externs/openLayers/ol.ext/pbf.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol.ext/pixelworks.js b/client/javascript/externs/openLayers/ol.ext/pixelworks.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol.ext/pixelworks.js rename to client/javascript/externs/openLayers/ol.ext/pixelworks.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol.ext/rbush.js b/client/javascript/externs/openLayers/ol.ext/rbush.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol.ext/rbush.js rename to client/javascript/externs/openLayers/ol.ext/rbush.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol.ext/vectortile.js b/client/javascript/externs/openLayers/ol.ext/vectortile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol.ext/vectortile.js rename to client/javascript/externs/openLayers/ol.ext/vectortile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/array.js b/client/javascript/externs/openLayers/ol/ol/array.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/array.js rename to client/javascript/externs/openLayers/ol/ol/array.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/assertionerror.js b/client/javascript/externs/openLayers/ol/ol/assertionerror.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/assertionerror.js rename to client/javascript/externs/openLayers/ol/ol/assertionerror.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/asserts.js b/client/javascript/externs/openLayers/ol/ol/asserts.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/asserts.js rename to client/javascript/externs/openLayers/ol/ol/asserts.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/attribution.js b/client/javascript/externs/openLayers/ol/ol/attribution.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/attribution.js rename to client/javascript/externs/openLayers/ol/ol/attribution.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/canvasmap.js b/client/javascript/externs/openLayers/ol/ol/canvasmap.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/canvasmap.js rename to client/javascript/externs/openLayers/ol/ol/canvasmap.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/centerconstraint.js b/client/javascript/externs/openLayers/ol/ol/centerconstraint.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/centerconstraint.js rename to client/javascript/externs/openLayers/ol/ol/centerconstraint.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/collection.js b/client/javascript/externs/openLayers/ol/ol/collection.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/collection.js rename to client/javascript/externs/openLayers/ol/ol/collection.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/collectioneventtype.js b/client/javascript/externs/openLayers/ol/ol/collectioneventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/collectioneventtype.js rename to client/javascript/externs/openLayers/ol/ol/collectioneventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/color.js b/client/javascript/externs/openLayers/ol/ol/color.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/color.js rename to client/javascript/externs/openLayers/ol/ol/color.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/color.jsdoc b/client/javascript/externs/openLayers/ol/ol/color.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/color.jsdoc rename to client/javascript/externs/openLayers/ol/ol/color.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/colorlike.js b/client/javascript/externs/openLayers/ol/ol/colorlike.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/colorlike.js rename to client/javascript/externs/openLayers/ol/ol/colorlike.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/colorlike.jsdoc b/client/javascript/externs/openLayers/ol/ol/colorlike.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/colorlike.jsdoc rename to client/javascript/externs/openLayers/ol/ol/colorlike.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control.js b/client/javascript/externs/openLayers/ol/ol/control.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control.js rename to client/javascript/externs/openLayers/ol/ol/control.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/attribution.js b/client/javascript/externs/openLayers/ol/ol/control/attribution.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/attribution.js rename to client/javascript/externs/openLayers/ol/ol/control/attribution.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/control.js b/client/javascript/externs/openLayers/ol/ol/control/control.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/control.js rename to client/javascript/externs/openLayers/ol/ol/control/control.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/fullscreen.js b/client/javascript/externs/openLayers/ol/ol/control/fullscreen.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/fullscreen.js rename to client/javascript/externs/openLayers/ol/ol/control/fullscreen.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/index.jsdoc b/client/javascript/externs/openLayers/ol/ol/control/index.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/index.jsdoc rename to client/javascript/externs/openLayers/ol/ol/control/index.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/mouseposition.js b/client/javascript/externs/openLayers/ol/ol/control/mouseposition.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/mouseposition.js rename to client/javascript/externs/openLayers/ol/ol/control/mouseposition.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/overviewmap.js b/client/javascript/externs/openLayers/ol/ol/control/overviewmap.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/overviewmap.js rename to client/javascript/externs/openLayers/ol/ol/control/overviewmap.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/rotate.js b/client/javascript/externs/openLayers/ol/ol/control/rotate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/rotate.js rename to client/javascript/externs/openLayers/ol/ol/control/rotate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/scaleline.js b/client/javascript/externs/openLayers/ol/ol/control/scaleline.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/scaleline.js rename to client/javascript/externs/openLayers/ol/ol/control/scaleline.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/scalelineunits.js b/client/javascript/externs/openLayers/ol/ol/control/scalelineunits.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/scalelineunits.js rename to client/javascript/externs/openLayers/ol/ol/control/scalelineunits.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/zoom.js b/client/javascript/externs/openLayers/ol/ol/control/zoom.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/zoom.js rename to client/javascript/externs/openLayers/ol/ol/control/zoom.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/zoomslider.js b/client/javascript/externs/openLayers/ol/ol/control/zoomslider.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/zoomslider.js rename to client/javascript/externs/openLayers/ol/ol/control/zoomslider.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/control/zoomtoextent.js b/client/javascript/externs/openLayers/ol/ol/control/zoomtoextent.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/control/zoomtoextent.js rename to client/javascript/externs/openLayers/ol/ol/control/zoomtoextent.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/coordinate.js b/client/javascript/externs/openLayers/ol/ol/coordinate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/coordinate.js rename to client/javascript/externs/openLayers/ol/ol/coordinate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/coordinate.jsdoc b/client/javascript/externs/openLayers/ol/ol/coordinate.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/coordinate.jsdoc rename to client/javascript/externs/openLayers/ol/ol/coordinate.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/css.js b/client/javascript/externs/openLayers/ol/ol/css.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/css.js rename to client/javascript/externs/openLayers/ol/ol/css.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/deviceorientation.js b/client/javascript/externs/openLayers/ol/ol/deviceorientation.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/deviceorientation.js rename to client/javascript/externs/openLayers/ol/ol/deviceorientation.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/disposable.js b/client/javascript/externs/openLayers/ol/ol/disposable.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/disposable.js rename to client/javascript/externs/openLayers/ol/ol/disposable.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/dom.js b/client/javascript/externs/openLayers/ol/ol/dom.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/dom.js rename to client/javascript/externs/openLayers/ol/ol/dom.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/easing.js b/client/javascript/externs/openLayers/ol/ol/easing.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/easing.js rename to client/javascript/externs/openLayers/ol/ol/easing.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/easing.jsdoc b/client/javascript/externs/openLayers/ol/ol/easing.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/easing.jsdoc rename to client/javascript/externs/openLayers/ol/ol/easing.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/events.js b/client/javascript/externs/openLayers/ol/ol/events.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/events.js rename to client/javascript/externs/openLayers/ol/ol/events.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/events/condition.js b/client/javascript/externs/openLayers/ol/ol/events/condition.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/events/condition.js rename to client/javascript/externs/openLayers/ol/ol/events/condition.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/events/condition.jsdoc b/client/javascript/externs/openLayers/ol/ol/events/condition.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/events/condition.jsdoc rename to client/javascript/externs/openLayers/ol/ol/events/condition.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/events/event.js b/client/javascript/externs/openLayers/ol/ol/events/event.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/events/event.js rename to client/javascript/externs/openLayers/ol/ol/events/event.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/events/eventtarget.js b/client/javascript/externs/openLayers/ol/ol/events/eventtarget.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/events/eventtarget.js rename to client/javascript/externs/openLayers/ol/ol/events/eventtarget.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/events/eventtype.js b/client/javascript/externs/openLayers/ol/ol/events/eventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/events/eventtype.js rename to client/javascript/externs/openLayers/ol/ol/events/eventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/events/keycode.js b/client/javascript/externs/openLayers/ol/ol/events/keycode.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/events/keycode.js rename to client/javascript/externs/openLayers/ol/ol/events/keycode.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/extent.js b/client/javascript/externs/openLayers/ol/ol/extent.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/extent.js rename to client/javascript/externs/openLayers/ol/ol/extent.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/extent.jsdoc b/client/javascript/externs/openLayers/ol/ol/extent.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/extent.jsdoc rename to client/javascript/externs/openLayers/ol/ol/extent.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/extent/corner.js b/client/javascript/externs/openLayers/ol/ol/extent/corner.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/extent/corner.js rename to client/javascript/externs/openLayers/ol/ol/extent/corner.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/extent/relationship.js b/client/javascript/externs/openLayers/ol/ol/extent/relationship.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/extent/relationship.js rename to client/javascript/externs/openLayers/ol/ol/extent/relationship.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/feature.js b/client/javascript/externs/openLayers/ol/ol/feature.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/feature.js rename to client/javascript/externs/openLayers/ol/ol/feature.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/featureloader.js b/client/javascript/externs/openLayers/ol/ol/featureloader.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/featureloader.js rename to client/javascript/externs/openLayers/ol/ol/featureloader.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/featureloader.jsdoc b/client/javascript/externs/openLayers/ol/ol/featureloader.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/featureloader.jsdoc rename to client/javascript/externs/openLayers/ol/ol/featureloader.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/esrijson.js b/client/javascript/externs/openLayers/ol/ol/format/esrijson.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/esrijson.js rename to client/javascript/externs/openLayers/ol/ol/format/esrijson.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/feature.js b/client/javascript/externs/openLayers/ol/ol/format/feature.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/feature.js rename to client/javascript/externs/openLayers/ol/ol/format/feature.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter.js b/client/javascript/externs/openLayers/ol/ol/format/filter.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter.js rename to client/javascript/externs/openLayers/ol/ol/format/filter.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/and.js b/client/javascript/externs/openLayers/ol/ol/format/filter/and.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/and.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/and.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/bbox.js b/client/javascript/externs/openLayers/ol/ol/format/filter/bbox.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/bbox.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/bbox.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/comparison.js b/client/javascript/externs/openLayers/ol/ol/format/filter/comparison.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/comparison.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/comparison.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/comparisonbinary.js b/client/javascript/externs/openLayers/ol/ol/format/filter/comparisonbinary.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/comparisonbinary.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/comparisonbinary.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/contains.js b/client/javascript/externs/openLayers/ol/ol/format/filter/contains.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/contains.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/contains.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/during.js b/client/javascript/externs/openLayers/ol/ol/format/filter/during.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/during.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/during.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/equalto.js b/client/javascript/externs/openLayers/ol/ol/format/filter/equalto.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/equalto.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/equalto.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/filter.js b/client/javascript/externs/openLayers/ol/ol/format/filter/filter.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/filter.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/filter.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/greaterthan.js b/client/javascript/externs/openLayers/ol/ol/format/filter/greaterthan.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/greaterthan.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/greaterthan.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/greaterthanorequalto.js b/client/javascript/externs/openLayers/ol/ol/format/filter/greaterthanorequalto.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/greaterthanorequalto.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/greaterthanorequalto.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/index.jsdoc b/client/javascript/externs/openLayers/ol/ol/format/filter/index.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/index.jsdoc rename to client/javascript/externs/openLayers/ol/ol/format/filter/index.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/intersects.js b/client/javascript/externs/openLayers/ol/ol/format/filter/intersects.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/intersects.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/intersects.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/isbetween.js b/client/javascript/externs/openLayers/ol/ol/format/filter/isbetween.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/isbetween.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/isbetween.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/islike.js b/client/javascript/externs/openLayers/ol/ol/format/filter/islike.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/islike.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/islike.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/isnull.js b/client/javascript/externs/openLayers/ol/ol/format/filter/isnull.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/isnull.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/isnull.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/lessthan.js b/client/javascript/externs/openLayers/ol/ol/format/filter/lessthan.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/lessthan.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/lessthan.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/lessthanorequalto.js b/client/javascript/externs/openLayers/ol/ol/format/filter/lessthanorequalto.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/lessthanorequalto.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/lessthanorequalto.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/logicalnary.js b/client/javascript/externs/openLayers/ol/ol/format/filter/logicalnary.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/logicalnary.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/logicalnary.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/not.js b/client/javascript/externs/openLayers/ol/ol/format/filter/not.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/not.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/not.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/notequalto.js b/client/javascript/externs/openLayers/ol/ol/format/filter/notequalto.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/notequalto.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/notequalto.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/or.js b/client/javascript/externs/openLayers/ol/ol/format/filter/or.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/or.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/or.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/spatial.js b/client/javascript/externs/openLayers/ol/ol/format/filter/spatial.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/spatial.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/spatial.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/within.js b/client/javascript/externs/openLayers/ol/ol/format/filter/within.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/filter/within.js rename to client/javascript/externs/openLayers/ol/ol/format/filter/within.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/formattype.js b/client/javascript/externs/openLayers/ol/ol/format/formattype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/formattype.js rename to client/javascript/externs/openLayers/ol/ol/format/formattype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/geojson.js b/client/javascript/externs/openLayers/ol/ol/format/geojson.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/geojson.js rename to client/javascript/externs/openLayers/ol/ol/format/geojson.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/gml.js b/client/javascript/externs/openLayers/ol/ol/format/gml.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/gml.js rename to client/javascript/externs/openLayers/ol/ol/format/gml.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/gml2.js b/client/javascript/externs/openLayers/ol/ol/format/gml2.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/gml2.js rename to client/javascript/externs/openLayers/ol/ol/format/gml2.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/gml3.js b/client/javascript/externs/openLayers/ol/ol/format/gml3.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/gml3.js rename to client/javascript/externs/openLayers/ol/ol/format/gml3.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/gmlbase.js b/client/javascript/externs/openLayers/ol/ol/format/gmlbase.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/gmlbase.js rename to client/javascript/externs/openLayers/ol/ol/format/gmlbase.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/gpx.js b/client/javascript/externs/openLayers/ol/ol/format/gpx.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/gpx.js rename to client/javascript/externs/openLayers/ol/ol/format/gpx.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/igc.js b/client/javascript/externs/openLayers/ol/ol/format/igc.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/igc.js rename to client/javascript/externs/openLayers/ol/ol/format/igc.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/igcz.js b/client/javascript/externs/openLayers/ol/ol/format/igcz.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/igcz.js rename to client/javascript/externs/openLayers/ol/ol/format/igcz.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/index.jsdoc b/client/javascript/externs/openLayers/ol/ol/format/index.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/index.jsdoc rename to client/javascript/externs/openLayers/ol/ol/format/index.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/jsonfeature.js b/client/javascript/externs/openLayers/ol/ol/format/jsonfeature.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/jsonfeature.js rename to client/javascript/externs/openLayers/ol/ol/format/jsonfeature.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/kml.js b/client/javascript/externs/openLayers/ol/ol/format/kml.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/kml.js rename to client/javascript/externs/openLayers/ol/ol/format/kml.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/mvt.js b/client/javascript/externs/openLayers/ol/ol/format/mvt.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/mvt.js rename to client/javascript/externs/openLayers/ol/ol/format/mvt.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/osmxml.js b/client/javascript/externs/openLayers/ol/ol/format/osmxml.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/osmxml.js rename to client/javascript/externs/openLayers/ol/ol/format/osmxml.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/ows.js b/client/javascript/externs/openLayers/ol/ol/format/ows.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/ows.js rename to client/javascript/externs/openLayers/ol/ol/format/ows.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/polyline.js b/client/javascript/externs/openLayers/ol/ol/format/polyline.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/polyline.js rename to client/javascript/externs/openLayers/ol/ol/format/polyline.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/readme.md b/client/javascript/externs/openLayers/ol/ol/format/readme.md similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/readme.md rename to client/javascript/externs/openLayers/ol/ol/format/readme.md diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/textfeature.js b/client/javascript/externs/openLayers/ol/ol/format/textfeature.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/textfeature.js rename to client/javascript/externs/openLayers/ol/ol/format/textfeature.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/topojson.js b/client/javascript/externs/openLayers/ol/ol/format/topojson.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/topojson.js rename to client/javascript/externs/openLayers/ol/ol/format/topojson.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/wfs.js b/client/javascript/externs/openLayers/ol/ol/format/wfs.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/wfs.js rename to client/javascript/externs/openLayers/ol/ol/format/wfs.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/wkt.js b/client/javascript/externs/openLayers/ol/ol/format/wkt.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/wkt.js rename to client/javascript/externs/openLayers/ol/ol/format/wkt.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/wmscapabilities.js b/client/javascript/externs/openLayers/ol/ol/format/wmscapabilities.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/wmscapabilities.js rename to client/javascript/externs/openLayers/ol/ol/format/wmscapabilities.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/wmsgetfeatureinfo.js b/client/javascript/externs/openLayers/ol/ol/format/wmsgetfeatureinfo.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/wmsgetfeatureinfo.js rename to client/javascript/externs/openLayers/ol/ol/format/wmsgetfeatureinfo.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/wmtscapabilities.js b/client/javascript/externs/openLayers/ol/ol/format/wmtscapabilities.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/wmtscapabilities.js rename to client/javascript/externs/openLayers/ol/ol/format/wmtscapabilities.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/xlink.js b/client/javascript/externs/openLayers/ol/ol/format/xlink.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/xlink.js rename to client/javascript/externs/openLayers/ol/ol/format/xlink.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/xml.js b/client/javascript/externs/openLayers/ol/ol/format/xml.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/xml.js rename to client/javascript/externs/openLayers/ol/ol/format/xml.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/xmlfeature.js b/client/javascript/externs/openLayers/ol/ol/format/xmlfeature.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/xmlfeature.js rename to client/javascript/externs/openLayers/ol/ol/format/xmlfeature.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/format/xsd.js b/client/javascript/externs/openLayers/ol/ol/format/xsd.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/format/xsd.js rename to client/javascript/externs/openLayers/ol/ol/format/xsd.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/functions.js b/client/javascript/externs/openLayers/ol/ol/functions.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/functions.js rename to client/javascript/externs/openLayers/ol/ol/functions.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geolocation.js b/client/javascript/externs/openLayers/ol/ol/geolocation.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geolocation.js rename to client/javascript/externs/openLayers/ol/ol/geolocation.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geolocationproperty.js b/client/javascript/externs/openLayers/ol/ol/geolocationproperty.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geolocationproperty.js rename to client/javascript/externs/openLayers/ol/ol/geolocationproperty.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/circle.js b/client/javascript/externs/openLayers/ol/ol/geom/circle.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/circle.js rename to client/javascript/externs/openLayers/ol/ol/geom/circle.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/area.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/area.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/area.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/area.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/center.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/center.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/center.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/center.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/closest.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/closest.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/closest.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/closest.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/contains.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/contains.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/contains.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/contains.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/deflate.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/deflate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/deflate.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/deflate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/flip.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/flip.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/flip.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/flip.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/geodesic.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/geodesic.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/geodesic.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/geodesic.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/inflate.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/inflate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/inflate.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/inflate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/interiorpoint.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/interiorpoint.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/interiorpoint.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/interiorpoint.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/interpolate.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/interpolate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/interpolate.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/interpolate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/intersectsextent.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/intersectsextent.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/intersectsextent.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/intersectsextent.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/length.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/length.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/length.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/length.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/orient.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/orient.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/orient.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/orient.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/reverse.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/reverse.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/reverse.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/reverse.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/segments.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/segments.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/segments.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/segments.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/simplify.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/simplify.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/simplify.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/simplify.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/straightchunk.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/straightchunk.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/straightchunk.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/straightchunk.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/textpath.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/textpath.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/textpath.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/textpath.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/topology.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/topology.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/topology.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/topology.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/transform.js b/client/javascript/externs/openLayers/ol/ol/geom/flat/transform.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/flat/transform.js rename to client/javascript/externs/openLayers/ol/ol/geom/flat/transform.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geom.jsdoc b/client/javascript/externs/openLayers/ol/ol/geom/geom.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geom.jsdoc rename to client/javascript/externs/openLayers/ol/ol/geom/geom.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geometry.js b/client/javascript/externs/openLayers/ol/ol/geom/geometry.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geometry.js rename to client/javascript/externs/openLayers/ol/ol/geom/geometry.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geometrycollection.js b/client/javascript/externs/openLayers/ol/ol/geom/geometrycollection.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geometrycollection.js rename to client/javascript/externs/openLayers/ol/ol/geom/geometrycollection.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geometrylayout.js b/client/javascript/externs/openLayers/ol/ol/geom/geometrylayout.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geometrylayout.js rename to client/javascript/externs/openLayers/ol/ol/geom/geometrylayout.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geometrytype.js b/client/javascript/externs/openLayers/ol/ol/geom/geometrytype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/geometrytype.js rename to client/javascript/externs/openLayers/ol/ol/geom/geometrytype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/linearring.js b/client/javascript/externs/openLayers/ol/ol/geom/linearring.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/linearring.js rename to client/javascript/externs/openLayers/ol/ol/geom/linearring.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/linestring.js b/client/javascript/externs/openLayers/ol/ol/geom/linestring.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/linestring.js rename to client/javascript/externs/openLayers/ol/ol/geom/linestring.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/multilinestring.js b/client/javascript/externs/openLayers/ol/ol/geom/multilinestring.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/multilinestring.js rename to client/javascript/externs/openLayers/ol/ol/geom/multilinestring.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/multipoint.js b/client/javascript/externs/openLayers/ol/ol/geom/multipoint.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/multipoint.js rename to client/javascript/externs/openLayers/ol/ol/geom/multipoint.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/multipolygon.js b/client/javascript/externs/openLayers/ol/ol/geom/multipolygon.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/multipolygon.js rename to client/javascript/externs/openLayers/ol/ol/geom/multipolygon.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/point.js b/client/javascript/externs/openLayers/ol/ol/geom/point.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/point.js rename to client/javascript/externs/openLayers/ol/ol/geom/point.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/polygon.js b/client/javascript/externs/openLayers/ol/ol/geom/polygon.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/polygon.js rename to client/javascript/externs/openLayers/ol/ol/geom/polygon.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/geom/simplegeometry.js b/client/javascript/externs/openLayers/ol/ol/geom/simplegeometry.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/geom/simplegeometry.js rename to client/javascript/externs/openLayers/ol/ol/geom/simplegeometry.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/graticule.js b/client/javascript/externs/openLayers/ol/ol/graticule.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/graticule.js rename to client/javascript/externs/openLayers/ol/ol/graticule.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/has.js b/client/javascript/externs/openLayers/ol/ol/has.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/has.js rename to client/javascript/externs/openLayers/ol/ol/has.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/has.jsdoc b/client/javascript/externs/openLayers/ol/ol/has.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/has.jsdoc rename to client/javascript/externs/openLayers/ol/ol/has.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/image.js b/client/javascript/externs/openLayers/ol/ol/image.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/image.js rename to client/javascript/externs/openLayers/ol/ol/image.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/imagebase.js b/client/javascript/externs/openLayers/ol/ol/imagebase.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/imagebase.js rename to client/javascript/externs/openLayers/ol/ol/imagebase.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/imagecanvas.js b/client/javascript/externs/openLayers/ol/ol/imagecanvas.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/imagecanvas.js rename to client/javascript/externs/openLayers/ol/ol/imagecanvas.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/imagestate.js b/client/javascript/externs/openLayers/ol/ol/imagestate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/imagestate.js rename to client/javascript/externs/openLayers/ol/ol/imagestate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/imagetile.js b/client/javascript/externs/openLayers/ol/ol/imagetile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/imagetile.js rename to client/javascript/externs/openLayers/ol/ol/imagetile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/index.js b/client/javascript/externs/openLayers/ol/ol/index.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/index.js rename to client/javascript/externs/openLayers/ol/ol/index.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction.js b/client/javascript/externs/openLayers/ol/ol/interaction.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction.js rename to client/javascript/externs/openLayers/ol/ol/interaction.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/doubleclickzoom.js b/client/javascript/externs/openLayers/ol/ol/interaction/doubleclickzoom.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/doubleclickzoom.js rename to client/javascript/externs/openLayers/ol/ol/interaction/doubleclickzoom.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/draganddrop.js b/client/javascript/externs/openLayers/ol/ol/interaction/draganddrop.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/draganddrop.js rename to client/javascript/externs/openLayers/ol/ol/interaction/draganddrop.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragbox.js b/client/javascript/externs/openLayers/ol/ol/interaction/dragbox.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragbox.js rename to client/javascript/externs/openLayers/ol/ol/interaction/dragbox.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragpan.js b/client/javascript/externs/openLayers/ol/ol/interaction/dragpan.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragpan.js rename to client/javascript/externs/openLayers/ol/ol/interaction/dragpan.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragrotate.js b/client/javascript/externs/openLayers/ol/ol/interaction/dragrotate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragrotate.js rename to client/javascript/externs/openLayers/ol/ol/interaction/dragrotate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragrotateandzoom.js b/client/javascript/externs/openLayers/ol/ol/interaction/dragrotateandzoom.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragrotateandzoom.js rename to client/javascript/externs/openLayers/ol/ol/interaction/dragrotateandzoom.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragzoom.js b/client/javascript/externs/openLayers/ol/ol/interaction/dragzoom.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/dragzoom.js rename to client/javascript/externs/openLayers/ol/ol/interaction/dragzoom.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/draw.js b/client/javascript/externs/openLayers/ol/ol/interaction/draw.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/draw.js rename to client/javascript/externs/openLayers/ol/ol/interaction/draw.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/draweventtype.js b/client/javascript/externs/openLayers/ol/ol/interaction/draweventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/draweventtype.js rename to client/javascript/externs/openLayers/ol/ol/interaction/draweventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/extent.js b/client/javascript/externs/openLayers/ol/ol/interaction/extent.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/extent.js rename to client/javascript/externs/openLayers/ol/ol/interaction/extent.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/extenteventtype.js b/client/javascript/externs/openLayers/ol/ol/interaction/extenteventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/extenteventtype.js rename to client/javascript/externs/openLayers/ol/ol/interaction/extenteventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/interaction.js b/client/javascript/externs/openLayers/ol/ol/interaction/interaction.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/interaction.js rename to client/javascript/externs/openLayers/ol/ol/interaction/interaction.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/interaction.jsdoc b/client/javascript/externs/openLayers/ol/ol/interaction/interaction.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/interaction.jsdoc rename to client/javascript/externs/openLayers/ol/ol/interaction/interaction.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/keyboardpan.js b/client/javascript/externs/openLayers/ol/ol/interaction/keyboardpan.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/keyboardpan.js rename to client/javascript/externs/openLayers/ol/ol/interaction/keyboardpan.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/keyboardzoom.js b/client/javascript/externs/openLayers/ol/ol/interaction/keyboardzoom.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/keyboardzoom.js rename to client/javascript/externs/openLayers/ol/ol/interaction/keyboardzoom.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/modify.js b/client/javascript/externs/openLayers/ol/ol/interaction/modify.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/modify.js rename to client/javascript/externs/openLayers/ol/ol/interaction/modify.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/modifyeventtype.js b/client/javascript/externs/openLayers/ol/ol/interaction/modifyeventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/modifyeventtype.js rename to client/javascript/externs/openLayers/ol/ol/interaction/modifyeventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/mousewheelzoom.js b/client/javascript/externs/openLayers/ol/ol/interaction/mousewheelzoom.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/mousewheelzoom.js rename to client/javascript/externs/openLayers/ol/ol/interaction/mousewheelzoom.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/pinchrotate.js b/client/javascript/externs/openLayers/ol/ol/interaction/pinchrotate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/pinchrotate.js rename to client/javascript/externs/openLayers/ol/ol/interaction/pinchrotate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/pinchzoom.js b/client/javascript/externs/openLayers/ol/ol/interaction/pinchzoom.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/pinchzoom.js rename to client/javascript/externs/openLayers/ol/ol/interaction/pinchzoom.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/pointer.js b/client/javascript/externs/openLayers/ol/ol/interaction/pointer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/pointer.js rename to client/javascript/externs/openLayers/ol/ol/interaction/pointer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/property.js b/client/javascript/externs/openLayers/ol/ol/interaction/property.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/property.js rename to client/javascript/externs/openLayers/ol/ol/interaction/property.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/select.js b/client/javascript/externs/openLayers/ol/ol/interaction/select.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/select.js rename to client/javascript/externs/openLayers/ol/ol/interaction/select.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/snap.js b/client/javascript/externs/openLayers/ol/ol/interaction/snap.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/snap.js rename to client/javascript/externs/openLayers/ol/ol/interaction/snap.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/translate.js b/client/javascript/externs/openLayers/ol/ol/interaction/translate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/translate.js rename to client/javascript/externs/openLayers/ol/ol/interaction/translate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/translateeventtype.js b/client/javascript/externs/openLayers/ol/ol/interaction/translateeventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/interaction/translateeventtype.js rename to client/javascript/externs/openLayers/ol/ol/interaction/translateeventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/kinetic.js b/client/javascript/externs/openLayers/ol/ol/kinetic.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/kinetic.js rename to client/javascript/externs/openLayers/ol/ol/kinetic.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/base.js b/client/javascript/externs/openLayers/ol/ol/layer/base.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/base.js rename to client/javascript/externs/openLayers/ol/ol/layer/base.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/group.js b/client/javascript/externs/openLayers/ol/ol/layer/group.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/group.js rename to client/javascript/externs/openLayers/ol/ol/layer/group.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/heatmap.js b/client/javascript/externs/openLayers/ol/ol/layer/heatmap.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/heatmap.js rename to client/javascript/externs/openLayers/ol/ol/layer/heatmap.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/image.js b/client/javascript/externs/openLayers/ol/ol/layer/image.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/image.js rename to client/javascript/externs/openLayers/ol/ol/layer/image.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/layer.js b/client/javascript/externs/openLayers/ol/ol/layer/layer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/layer.js rename to client/javascript/externs/openLayers/ol/ol/layer/layer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/layer.jsdoc b/client/javascript/externs/openLayers/ol/ol/layer/layer.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/layer.jsdoc rename to client/javascript/externs/openLayers/ol/ol/layer/layer.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/property.js b/client/javascript/externs/openLayers/ol/ol/layer/property.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/property.js rename to client/javascript/externs/openLayers/ol/ol/layer/property.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/tile.js b/client/javascript/externs/openLayers/ol/ol/layer/tile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/tile.js rename to client/javascript/externs/openLayers/ol/ol/layer/tile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/tileproperty.js b/client/javascript/externs/openLayers/ol/ol/layer/tileproperty.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/tileproperty.js rename to client/javascript/externs/openLayers/ol/ol/layer/tileproperty.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/vector.js b/client/javascript/externs/openLayers/ol/ol/layer/vector.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/vector.js rename to client/javascript/externs/openLayers/ol/ol/layer/vector.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/vectorrendertype.js b/client/javascript/externs/openLayers/ol/ol/layer/vectorrendertype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/vectorrendertype.js rename to client/javascript/externs/openLayers/ol/ol/layer/vectorrendertype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/vectortile.js b/client/javascript/externs/openLayers/ol/ol/layer/vectortile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/vectortile.js rename to client/javascript/externs/openLayers/ol/ol/layer/vectortile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layer/vectortilerendertype.js b/client/javascript/externs/openLayers/ol/ol/layer/vectortilerendertype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layer/vectortilerendertype.js rename to client/javascript/externs/openLayers/ol/ol/layer/vectortilerendertype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/layertype.js b/client/javascript/externs/openLayers/ol/ol/layertype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/layertype.js rename to client/javascript/externs/openLayers/ol/ol/layertype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/loadingstrategy.js b/client/javascript/externs/openLayers/ol/ol/loadingstrategy.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/loadingstrategy.js rename to client/javascript/externs/openLayers/ol/ol/loadingstrategy.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/loadingstrategy.jsdoc b/client/javascript/externs/openLayers/ol/ol/loadingstrategy.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/loadingstrategy.jsdoc rename to client/javascript/externs/openLayers/ol/ol/loadingstrategy.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/map.js b/client/javascript/externs/openLayers/ol/ol/map.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/map.js rename to client/javascript/externs/openLayers/ol/ol/map.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/mapbrowserevent.js b/client/javascript/externs/openLayers/ol/ol/mapbrowserevent.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/mapbrowserevent.js rename to client/javascript/externs/openLayers/ol/ol/mapbrowserevent.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/mapbrowsereventhandler.js b/client/javascript/externs/openLayers/ol/ol/mapbrowsereventhandler.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/mapbrowsereventhandler.js rename to client/javascript/externs/openLayers/ol/ol/mapbrowsereventhandler.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/mapbrowsereventtype.js b/client/javascript/externs/openLayers/ol/ol/mapbrowsereventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/mapbrowsereventtype.js rename to client/javascript/externs/openLayers/ol/ol/mapbrowsereventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/mapbrowserpointerevent.js b/client/javascript/externs/openLayers/ol/ol/mapbrowserpointerevent.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/mapbrowserpointerevent.js rename to client/javascript/externs/openLayers/ol/ol/mapbrowserpointerevent.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/mapevent.js b/client/javascript/externs/openLayers/ol/ol/mapevent.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/mapevent.js rename to client/javascript/externs/openLayers/ol/ol/mapevent.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/mapeventtype.js b/client/javascript/externs/openLayers/ol/ol/mapeventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/mapeventtype.js rename to client/javascript/externs/openLayers/ol/ol/mapeventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/mapproperty.js b/client/javascript/externs/openLayers/ol/ol/mapproperty.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/mapproperty.js rename to client/javascript/externs/openLayers/ol/ol/mapproperty.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/math.js b/client/javascript/externs/openLayers/ol/ol/math.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/math.js rename to client/javascript/externs/openLayers/ol/ol/math.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/net.js b/client/javascript/externs/openLayers/ol/ol/net.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/net.js rename to client/javascript/externs/openLayers/ol/ol/net.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/obj.js b/client/javascript/externs/openLayers/ol/ol/obj.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/obj.js rename to client/javascript/externs/openLayers/ol/ol/obj.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/object.js b/client/javascript/externs/openLayers/ol/ol/object.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/object.js rename to client/javascript/externs/openLayers/ol/ol/object.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/objecteventtype.js b/client/javascript/externs/openLayers/ol/ol/objecteventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/objecteventtype.js rename to client/javascript/externs/openLayers/ol/ol/objecteventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/observable.js b/client/javascript/externs/openLayers/ol/ol/observable.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/observable.js rename to client/javascript/externs/openLayers/ol/ol/observable.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/overlay.js b/client/javascript/externs/openLayers/ol/ol/overlay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/overlay.js rename to client/javascript/externs/openLayers/ol/ol/overlay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/overlaypositioning.js b/client/javascript/externs/openLayers/ol/ol/overlaypositioning.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/overlaypositioning.js rename to client/javascript/externs/openLayers/ol/ol/overlaypositioning.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/pluggablemap.js b/client/javascript/externs/openLayers/ol/ol/pluggablemap.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/pluggablemap.js rename to client/javascript/externs/openLayers/ol/ol/pluggablemap.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/plugins.js b/client/javascript/externs/openLayers/ol/ol/plugins.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/plugins.js rename to client/javascript/externs/openLayers/ol/ol/plugins.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/plugintype.js b/client/javascript/externs/openLayers/ol/ol/plugintype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/plugintype.js rename to client/javascript/externs/openLayers/ol/ol/plugintype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/eventsource.js b/client/javascript/externs/openLayers/ol/ol/pointer/eventsource.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/eventsource.js rename to client/javascript/externs/openLayers/ol/ol/pointer/eventsource.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/eventtype.js b/client/javascript/externs/openLayers/ol/ol/pointer/eventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/eventtype.js rename to client/javascript/externs/openLayers/ol/ol/pointer/eventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/mousesource.js b/client/javascript/externs/openLayers/ol/ol/pointer/mousesource.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/mousesource.js rename to client/javascript/externs/openLayers/ol/ol/pointer/mousesource.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/mssource.js b/client/javascript/externs/openLayers/ol/ol/pointer/mssource.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/mssource.js rename to client/javascript/externs/openLayers/ol/ol/pointer/mssource.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/nativesource.js b/client/javascript/externs/openLayers/ol/ol/pointer/nativesource.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/nativesource.js rename to client/javascript/externs/openLayers/ol/ol/pointer/nativesource.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/pointerevent.js b/client/javascript/externs/openLayers/ol/ol/pointer/pointerevent.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/pointerevent.js rename to client/javascript/externs/openLayers/ol/ol/pointer/pointerevent.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/pointereventhandler.js b/client/javascript/externs/openLayers/ol/ol/pointer/pointereventhandler.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/pointereventhandler.js rename to client/javascript/externs/openLayers/ol/ol/pointer/pointereventhandler.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/touchsource.js b/client/javascript/externs/openLayers/ol/ol/pointer/touchsource.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/pointer/touchsource.js rename to client/javascript/externs/openLayers/ol/ol/pointer/touchsource.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj.js b/client/javascript/externs/openLayers/ol/ol/proj.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj.js rename to client/javascript/externs/openLayers/ol/ol/proj.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj/common.js b/client/javascript/externs/openLayers/ol/ol/proj/common.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj/common.js rename to client/javascript/externs/openLayers/ol/ol/proj/common.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj/epsg3857.js b/client/javascript/externs/openLayers/ol/ol/proj/epsg3857.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj/epsg3857.js rename to client/javascript/externs/openLayers/ol/ol/proj/epsg3857.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj/epsg4326.js b/client/javascript/externs/openLayers/ol/ol/proj/epsg4326.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj/epsg4326.js rename to client/javascript/externs/openLayers/ol/ol/proj/epsg4326.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj/index.jsdoc b/client/javascript/externs/openLayers/ol/ol/proj/index.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj/index.jsdoc rename to client/javascript/externs/openLayers/ol/ol/proj/index.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj/proj4.js b/client/javascript/externs/openLayers/ol/ol/proj/proj4.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj/proj4.js rename to client/javascript/externs/openLayers/ol/ol/proj/proj4.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj/projection.js b/client/javascript/externs/openLayers/ol/ol/proj/projection.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj/projection.js rename to client/javascript/externs/openLayers/ol/ol/proj/projection.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj/projections.js b/client/javascript/externs/openLayers/ol/ol/proj/projections.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj/projections.js rename to client/javascript/externs/openLayers/ol/ol/proj/projections.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj/transforms.js b/client/javascript/externs/openLayers/ol/ol/proj/transforms.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj/transforms.js rename to client/javascript/externs/openLayers/ol/ol/proj/transforms.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/proj/units.js b/client/javascript/externs/openLayers/ol/ol/proj/units.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/proj/units.js rename to client/javascript/externs/openLayers/ol/ol/proj/units.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render.js b/client/javascript/externs/openLayers/ol/ol/render.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render.js rename to client/javascript/externs/openLayers/ol/ol/render.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render.jsdoc b/client/javascript/externs/openLayers/ol/ol/render.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render.jsdoc rename to client/javascript/externs/openLayers/ol/ol/render.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/box.js b/client/javascript/externs/openLayers/ol/ol/render/box.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/box.js rename to client/javascript/externs/openLayers/ol/ol/render/box.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas.js b/client/javascript/externs/openLayers/ol/ol/render/canvas.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas.js rename to client/javascript/externs/openLayers/ol/ol/render/canvas.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/imagereplay.js b/client/javascript/externs/openLayers/ol/ol/render/canvas/imagereplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/imagereplay.js rename to client/javascript/externs/openLayers/ol/ol/render/canvas/imagereplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/immediate.js b/client/javascript/externs/openLayers/ol/ol/render/canvas/immediate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/immediate.js rename to client/javascript/externs/openLayers/ol/ol/render/canvas/immediate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/index.jsdoc b/client/javascript/externs/openLayers/ol/ol/render/canvas/index.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/index.jsdoc rename to client/javascript/externs/openLayers/ol/ol/render/canvas/index.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/instruction.js b/client/javascript/externs/openLayers/ol/ol/render/canvas/instruction.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/instruction.js rename to client/javascript/externs/openLayers/ol/ol/render/canvas/instruction.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/linestringreplay.js b/client/javascript/externs/openLayers/ol/ol/render/canvas/linestringreplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/linestringreplay.js rename to client/javascript/externs/openLayers/ol/ol/render/canvas/linestringreplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/polygonreplay.js b/client/javascript/externs/openLayers/ol/ol/render/canvas/polygonreplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/polygonreplay.js rename to client/javascript/externs/openLayers/ol/ol/render/canvas/polygonreplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/replay.js b/client/javascript/externs/openLayers/ol/ol/render/canvas/replay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/replay.js rename to client/javascript/externs/openLayers/ol/ol/render/canvas/replay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/replaygroup.js b/client/javascript/externs/openLayers/ol/ol/render/canvas/replaygroup.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/replaygroup.js rename to client/javascript/externs/openLayers/ol/ol/render/canvas/replaygroup.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/textreplay.js b/client/javascript/externs/openLayers/ol/ol/render/canvas/textreplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/canvas/textreplay.js rename to client/javascript/externs/openLayers/ol/ol/render/canvas/textreplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/event.js b/client/javascript/externs/openLayers/ol/ol/render/event.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/event.js rename to client/javascript/externs/openLayers/ol/ol/render/event.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/eventtype.js b/client/javascript/externs/openLayers/ol/ol/render/eventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/eventtype.js rename to client/javascript/externs/openLayers/ol/ol/render/eventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/feature.js b/client/javascript/externs/openLayers/ol/ol/render/feature.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/feature.js rename to client/javascript/externs/openLayers/ol/ol/render/feature.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/replay.js b/client/javascript/externs/openLayers/ol/ol/render/replay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/replay.js rename to client/javascript/externs/openLayers/ol/ol/render/replay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/replaygroup.js b/client/javascript/externs/openLayers/ol/ol/render/replaygroup.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/replaygroup.js rename to client/javascript/externs/openLayers/ol/ol/render/replaygroup.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/replaytype.js b/client/javascript/externs/openLayers/ol/ol/render/replaytype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/replaytype.js rename to client/javascript/externs/openLayers/ol/ol/render/replaytype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/vectorcontext.js b/client/javascript/externs/openLayers/ol/ol/render/vectorcontext.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/vectorcontext.js rename to client/javascript/externs/openLayers/ol/ol/render/vectorcontext.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl.js b/client/javascript/externs/openLayers/ol/ol/render/webgl.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader.glsl b/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader.glsl similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader.glsl rename to client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader.glsl diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader/locations.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader/locations.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader/locations.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/circlereplay/defaultshader/locations.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/imagereplay.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/imagereplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/imagereplay.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/imagereplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/immediate.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/immediate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/immediate.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/immediate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/index.jsdoc b/client/javascript/externs/openLayers/ol/ol/render/webgl/index.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/index.jsdoc rename to client/javascript/externs/openLayers/ol/ol/render/webgl/index.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader.glsl b/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader.glsl similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader.glsl rename to client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader.glsl diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader/locations.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader/locations.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader/locations.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/linestringreplay/defaultshader/locations.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader.glsl b/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader.glsl similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader.glsl rename to client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader.glsl diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader/locations.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader/locations.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader/locations.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/polygonreplay/defaultshader/locations.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/replay.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/replay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/replay.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/replay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/replaygroup.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/replaygroup.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/replaygroup.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/replaygroup.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/textreplay.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/textreplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/textreplay.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/textreplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader.glsl b/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader.glsl similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader.glsl rename to client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader.glsl diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader/locations.js b/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader/locations.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader/locations.js rename to client/javascript/externs/openLayers/ol/ol/render/webgl/texturereplay/defaultshader/locations.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/imagelayer.js b/client/javascript/externs/openLayers/ol/ol/renderer/canvas/imagelayer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/imagelayer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/canvas/imagelayer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/intermediatecanvas.js b/client/javascript/externs/openLayers/ol/ol/renderer/canvas/intermediatecanvas.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/intermediatecanvas.js rename to client/javascript/externs/openLayers/ol/ol/renderer/canvas/intermediatecanvas.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/layer.js b/client/javascript/externs/openLayers/ol/ol/renderer/canvas/layer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/layer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/canvas/layer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/map.js b/client/javascript/externs/openLayers/ol/ol/renderer/canvas/map.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/map.js rename to client/javascript/externs/openLayers/ol/ol/renderer/canvas/map.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/tilelayer.js b/client/javascript/externs/openLayers/ol/ol/renderer/canvas/tilelayer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/tilelayer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/canvas/tilelayer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/vectorlayer.js b/client/javascript/externs/openLayers/ol/ol/renderer/canvas/vectorlayer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/vectorlayer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/canvas/vectorlayer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/vectortilelayer.js b/client/javascript/externs/openLayers/ol/ol/renderer/canvas/vectortilelayer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/canvas/vectortilelayer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/canvas/vectortilelayer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/index.jsdoc b/client/javascript/externs/openLayers/ol/ol/renderer/index.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/index.jsdoc rename to client/javascript/externs/openLayers/ol/ol/renderer/index.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/layer.js b/client/javascript/externs/openLayers/ol/ol/renderer/layer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/layer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/layer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/map.js b/client/javascript/externs/openLayers/ol/ol/renderer/map.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/map.js rename to client/javascript/externs/openLayers/ol/ol/renderer/map.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/type.js b/client/javascript/externs/openLayers/ol/ol/renderer/type.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/type.js rename to client/javascript/externs/openLayers/ol/ol/renderer/type.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/vector.js b/client/javascript/externs/openLayers/ol/ol/renderer/vector.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/vector.js rename to client/javascript/externs/openLayers/ol/ol/renderer/vector.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader.glsl b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader.glsl similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader.glsl rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader.glsl diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader.js b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader.js rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader/locations.js b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader/locations.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader/locations.js rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/defaultmapshader/locations.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/imagelayer.js b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/imagelayer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/imagelayer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/imagelayer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/layer.js b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/layer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/layer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/layer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/map.js b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/map.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/map.js rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/map.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayer.js b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader.glsl b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader.glsl similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader.glsl rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader.glsl diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader.js b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader.js rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader/locations.js b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader/locations.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader/locations.js rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/tilelayershader/locations.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/vectorlayer.js b/client/javascript/externs/openLayers/ol/ol/renderer/webgl/vectorlayer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/renderer/webgl/vectorlayer.js rename to client/javascript/externs/openLayers/ol/ol/renderer/webgl/vectorlayer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/reproj.js b/client/javascript/externs/openLayers/ol/ol/reproj.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/reproj.js rename to client/javascript/externs/openLayers/ol/ol/reproj.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/reproj/image.js b/client/javascript/externs/openLayers/ol/ol/reproj/image.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/reproj/image.js rename to client/javascript/externs/openLayers/ol/ol/reproj/image.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/reproj/tile.js b/client/javascript/externs/openLayers/ol/ol/reproj/tile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/reproj/tile.js rename to client/javascript/externs/openLayers/ol/ol/reproj/tile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/reproj/triangulation.js b/client/javascript/externs/openLayers/ol/ol/reproj/triangulation.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/reproj/triangulation.js rename to client/javascript/externs/openLayers/ol/ol/reproj/triangulation.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/resolutionconstraint.js b/client/javascript/externs/openLayers/ol/ol/resolutionconstraint.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/resolutionconstraint.js rename to client/javascript/externs/openLayers/ol/ol/resolutionconstraint.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/rotationconstraint.js b/client/javascript/externs/openLayers/ol/ol/rotationconstraint.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/rotationconstraint.js rename to client/javascript/externs/openLayers/ol/ol/rotationconstraint.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/size.js b/client/javascript/externs/openLayers/ol/ol/size.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/size.js rename to client/javascript/externs/openLayers/ol/ol/size.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source.jsdoc b/client/javascript/externs/openLayers/ol/ol/source.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source.jsdoc rename to client/javascript/externs/openLayers/ol/ol/source.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/bingmaps.js b/client/javascript/externs/openLayers/ol/ol/source/bingmaps.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/bingmaps.js rename to client/javascript/externs/openLayers/ol/ol/source/bingmaps.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/cartodb.js b/client/javascript/externs/openLayers/ol/ol/source/cartodb.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/cartodb.js rename to client/javascript/externs/openLayers/ol/ol/source/cartodb.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/cluster.js b/client/javascript/externs/openLayers/ol/ol/source/cluster.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/cluster.js rename to client/javascript/externs/openLayers/ol/ol/source/cluster.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/image.js b/client/javascript/externs/openLayers/ol/ol/source/image.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/image.js rename to client/javascript/externs/openLayers/ol/ol/source/image.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagearcgisrest.js b/client/javascript/externs/openLayers/ol/ol/source/imagearcgisrest.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagearcgisrest.js rename to client/javascript/externs/openLayers/ol/ol/source/imagearcgisrest.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagecanvas.js b/client/javascript/externs/openLayers/ol/ol/source/imagecanvas.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagecanvas.js rename to client/javascript/externs/openLayers/ol/ol/source/imagecanvas.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagemapguide.js b/client/javascript/externs/openLayers/ol/ol/source/imagemapguide.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagemapguide.js rename to client/javascript/externs/openLayers/ol/ol/source/imagemapguide.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagestatic.js b/client/javascript/externs/openLayers/ol/ol/source/imagestatic.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagestatic.js rename to client/javascript/externs/openLayers/ol/ol/source/imagestatic.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagevector.js b/client/javascript/externs/openLayers/ol/ol/source/imagevector.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagevector.js rename to client/javascript/externs/openLayers/ol/ol/source/imagevector.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagewms.js b/client/javascript/externs/openLayers/ol/ol/source/imagewms.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/imagewms.js rename to client/javascript/externs/openLayers/ol/ol/source/imagewms.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/osm.js b/client/javascript/externs/openLayers/ol/ol/source/osm.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/osm.js rename to client/javascript/externs/openLayers/ol/ol/source/osm.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/raster.js b/client/javascript/externs/openLayers/ol/ol/source/raster.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/raster.js rename to client/javascript/externs/openLayers/ol/ol/source/raster.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/rasteroperationtype.js b/client/javascript/externs/openLayers/ol/ol/source/rasteroperationtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/rasteroperationtype.js rename to client/javascript/externs/openLayers/ol/ol/source/rasteroperationtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/source.js b/client/javascript/externs/openLayers/ol/ol/source/source.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/source.js rename to client/javascript/externs/openLayers/ol/ol/source/source.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/stamen.js b/client/javascript/externs/openLayers/ol/ol/source/stamen.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/stamen.js rename to client/javascript/externs/openLayers/ol/ol/source/stamen.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/state.js b/client/javascript/externs/openLayers/ol/ol/source/state.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/state.js rename to client/javascript/externs/openLayers/ol/ol/source/state.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/tile.js b/client/javascript/externs/openLayers/ol/ol/source/tile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/tile.js rename to client/javascript/externs/openLayers/ol/ol/source/tile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/tilearcgisrest.js b/client/javascript/externs/openLayers/ol/ol/source/tilearcgisrest.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/tilearcgisrest.js rename to client/javascript/externs/openLayers/ol/ol/source/tilearcgisrest.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/tiledebug.js b/client/javascript/externs/openLayers/ol/ol/source/tiledebug.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/tiledebug.js rename to client/javascript/externs/openLayers/ol/ol/source/tiledebug.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/tileeventtype.js b/client/javascript/externs/openLayers/ol/ol/source/tileeventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/tileeventtype.js rename to client/javascript/externs/openLayers/ol/ol/source/tileeventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/tileimage.js b/client/javascript/externs/openLayers/ol/ol/source/tileimage.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/tileimage.js rename to client/javascript/externs/openLayers/ol/ol/source/tileimage.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/tilejson.js b/client/javascript/externs/openLayers/ol/ol/source/tilejson.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/tilejson.js rename to client/javascript/externs/openLayers/ol/ol/source/tilejson.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/tileutfgrid.js b/client/javascript/externs/openLayers/ol/ol/source/tileutfgrid.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/tileutfgrid.js rename to client/javascript/externs/openLayers/ol/ol/source/tileutfgrid.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/tilewms.js b/client/javascript/externs/openLayers/ol/ol/source/tilewms.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/tilewms.js rename to client/javascript/externs/openLayers/ol/ol/source/tilewms.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/urltile.js b/client/javascript/externs/openLayers/ol/ol/source/urltile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/urltile.js rename to client/javascript/externs/openLayers/ol/ol/source/urltile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/vector.js b/client/javascript/externs/openLayers/ol/ol/source/vector.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/vector.js rename to client/javascript/externs/openLayers/ol/ol/source/vector.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/vectoreventtype.js b/client/javascript/externs/openLayers/ol/ol/source/vectoreventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/vectoreventtype.js rename to client/javascript/externs/openLayers/ol/ol/source/vectoreventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/vectortile.js b/client/javascript/externs/openLayers/ol/ol/source/vectortile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/vectortile.js rename to client/javascript/externs/openLayers/ol/ol/source/vectortile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/wmsservertype.js b/client/javascript/externs/openLayers/ol/ol/source/wmsservertype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/wmsservertype.js rename to client/javascript/externs/openLayers/ol/ol/source/wmsservertype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/wmts.js b/client/javascript/externs/openLayers/ol/ol/source/wmts.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/wmts.js rename to client/javascript/externs/openLayers/ol/ol/source/wmts.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/wmtsrequestencoding.js b/client/javascript/externs/openLayers/ol/ol/source/wmtsrequestencoding.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/wmtsrequestencoding.js rename to client/javascript/externs/openLayers/ol/ol/source/wmtsrequestencoding.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/xyz.js b/client/javascript/externs/openLayers/ol/ol/source/xyz.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/xyz.js rename to client/javascript/externs/openLayers/ol/ol/source/xyz.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/source/zoomify.js b/client/javascript/externs/openLayers/ol/ol/source/zoomify.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/source/zoomify.js rename to client/javascript/externs/openLayers/ol/ol/source/zoomify.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/sphere.js b/client/javascript/externs/openLayers/ol/ol/sphere.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/sphere.js rename to client/javascript/externs/openLayers/ol/ol/sphere.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/string.js b/client/javascript/externs/openLayers/ol/ol/string.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/string.js rename to client/javascript/externs/openLayers/ol/ol/string.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/structs/linkedlist.js b/client/javascript/externs/openLayers/ol/ol/structs/linkedlist.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/structs/linkedlist.js rename to client/javascript/externs/openLayers/ol/ol/structs/linkedlist.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/structs/lrucache.js b/client/javascript/externs/openLayers/ol/ol/structs/lrucache.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/structs/lrucache.js rename to client/javascript/externs/openLayers/ol/ol/structs/lrucache.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/structs/priorityqueue.js b/client/javascript/externs/openLayers/ol/ol/structs/priorityqueue.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/structs/priorityqueue.js rename to client/javascript/externs/openLayers/ol/ol/structs/priorityqueue.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/structs/rbush.js b/client/javascript/externs/openLayers/ol/ol/structs/rbush.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/structs/rbush.js rename to client/javascript/externs/openLayers/ol/ol/structs/rbush.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style.js b/client/javascript/externs/openLayers/ol/ol/style.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style.js rename to client/javascript/externs/openLayers/ol/ol/style.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/atlas.js b/client/javascript/externs/openLayers/ol/ol/style/atlas.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/atlas.js rename to client/javascript/externs/openLayers/ol/ol/style/atlas.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/atlasmanager.js b/client/javascript/externs/openLayers/ol/ol/style/atlasmanager.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/atlasmanager.js rename to client/javascript/externs/openLayers/ol/ol/style/atlasmanager.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/circle.js b/client/javascript/externs/openLayers/ol/ol/style/circle.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/circle.js rename to client/javascript/externs/openLayers/ol/ol/style/circle.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/fill.js b/client/javascript/externs/openLayers/ol/ol/style/fill.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/fill.js rename to client/javascript/externs/openLayers/ol/ol/style/fill.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/icon.js b/client/javascript/externs/openLayers/ol/ol/style/icon.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/icon.js rename to client/javascript/externs/openLayers/ol/ol/style/icon.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/iconanchorunits.js b/client/javascript/externs/openLayers/ol/ol/style/iconanchorunits.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/iconanchorunits.js rename to client/javascript/externs/openLayers/ol/ol/style/iconanchorunits.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/iconimage.js b/client/javascript/externs/openLayers/ol/ol/style/iconimage.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/iconimage.js rename to client/javascript/externs/openLayers/ol/ol/style/iconimage.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/iconimagecache.js b/client/javascript/externs/openLayers/ol/ol/style/iconimagecache.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/iconimagecache.js rename to client/javascript/externs/openLayers/ol/ol/style/iconimagecache.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/iconorigin.js b/client/javascript/externs/openLayers/ol/ol/style/iconorigin.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/iconorigin.js rename to client/javascript/externs/openLayers/ol/ol/style/iconorigin.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/image.js b/client/javascript/externs/openLayers/ol/ol/style/image.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/image.js rename to client/javascript/externs/openLayers/ol/ol/style/image.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/index.jsdoc b/client/javascript/externs/openLayers/ol/ol/style/index.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/index.jsdoc rename to client/javascript/externs/openLayers/ol/ol/style/index.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/regularshape.js b/client/javascript/externs/openLayers/ol/ol/style/regularshape.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/regularshape.js rename to client/javascript/externs/openLayers/ol/ol/style/regularshape.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/stroke.js b/client/javascript/externs/openLayers/ol/ol/style/stroke.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/stroke.js rename to client/javascript/externs/openLayers/ol/ol/style/stroke.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/style.js b/client/javascript/externs/openLayers/ol/ol/style/style.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/style.js rename to client/javascript/externs/openLayers/ol/ol/style/style.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/text.js b/client/javascript/externs/openLayers/ol/ol/style/text.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/text.js rename to client/javascript/externs/openLayers/ol/ol/style/text.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/style/textplacement.js b/client/javascript/externs/openLayers/ol/ol/style/textplacement.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/style/textplacement.js rename to client/javascript/externs/openLayers/ol/ol/style/textplacement.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tile.js b/client/javascript/externs/openLayers/ol/ol/tile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tile.js rename to client/javascript/externs/openLayers/ol/ol/tile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tilecache.js b/client/javascript/externs/openLayers/ol/ol/tilecache.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tilecache.js rename to client/javascript/externs/openLayers/ol/ol/tilecache.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tilecoord.js b/client/javascript/externs/openLayers/ol/ol/tilecoord.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tilecoord.js rename to client/javascript/externs/openLayers/ol/ol/tilecoord.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tilegrid.js b/client/javascript/externs/openLayers/ol/ol/tilegrid.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tilegrid.js rename to client/javascript/externs/openLayers/ol/ol/tilegrid.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tilegrid/index.jsdoc b/client/javascript/externs/openLayers/ol/ol/tilegrid/index.jsdoc similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tilegrid/index.jsdoc rename to client/javascript/externs/openLayers/ol/ol/tilegrid/index.jsdoc diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tilegrid/tilegrid.js b/client/javascript/externs/openLayers/ol/ol/tilegrid/tilegrid.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tilegrid/tilegrid.js rename to client/javascript/externs/openLayers/ol/ol/tilegrid/tilegrid.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tilegrid/wmts.js b/client/javascript/externs/openLayers/ol/ol/tilegrid/wmts.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tilegrid/wmts.js rename to client/javascript/externs/openLayers/ol/ol/tilegrid/wmts.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tilequeue.js b/client/javascript/externs/openLayers/ol/ol/tilequeue.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tilequeue.js rename to client/javascript/externs/openLayers/ol/ol/tilequeue.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tilerange.js b/client/javascript/externs/openLayers/ol/ol/tilerange.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tilerange.js rename to client/javascript/externs/openLayers/ol/ol/tilerange.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tilestate.js b/client/javascript/externs/openLayers/ol/ol/tilestate.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tilestate.js rename to client/javascript/externs/openLayers/ol/ol/tilestate.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/tileurlfunction.js b/client/javascript/externs/openLayers/ol/ol/tileurlfunction.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/tileurlfunction.js rename to client/javascript/externs/openLayers/ol/ol/tileurlfunction.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/transform.js b/client/javascript/externs/openLayers/ol/ol/transform.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/transform.js rename to client/javascript/externs/openLayers/ol/ol/transform.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/typedefs.js b/client/javascript/externs/openLayers/ol/ol/typedefs.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/typedefs.js rename to client/javascript/externs/openLayers/ol/ol/typedefs.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/uri.js b/client/javascript/externs/openLayers/ol/ol/uri.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/uri.js rename to client/javascript/externs/openLayers/ol/ol/uri.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/vec/mat4.js b/client/javascript/externs/openLayers/ol/ol/vec/mat4.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/vec/mat4.js rename to client/javascript/externs/openLayers/ol/ol/vec/mat4.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/vectorimagetile.js b/client/javascript/externs/openLayers/ol/ol/vectorimagetile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/vectorimagetile.js rename to client/javascript/externs/openLayers/ol/ol/vectorimagetile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/vectortile.js b/client/javascript/externs/openLayers/ol/ol/vectortile.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/vectortile.js rename to client/javascript/externs/openLayers/ol/ol/vectortile.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/view.js b/client/javascript/externs/openLayers/ol/ol/view.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/view.js rename to client/javascript/externs/openLayers/ol/ol/view.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/viewhint.js b/client/javascript/externs/openLayers/ol/ol/viewhint.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/viewhint.js rename to client/javascript/externs/openLayers/ol/ol/viewhint.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/viewproperty.js b/client/javascript/externs/openLayers/ol/ol/viewproperty.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/viewproperty.js rename to client/javascript/externs/openLayers/ol/ol/viewproperty.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/webgl.js b/client/javascript/externs/openLayers/ol/ol/webgl.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/webgl.js rename to client/javascript/externs/openLayers/ol/ol/webgl.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/buffer.js b/client/javascript/externs/openLayers/ol/ol/webgl/buffer.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/buffer.js rename to client/javascript/externs/openLayers/ol/ol/webgl/buffer.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/context.js b/client/javascript/externs/openLayers/ol/ol/webgl/context.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/context.js rename to client/javascript/externs/openLayers/ol/ol/webgl/context.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/contexteventtype.js b/client/javascript/externs/openLayers/ol/ol/webgl/contexteventtype.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/contexteventtype.js rename to client/javascript/externs/openLayers/ol/ol/webgl/contexteventtype.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/fragment.js b/client/javascript/externs/openLayers/ol/ol/webgl/fragment.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/fragment.js rename to client/javascript/externs/openLayers/ol/ol/webgl/fragment.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/shader.js b/client/javascript/externs/openLayers/ol/ol/webgl/shader.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/shader.js rename to client/javascript/externs/openLayers/ol/ol/webgl/shader.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/shader.mustache b/client/javascript/externs/openLayers/ol/ol/webgl/shader.mustache similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/shader.mustache rename to client/javascript/externs/openLayers/ol/ol/webgl/shader.mustache diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/shaderlocations.mustache b/client/javascript/externs/openLayers/ol/ol/webgl/shaderlocations.mustache similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/shaderlocations.mustache rename to client/javascript/externs/openLayers/ol/ol/webgl/shaderlocations.mustache diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/vertex.js b/client/javascript/externs/openLayers/ol/ol/webgl/vertex.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/webgl/vertex.js rename to client/javascript/externs/openLayers/ol/ol/webgl/vertex.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol/ol/xml.js b/client/javascript/externs/openLayers/ol/ol/xml.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol/ol/xml.js rename to client/javascript/externs/openLayers/ol/ol/xml.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-ext/licence.txt b/client/javascript/externs/openLayers/ol3-ext/licence.txt similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-ext/licence.txt rename to client/javascript/externs/openLayers/ol3-ext/licence.txt diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-ext/readme.txt b/client/javascript/externs/openLayers/ol3-ext/readme.txt similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-ext/readme.txt rename to client/javascript/externs/openLayers/ol3-ext/readme.txt diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-ext/style/fonts/fontanc.def.js b/client/javascript/externs/openLayers/ol3-ext/style/fonts/fontanc.def.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-ext/style/fonts/fontanc.def.js rename to client/javascript/externs/openLayers/ol3-ext/style/fonts/fontanc.def.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-ext/style/fonts/fontawesome.def.js b/client/javascript/externs/openLayers/ol3-ext/style/fonts/fontawesome.def.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-ext/style/fonts/fontawesome.def.js rename to client/javascript/externs/openLayers/ol3-ext/style/fonts/fontawesome.def.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-ext/style/fonts/fontveremes.def.js b/client/javascript/externs/openLayers/ol3-ext/style/fonts/fontveremes.def.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-ext/style/fonts/fontveremes.def.js rename to client/javascript/externs/openLayers/ol3-ext/style/fonts/fontveremes.def.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-ext/style/fontsymbol.js b/client/javascript/externs/openLayers/ol3-ext/style/fontsymbol.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-ext/style/fontsymbol.js rename to client/javascript/externs/openLayers/ol3-ext/style/fontsymbol.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-ext/style/shadowstyle.js b/client/javascript/externs/openLayers/ol3-ext/style/shadowstyle.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-ext/style/shadowstyle.js rename to client/javascript/externs/openLayers/ol3-ext/style/shadowstyle.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-ext/utils/ol.ordering.js b/client/javascript/externs/openLayers/ol3-ext/utils/ol.ordering.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-ext/utils/ol.ordering.js rename to client/javascript/externs/openLayers/ol3-ext/utils/ol.ordering.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-veremes/mobilemodify.js b/client/javascript/externs/openLayers/ol3-veremes/mobilemodify.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-veremes/mobilemodify.js rename to client/javascript/externs/openLayers/ol3-veremes/mobilemodify.js diff --git a/src/vitis/client/javascript/externs/openLayers/ol3-veremes/ol.veremes.js b/client/javascript/externs/openLayers/ol3-veremes/ol.veremes.js similarity index 100% rename from src/vitis/client/javascript/externs/openLayers/ol3-veremes/ol.veremes.js rename to client/javascript/externs/openLayers/ol3-veremes/ol.veremes.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.bar_min.js b/client/javascript/externs/rgraph/RGraph.bar_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.bar_min.js rename to client/javascript/externs/rgraph/RGraph.bar_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.common.context_min.js b/client/javascript/externs/rgraph/RGraph.common.context_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.common.context_min.js rename to client/javascript/externs/rgraph/RGraph.common.context_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.common.core_min.js b/client/javascript/externs/rgraph/RGraph.common.core_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.common.core_min.js rename to client/javascript/externs/rgraph/RGraph.common.core_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.common.dynamic_min.js b/client/javascript/externs/rgraph/RGraph.common.dynamic_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.common.dynamic_min.js rename to client/javascript/externs/rgraph/RGraph.common.dynamic_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.common.effects_min.js b/client/javascript/externs/rgraph/RGraph.common.effects_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.common.effects_min.js rename to client/javascript/externs/rgraph/RGraph.common.effects_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.common.key_min.js b/client/javascript/externs/rgraph/RGraph.common.key_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.common.key_min.js rename to client/javascript/externs/rgraph/RGraph.common.key_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.common.tooltips_min.js b/client/javascript/externs/rgraph/RGraph.common.tooltips_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.common.tooltips_min.js rename to client/javascript/externs/rgraph/RGraph.common.tooltips_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.drawing.rect_min.js b/client/javascript/externs/rgraph/RGraph.drawing.rect_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.drawing.rect_min.js rename to client/javascript/externs/rgraph/RGraph.drawing.rect_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.drawing.text_min.js b/client/javascript/externs/rgraph/RGraph.drawing.text_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.drawing.text_min.js rename to client/javascript/externs/rgraph/RGraph.drawing.text_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.pie_min.js b/client/javascript/externs/rgraph/RGraph.pie_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.pie_min.js rename to client/javascript/externs/rgraph/RGraph.pie_min.js diff --git a/src/vitis/client/javascript/externs/rgraph/RGraph.scatter_min.js b/client/javascript/externs/rgraph/RGraph.scatter_min.js similarity index 100% rename from src/vitis/client/javascript/externs/rgraph/RGraph.scatter_min.js rename to client/javascript/externs/rgraph/RGraph.scatter_min.js diff --git a/src/vitis/client/javascript/externs/scripts_cryptage.js b/client/javascript/externs/scripts_cryptage.js similarity index 100% rename from src/vitis/client/javascript/externs/scripts_cryptage.js rename to client/javascript/externs/scripts_cryptage.js diff --git a/src/vitis/client/javascript/externs/showdown/showdown.js b/client/javascript/externs/showdown/showdown.js similarity index 100% rename from src/vitis/client/javascript/externs/showdown/showdown.js rename to client/javascript/externs/showdown/showdown.js diff --git a/src/vitis/client/javascript/externs/showdown/showdown.js.map b/client/javascript/externs/showdown/showdown.js.map similarity index 100% rename from src/vitis/client/javascript/externs/showdown/showdown.js.map rename to client/javascript/externs/showdown/showdown.js.map diff --git a/src/vitis/client/javascript/externs/showdown/showdown.min.js b/client/javascript/externs/showdown/showdown.min.js similarity index 100% rename from src/vitis/client/javascript/externs/showdown/showdown.min.js rename to client/javascript/externs/showdown/showdown.min.js diff --git a/src/vitis/client/javascript/externs/showdown/showdown.min.js.map b/client/javascript/externs/showdown/showdown.min.js.map similarity index 100% rename from src/vitis/client/javascript/externs/showdown/showdown.min.js.map rename to client/javascript/externs/showdown/showdown.min.js.map diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/ElementForm.js b/client/javascript/externs/studio/javascript/app/ElementForm.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/ElementForm.js rename to client/javascript/externs/studio/javascript/app/ElementForm.js diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/FormBuilder.js b/client/javascript/externs/studio/javascript/app/FormBuilder.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/FormBuilder.js rename to client/javascript/externs/studio/javascript/app/FormBuilder.js diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/FormTools.js b/client/javascript/externs/studio/javascript/app/FormTools.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/FormTools.js rename to client/javascript/externs/studio/javascript/app/FormTools.js diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/JsonLoader.js b/client/javascript/externs/studio/javascript/app/JsonLoader.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/JsonLoader.js rename to client/javascript/externs/studio/javascript/app/JsonLoader.js diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/Utils.js b/client/javascript/externs/studio/javascript/app/Utils.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/Utils.js rename to client/javascript/externs/studio/javascript/app/Utils.js diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/Visualizer.js b/client/javascript/externs/studio/javascript/app/Visualizer.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/Visualizer.js rename to client/javascript/externs/studio/javascript/app/Visualizer.js diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/VisualizerMode/CssMode.js b/client/javascript/externs/studio/javascript/app/VisualizerMode/CssMode.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/VisualizerMode/CssMode.js rename to client/javascript/externs/studio/javascript/app/VisualizerMode/CssMode.js diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/VisualizerMode/FormMode.js b/client/javascript/externs/studio/javascript/app/VisualizerMode/FormMode.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/VisualizerMode/FormMode.js rename to client/javascript/externs/studio/javascript/app/VisualizerMode/FormMode.js diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/VisualizerMode/JsMode.js b/client/javascript/externs/studio/javascript/app/VisualizerMode/JsMode.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/VisualizerMode/JsMode.js rename to client/javascript/externs/studio/javascript/app/VisualizerMode/JsMode.js diff --git a/src/vitis/client/javascript/externs/studio/javascript/app/VisualizerMode/JsonMode.js b/client/javascript/externs/studio/javascript/app/VisualizerMode/JsonMode.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/javascript/app/VisualizerMode/JsonMode.js rename to client/javascript/externs/studio/javascript/app/VisualizerMode/JsonMode.js diff --git a/src/vitis/client/javascript/externs/studio/lang/lang-en.json b/client/javascript/externs/studio/lang/lang-en.json similarity index 100% rename from src/vitis/client/javascript/externs/studio/lang/lang-en.json rename to client/javascript/externs/studio/lang/lang-en.json diff --git a/src/vitis/client/javascript/externs/studio/lang/lang-fr.json b/client/javascript/externs/studio/lang/lang-fr.json similarity index 100% rename from src/vitis/client/javascript/externs/studio/lang/lang-fr.json rename to client/javascript/externs/studio/lang/lang-fr.json diff --git a/src/vitis/client/javascript/externs/studio/less/CodeMirror.less b/client/javascript/externs/studio/less/CodeMirror.less similarity index 100% rename from src/vitis/client/javascript/externs/studio/less/CodeMirror.less rename to client/javascript/externs/studio/less/CodeMirror.less diff --git a/src/vitis/client/javascript/externs/studio/less/studio.less b/client/javascript/externs/studio/less/studio.less similarity index 100% rename from src/vitis/client/javascript/externs/studio/less/studio.less rename to client/javascript/externs/studio/less/studio.less diff --git a/src/vitis/client/javascript/externs/studio/properties/properties.js b/client/javascript/externs/studio/properties/properties.js similarity index 100% rename from src/vitis/client/javascript/externs/studio/properties/properties.js rename to client/javascript/externs/studio/properties/properties.js diff --git a/src/vitis/client/javascript/externs/studio/templates/Componant/Map.html b/client/javascript/externs/studio/templates/Componant/Map.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/Componant/Map.html rename to client/javascript/externs/studio/templates/Componant/Map.html diff --git a/src/vitis/client/javascript/externs/studio/templates/ElementForm.html b/client/javascript/externs/studio/templates/ElementForm.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/ElementForm.html rename to client/javascript/externs/studio/templates/ElementForm.html diff --git a/src/vitis/client/javascript/externs/studio/templates/FormTools.html b/client/javascript/externs/studio/templates/FormTools.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/FormTools.html rename to client/javascript/externs/studio/templates/FormTools.html diff --git a/src/vitis/client/javascript/externs/studio/templates/JsonLoader.html b/client/javascript/externs/studio/templates/JsonLoader.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/JsonLoader.html rename to client/javascript/externs/studio/templates/JsonLoader.html diff --git a/src/vitis/client/javascript/externs/studio/templates/MainTemplate.html b/client/javascript/externs/studio/templates/MainTemplate.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/MainTemplate.html rename to client/javascript/externs/studio/templates/MainTemplate.html diff --git a/src/vitis/client/javascript/externs/studio/templates/Visualizer.html b/client/javascript/externs/studio/templates/Visualizer.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/Visualizer.html rename to client/javascript/externs/studio/templates/Visualizer.html diff --git a/src/vitis/client/javascript/externs/studio/templates/VisualizerMode/CssMode.html b/client/javascript/externs/studio/templates/VisualizerMode/CssMode.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/VisualizerMode/CssMode.html rename to client/javascript/externs/studio/templates/VisualizerMode/CssMode.html diff --git a/src/vitis/client/javascript/externs/studio/templates/VisualizerMode/FormMode.html b/client/javascript/externs/studio/templates/VisualizerMode/FormMode.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/VisualizerMode/FormMode.html rename to client/javascript/externs/studio/templates/VisualizerMode/FormMode.html diff --git a/src/vitis/client/javascript/externs/studio/templates/VisualizerMode/JsMode.html b/client/javascript/externs/studio/templates/VisualizerMode/JsMode.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/VisualizerMode/JsMode.html rename to client/javascript/externs/studio/templates/VisualizerMode/JsMode.html diff --git a/src/vitis/client/javascript/externs/studio/templates/VisualizerMode/JsonMode.html b/client/javascript/externs/studio/templates/VisualizerMode/JsonMode.html similarity index 100% rename from src/vitis/client/javascript/externs/studio/templates/VisualizerMode/JsonMode.html rename to client/javascript/externs/studio/templates/VisualizerMode/JsonMode.html diff --git a/src/vitis/client/javascript/externs/tinymce/LICENSE.TXT b/client/javascript/externs/tinymce/LICENSE.TXT similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/LICENSE.TXT rename to client/javascript/externs/tinymce/LICENSE.TXT diff --git a/src/vitis/client/javascript/externs/tinymce/langs/fr_FR.js b/client/javascript/externs/tinymce/langs/fr_FR.js similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/langs/fr_FR.js rename to client/javascript/externs/tinymce/langs/fr_FR.js diff --git a/src/vitis/client/javascript/externs/tinymce/plugins/image/plugin.min.js b/client/javascript/externs/tinymce/plugins/image/plugin.min.js similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/plugins/image/plugin.min.js rename to client/javascript/externs/tinymce/plugins/image/plugin.min.js diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/content.inline.min.css b/client/javascript/externs/tinymce/skins/lightgray/content.inline.min.css similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/content.inline.min.css rename to client/javascript/externs/tinymce/skins/lightgray/content.inline.min.css diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/content.min.css b/client/javascript/externs/tinymce/skins/lightgray/content.min.css similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/content.min.css rename to client/javascript/externs/tinymce/skins/lightgray/content.min.css diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.eot b/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.eot similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.eot rename to client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.eot diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.svg b/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.svg similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.svg rename to client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.svg diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.ttf b/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.ttf similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.ttf rename to client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.ttf diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.woff b/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.woff similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.woff rename to client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce-small.woff diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.eot b/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.eot similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.eot rename to client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.eot diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.svg b/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.svg similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.svg rename to client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.svg diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.ttf b/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.ttf similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.ttf rename to client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.ttf diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.woff b/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.woff similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.woff rename to client/javascript/externs/tinymce/skins/lightgray/fonts/tinymce.woff diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/img/anchor.gif b/client/javascript/externs/tinymce/skins/lightgray/img/anchor.gif similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/img/anchor.gif rename to client/javascript/externs/tinymce/skins/lightgray/img/anchor.gif diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/img/loader.gif b/client/javascript/externs/tinymce/skins/lightgray/img/loader.gif similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/img/loader.gif rename to client/javascript/externs/tinymce/skins/lightgray/img/loader.gif diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/img/object.gif b/client/javascript/externs/tinymce/skins/lightgray/img/object.gif similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/img/object.gif rename to client/javascript/externs/tinymce/skins/lightgray/img/object.gif diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/img/trans.gif b/client/javascript/externs/tinymce/skins/lightgray/img/trans.gif similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/img/trans.gif rename to client/javascript/externs/tinymce/skins/lightgray/img/trans.gif diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/skin.ie7.min.css b/client/javascript/externs/tinymce/skins/lightgray/skin.ie7.min.css similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/skin.ie7.min.css rename to client/javascript/externs/tinymce/skins/lightgray/skin.ie7.min.css diff --git a/src/vitis/client/javascript/externs/tinymce/skins/lightgray/skin.min.css b/client/javascript/externs/tinymce/skins/lightgray/skin.min.css similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/skins/lightgray/skin.min.css rename to client/javascript/externs/tinymce/skins/lightgray/skin.min.css diff --git a/src/vitis/client/javascript/externs/tinymce/themes/modern/theme.min.js b/client/javascript/externs/tinymce/themes/modern/theme.min.js similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/themes/modern/theme.min.js rename to client/javascript/externs/tinymce/themes/modern/theme.min.js diff --git a/src/vitis/client/javascript/externs/tinymce/tinymce.min.js b/client/javascript/externs/tinymce/tinymce.min.js similarity index 100% rename from src/vitis/client/javascript/externs/tinymce/tinymce.min.js rename to client/javascript/externs/tinymce/tinymce.min.js diff --git a/src/vitis/client/javascript/externs/underscore-min.js b/client/javascript/externs/underscore-min.js similarity index 100% rename from src/vitis/client/javascript/externs/underscore-min.js rename to client/javascript/externs/underscore-min.js diff --git a/src/vitis/client/javascript/externs/underscore.js b/client/javascript/externs/underscore.js similarity index 100% rename from src/vitis/client/javascript/externs/underscore.js rename to client/javascript/externs/underscore.js diff --git a/src/vitis/client/javascript/externs/viewer/Apache-License-2.0.txt b/client/javascript/externs/viewer/Apache-License-2.0.txt similarity index 100% rename from src/vitis/client/javascript/externs/viewer/Apache-License-2.0.txt rename to client/javascript/externs/viewer/Apache-License-2.0.txt diff --git a/src/vitis/client/javascript/externs/viewer/viewer.min.js b/client/javascript/externs/viewer/viewer.min.js similarity index 100% rename from src/vitis/client/javascript/externs/viewer/viewer.min.js rename to client/javascript/externs/viewer/viewer.min.js diff --git a/src/vitis/client/javascript/require/requireVitis.js b/client/javascript/require/requireVitis.js similarity index 100% rename from src/vitis/client/javascript/require/requireVitis.js rename to client/javascript/require/requireVitis.js diff --git a/src/vitis/client/javascript/test/e2e/Output/order/htmlReport.html b/client/javascript/test/e2e/Output/order/htmlReport.html similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/htmlReport.html rename to client/javascript/test/e2e/Output/order/htmlReport.html diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/1fe7143891469e980d1fcca05a66b3a2.png b/client/javascript/test/e2e/Output/order/images/1fe7143891469e980d1fcca05a66b3a2.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/1fe7143891469e980d1fcca05a66b3a2.png rename to client/javascript/test/e2e/Output/order/images/1fe7143891469e980d1fcca05a66b3a2.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/22a14751fa17bd62335ee88ba6c6f9e6.png b/client/javascript/test/e2e/Output/order/images/22a14751fa17bd62335ee88ba6c6f9e6.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/22a14751fa17bd62335ee88ba6c6f9e6.png rename to client/javascript/test/e2e/Output/order/images/22a14751fa17bd62335ee88ba6c6f9e6.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/286dc054fdb1ed4e3c1a14730da91fe3.png b/client/javascript/test/e2e/Output/order/images/286dc054fdb1ed4e3c1a14730da91fe3.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/286dc054fdb1ed4e3c1a14730da91fe3.png rename to client/javascript/test/e2e/Output/order/images/286dc054fdb1ed4e3c1a14730da91fe3.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/446e6e12b1a4a349745acaa42b1fd65d.png b/client/javascript/test/e2e/Output/order/images/446e6e12b1a4a349745acaa42b1fd65d.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/446e6e12b1a4a349745acaa42b1fd65d.png rename to client/javascript/test/e2e/Output/order/images/446e6e12b1a4a349745acaa42b1fd65d.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/4e6851a1377af65074210820d5903ea4.png b/client/javascript/test/e2e/Output/order/images/4e6851a1377af65074210820d5903ea4.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/4e6851a1377af65074210820d5903ea4.png rename to client/javascript/test/e2e/Output/order/images/4e6851a1377af65074210820d5903ea4.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/52280521fa920cd916802fa7bf0752c1.png b/client/javascript/test/e2e/Output/order/images/52280521fa920cd916802fa7bf0752c1.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/52280521fa920cd916802fa7bf0752c1.png rename to client/javascript/test/e2e/Output/order/images/52280521fa920cd916802fa7bf0752c1.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/565819f55fb9493820b1f462eb1469af.png b/client/javascript/test/e2e/Output/order/images/565819f55fb9493820b1f462eb1469af.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/565819f55fb9493820b1f462eb1469af.png rename to client/javascript/test/e2e/Output/order/images/565819f55fb9493820b1f462eb1469af.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/5ef9ed38ebad6379a04897ec6f383aeb.png b/client/javascript/test/e2e/Output/order/images/5ef9ed38ebad6379a04897ec6f383aeb.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/5ef9ed38ebad6379a04897ec6f383aeb.png rename to client/javascript/test/e2e/Output/order/images/5ef9ed38ebad6379a04897ec6f383aeb.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/6c0be7e24610a0144c94df2e1c691718.png b/client/javascript/test/e2e/Output/order/images/6c0be7e24610a0144c94df2e1c691718.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/6c0be7e24610a0144c94df2e1c691718.png rename to client/javascript/test/e2e/Output/order/images/6c0be7e24610a0144c94df2e1c691718.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/85bd21280813079f2797df7a66b953ec.png b/client/javascript/test/e2e/Output/order/images/85bd21280813079f2797df7a66b953ec.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/85bd21280813079f2797df7a66b953ec.png rename to client/javascript/test/e2e/Output/order/images/85bd21280813079f2797df7a66b953ec.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/9d224f9d204337458fa46ab0f4b4a3f9.png b/client/javascript/test/e2e/Output/order/images/9d224f9d204337458fa46ab0f4b4a3f9.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/9d224f9d204337458fa46ab0f4b4a3f9.png rename to client/javascript/test/e2e/Output/order/images/9d224f9d204337458fa46ab0f4b4a3f9.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/a971981cadcc1dafd26000f39ea8a68a.png b/client/javascript/test/e2e/Output/order/images/a971981cadcc1dafd26000f39ea8a68a.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/a971981cadcc1dafd26000f39ea8a68a.png rename to client/javascript/test/e2e/Output/order/images/a971981cadcc1dafd26000f39ea8a68a.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/aa05ad4c25af482047fb6ea3951a4ed9.png b/client/javascript/test/e2e/Output/order/images/aa05ad4c25af482047fb6ea3951a4ed9.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/aa05ad4c25af482047fb6ea3951a4ed9.png rename to client/javascript/test/e2e/Output/order/images/aa05ad4c25af482047fb6ea3951a4ed9.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/cb30486ebf3bd7f9aaa687cc51e07134.png b/client/javascript/test/e2e/Output/order/images/cb30486ebf3bd7f9aaa687cc51e07134.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/cb30486ebf3bd7f9aaa687cc51e07134.png rename to client/javascript/test/e2e/Output/order/images/cb30486ebf3bd7f9aaa687cc51e07134.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/d236806b20deffd8ce0f6393acda549e.png b/client/javascript/test/e2e/Output/order/images/d236806b20deffd8ce0f6393acda549e.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/d236806b20deffd8ce0f6393acda549e.png rename to client/javascript/test/e2e/Output/order/images/d236806b20deffd8ce0f6393acda549e.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/e11cf5a8b029208fb74fb66c82acc314.png b/client/javascript/test/e2e/Output/order/images/e11cf5a8b029208fb74fb66c82acc314.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/e11cf5a8b029208fb74fb66c82acc314.png rename to client/javascript/test/e2e/Output/order/images/e11cf5a8b029208fb74fb66c82acc314.png diff --git a/src/vitis/client/javascript/test/e2e/Output/order/images/fd3ebf7f15da963e0243b0763ccf4888.png b/client/javascript/test/e2e/Output/order/images/fd3ebf7f15da963e0243b0763ccf4888.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/order/images/fd3ebf7f15da963e0243b0763ccf4888.png rename to client/javascript/test/e2e/Output/order/images/fd3ebf7f15da963e0243b0763ccf4888.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/htmlReport.html b/client/javascript/test/e2e/Output/publication/htmlReport.html similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/htmlReport.html rename to client/javascript/test/e2e/Output/publication/htmlReport.html diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/1a593987e7ca4240d8dfa7d6611b79e7.png b/client/javascript/test/e2e/Output/publication/images/1a593987e7ca4240d8dfa7d6611b79e7.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/1a593987e7ca4240d8dfa7d6611b79e7.png rename to client/javascript/test/e2e/Output/publication/images/1a593987e7ca4240d8dfa7d6611b79e7.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/29ff6bceadd409d2da0d4e1ffe3146ec.png b/client/javascript/test/e2e/Output/publication/images/29ff6bceadd409d2da0d4e1ffe3146ec.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/29ff6bceadd409d2da0d4e1ffe3146ec.png rename to client/javascript/test/e2e/Output/publication/images/29ff6bceadd409d2da0d4e1ffe3146ec.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/31d7ecf9dd49ad85104ef4b491582c27.png b/client/javascript/test/e2e/Output/publication/images/31d7ecf9dd49ad85104ef4b491582c27.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/31d7ecf9dd49ad85104ef4b491582c27.png rename to client/javascript/test/e2e/Output/publication/images/31d7ecf9dd49ad85104ef4b491582c27.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/3d588c2cc178ebbc6085fdbac873049b.png b/client/javascript/test/e2e/Output/publication/images/3d588c2cc178ebbc6085fdbac873049b.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/3d588c2cc178ebbc6085fdbac873049b.png rename to client/javascript/test/e2e/Output/publication/images/3d588c2cc178ebbc6085fdbac873049b.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/66864911363c5dfa802360f4cd169d15.png b/client/javascript/test/e2e/Output/publication/images/66864911363c5dfa802360f4cd169d15.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/66864911363c5dfa802360f4cd169d15.png rename to client/javascript/test/e2e/Output/publication/images/66864911363c5dfa802360f4cd169d15.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/71acb5849026bc31c2e1a3efaf750c8c.png b/client/javascript/test/e2e/Output/publication/images/71acb5849026bc31c2e1a3efaf750c8c.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/71acb5849026bc31c2e1a3efaf750c8c.png rename to client/javascript/test/e2e/Output/publication/images/71acb5849026bc31c2e1a3efaf750c8c.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/859d507231ab559be0caa350c33361b0.png b/client/javascript/test/e2e/Output/publication/images/859d507231ab559be0caa350c33361b0.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/859d507231ab559be0caa350c33361b0.png rename to client/javascript/test/e2e/Output/publication/images/859d507231ab559be0caa350c33361b0.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/9bbbcfee24b1eeadfe4cbebce3d68f37.png b/client/javascript/test/e2e/Output/publication/images/9bbbcfee24b1eeadfe4cbebce3d68f37.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/9bbbcfee24b1eeadfe4cbebce3d68f37.png rename to client/javascript/test/e2e/Output/publication/images/9bbbcfee24b1eeadfe4cbebce3d68f37.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/ac9d916cef66cf3b0c6dc04361fc8c7a.png b/client/javascript/test/e2e/Output/publication/images/ac9d916cef66cf3b0c6dc04361fc8c7a.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/ac9d916cef66cf3b0c6dc04361fc8c7a.png rename to client/javascript/test/e2e/Output/publication/images/ac9d916cef66cf3b0c6dc04361fc8c7a.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/b9c0bafaae0a695509eb679f32d7bbc4.png b/client/javascript/test/e2e/Output/publication/images/b9c0bafaae0a695509eb679f32d7bbc4.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/b9c0bafaae0a695509eb679f32d7bbc4.png rename to client/javascript/test/e2e/Output/publication/images/b9c0bafaae0a695509eb679f32d7bbc4.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/b9ddfa35957bf67b37ae22b31d8d2467.png b/client/javascript/test/e2e/Output/publication/images/b9ddfa35957bf67b37ae22b31d8d2467.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/b9ddfa35957bf67b37ae22b31d8d2467.png rename to client/javascript/test/e2e/Output/publication/images/b9ddfa35957bf67b37ae22b31d8d2467.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/c4beb465fd449624d359f3471d6ee4c1.png b/client/javascript/test/e2e/Output/publication/images/c4beb465fd449624d359f3471d6ee4c1.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/c4beb465fd449624d359f3471d6ee4c1.png rename to client/javascript/test/e2e/Output/publication/images/c4beb465fd449624d359f3471d6ee4c1.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/d044896b4c0e135963e4cc03d2381d56.png b/client/javascript/test/e2e/Output/publication/images/d044896b4c0e135963e4cc03d2381d56.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/d044896b4c0e135963e4cc03d2381d56.png rename to client/javascript/test/e2e/Output/publication/images/d044896b4c0e135963e4cc03d2381d56.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/e0eec7bfffe9f6b747cb85db357889a0.png b/client/javascript/test/e2e/Output/publication/images/e0eec7bfffe9f6b747cb85db357889a0.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/e0eec7bfffe9f6b747cb85db357889a0.png rename to client/javascript/test/e2e/Output/publication/images/e0eec7bfffe9f6b747cb85db357889a0.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/e589e1728c06bfa8de1a8a9ce5a24b4d.png b/client/javascript/test/e2e/Output/publication/images/e589e1728c06bfa8de1a8a9ce5a24b4d.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/e589e1728c06bfa8de1a8a9ce5a24b4d.png rename to client/javascript/test/e2e/Output/publication/images/e589e1728c06bfa8de1a8a9ce5a24b4d.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/e630b1b432c5ec391a0625040a7b7ba8.png b/client/javascript/test/e2e/Output/publication/images/e630b1b432c5ec391a0625040a7b7ba8.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/e630b1b432c5ec391a0625040a7b7ba8.png rename to client/javascript/test/e2e/Output/publication/images/e630b1b432c5ec391a0625040a7b7ba8.png diff --git a/src/vitis/client/javascript/test/e2e/Output/publication/images/ff2cdf03ef3a270449425608d47b23a0.png b/client/javascript/test/e2e/Output/publication/images/ff2cdf03ef3a270449425608d47b23a0.png similarity index 100% rename from src/vitis/client/javascript/test/e2e/Output/publication/images/ff2cdf03ef3a270449425608d47b23a0.png rename to client/javascript/test/e2e/Output/publication/images/ff2cdf03ef3a270449425608d47b23a0.png diff --git a/src/vitis/client/javascript/test/e2e/VeremesTest.js b/client/javascript/test/e2e/VeremesTest.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/VeremesTest.js rename to client/javascript/test/e2e/VeremesTest.js diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_abonnement.bat b/client/javascript/test/e2e/cu_vitis_abonnement.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_abonnement.bat rename to client/javascript/test/e2e/cu_vitis_abonnement.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_ad.bat b/client/javascript/test/e2e/cu_vitis_ad.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_ad.bat rename to client/javascript/test/e2e/cu_vitis_ad.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_categorie.bat b/client/javascript/test/e2e/cu_vitis_categorie.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_categorie.bat rename to client/javascript/test/e2e/cu_vitis_categorie.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_depot.bat b/client/javascript/test/e2e/cu_vitis_depot.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_depot.bat rename to client/javascript/test/e2e/cu_vitis_depot.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_fichiers_interdits.bat b/client/javascript/test/e2e/cu_vitis_fichiers_interdits.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_fichiers_interdits.bat rename to client/javascript/test/e2e/cu_vitis_fichiers_interdits.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_filter.bat b/client/javascript/test/e2e/cu_vitis_filter.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_filter.bat rename to client/javascript/test/e2e/cu_vitis_filter.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_formulaire.bat b/client/javascript/test/e2e/cu_vitis_formulaire.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_formulaire.bat rename to client/javascript/test/e2e/cu_vitis_formulaire.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_import_export.bat b/client/javascript/test/e2e/cu_vitis_import_export.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_import_export.bat rename to client/javascript/test/e2e/cu_vitis_import_export.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_ip.bat b/client/javascript/test/e2e/cu_vitis_ip.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_ip.bat rename to client/javascript/test/e2e/cu_vitis_ip.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_lot.bat b/client/javascript/test/e2e/cu_vitis_lot.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_lot.bat rename to client/javascript/test/e2e/cu_vitis_lot.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_metadata.bat b/client/javascript/test/e2e/cu_vitis_metadata.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_metadata.bat rename to client/javascript/test/e2e/cu_vitis_metadata.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_moteurs.bat b/client/javascript/test/e2e/cu_vitis_moteurs.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_moteurs.bat rename to client/javascript/test/e2e/cu_vitis_moteurs.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_order.bat b/client/javascript/test/e2e/cu_vitis_order.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_order.bat rename to client/javascript/test/e2e/cu_vitis_order.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_publication.bat b/client/javascript/test/e2e/cu_vitis_publication.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_publication.bat rename to client/javascript/test/e2e/cu_vitis_publication.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_unicite.bat b/client/javascript/test/e2e/cu_vitis_unicite.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_unicite.bat rename to client/javascript/test/e2e/cu_vitis_unicite.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_upload.bat b/client/javascript/test/e2e/cu_vitis_upload.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_upload.bat rename to client/javascript/test/e2e/cu_vitis_upload.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_upload_fmw.bat b/client/javascript/test/e2e/cu_vitis_upload_fmw.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_upload_fmw.bat rename to client/javascript/test/e2e/cu_vitis_upload_fmw.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_upload_zip.bat b/client/javascript/test/e2e/cu_vitis_upload_zip.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_upload_zip.bat rename to client/javascript/test/e2e/cu_vitis_upload_zip.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_user_existant.bat b/client/javascript/test/e2e/cu_vitis_user_existant.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_user_existant.bat rename to client/javascript/test/e2e/cu_vitis_user_existant.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_users.bat b/client/javascript/test/e2e/cu_vitis_users.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_users.bat rename to client/javascript/test/e2e/cu_vitis_users.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_users_linux.bat b/client/javascript/test/e2e/cu_vitis_users_linux.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_users_linux.bat rename to client/javascript/test/e2e/cu_vitis_users_linux.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_users_speciaux.bat b/client/javascript/test/e2e/cu_vitis_users_speciaux.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_users_speciaux.bat rename to client/javascript/test/e2e/cu_vitis_users_speciaux.bat diff --git a/src/vitis/client/javascript/test/e2e/cu_vitis_verrouillage_projet.bat b/client/javascript/test/e2e/cu_vitis_verrouillage_projet.bat similarity index 100% rename from src/vitis/client/javascript/test/e2e/cu_vitis_verrouillage_projet.bat rename to client/javascript/test/e2e/cu_vitis_verrouillage_projet.bat diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/.npmignore b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/.npmignore similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/.npmignore rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/.npmignore diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/README.md b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/README.md similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/README.md rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/README.md diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/index.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/index.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/index.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/index.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/.bin/mkdirp b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/.bin/mkdirp similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/.bin/mkdirp rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/.bin/mkdirp diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/.bin/mkdirp.cmd b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/.bin/mkdirp.cmd similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/.bin/mkdirp.cmd rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/.bin/mkdirp.cmd diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/README.markdown b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/README.markdown similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/README.markdown rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/README.markdown diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/example/hat.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/example/hat.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/example/hat.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/example/hat.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/example/rack.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/example/rack.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/example/rack.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/example/rack.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/index.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/index.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/index.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/index.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/package.json b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/package.json similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/package.json rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/package.json diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/test/id.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/test/id.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/test/id.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/test/id.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/test/rack.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/test/rack.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/test/rack.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/hat/test/rack.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/LICENSE b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/LICENSE similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/LICENSE rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/LICENSE diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/README.md b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/README.md similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/README.md rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/README.md diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/chunk.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/chunk.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/chunk.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/chunk.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/compact.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/compact.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/compact.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/compact.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/difference.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/difference.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/difference.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/difference.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/drop.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/drop.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/drop.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/drop.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropRightWhile.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropRightWhile.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropRightWhile.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropRightWhile.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropWhile.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropWhile.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropWhile.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/dropWhile.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/fill.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/fill.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/fill.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/fill.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/findIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/findIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/findIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/findIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/findLastIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/findLastIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/findLastIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/findLastIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/first.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/first.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/first.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/first.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/flatten.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/flatten.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/flatten.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/flatten.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/flattenDeep.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/flattenDeep.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/flattenDeep.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/flattenDeep.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/head.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/head.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/head.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/head.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/indexOf.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/indexOf.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/indexOf.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/indexOf.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/initial.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/initial.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/initial.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/initial.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/intersection.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/intersection.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/intersection.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/intersection.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/last.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/last.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/last.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/last.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/lastIndexOf.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/lastIndexOf.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/lastIndexOf.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/lastIndexOf.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/object.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/object.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/object.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/object.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/pull.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/pull.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/pull.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/pull.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/pullAt.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/pullAt.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/pullAt.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/pullAt.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/remove.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/remove.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/remove.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/remove.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/rest.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/rest.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/rest.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/rest.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/slice.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/slice.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/slice.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/slice.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/sortedIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/sortedIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/sortedIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/sortedIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/sortedLastIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/sortedLastIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/sortedLastIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/sortedLastIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/tail.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/tail.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/tail.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/tail.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/take.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/take.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/take.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/take.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeRightWhile.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeRightWhile.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeRightWhile.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeRightWhile.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeWhile.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeWhile.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeWhile.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/takeWhile.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/union.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/union.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/union.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/union.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/uniq.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/uniq.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/uniq.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/uniq.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unique.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unique.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unique.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unique.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unzip.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unzip.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unzip.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unzip.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unzipWith.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unzipWith.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unzipWith.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/unzipWith.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/without.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/without.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/without.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/without.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/xor.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/xor.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/xor.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/xor.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zip.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zip.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zip.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zip.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zipObject.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zipObject.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zipObject.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zipObject.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zipWith.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zipWith.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zipWith.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/array/zipWith.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/chain.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/chain.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/chain.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/chain.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/commit.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/commit.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/commit.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/commit.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/concat.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/concat.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/concat.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/concat.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/lodash.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/lodash.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/lodash.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/lodash.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/plant.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/plant.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/plant.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/plant.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/reverse.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/reverse.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/reverse.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/reverse.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/run.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/run.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/run.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/run.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/tap.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/tap.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/tap.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/tap.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/thru.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/thru.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/thru.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/thru.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/toJSON.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/toJSON.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/toJSON.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/toJSON.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/toString.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/toString.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/toString.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/toString.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/value.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/value.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/value.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/value.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/valueOf.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/valueOf.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/valueOf.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/valueOf.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperChain.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperChain.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperChain.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperChain.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperCommit.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperCommit.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperCommit.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperCommit.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperConcat.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperConcat.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperConcat.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperConcat.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperPlant.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperPlant.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperPlant.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperPlant.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperReverse.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperReverse.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperReverse.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperReverse.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperToString.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperToString.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperToString.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperToString.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperValue.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperValue.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperValue.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/chain/wrapperValue.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/all.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/all.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/all.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/all.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/any.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/any.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/any.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/any.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/at.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/at.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/at.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/at.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/collect.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/collect.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/collect.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/collect.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/contains.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/contains.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/contains.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/contains.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/countBy.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/countBy.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/countBy.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/countBy.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/detect.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/detect.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/detect.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/detect.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/each.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/each.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/each.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/each.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/eachRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/eachRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/eachRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/eachRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/every.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/every.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/every.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/every.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/filter.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/filter.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/filter.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/filter.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/find.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/find.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/find.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/find.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/findLast.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/findLast.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/findLast.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/findLast.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/findWhere.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/findWhere.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/findWhere.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/findWhere.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/foldl.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/foldl.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/foldl.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/foldl.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/foldr.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/foldr.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/foldr.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/foldr.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/forEach.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/forEach.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/forEach.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/forEach.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/forEachRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/forEachRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/forEachRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/forEachRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/groupBy.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/groupBy.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/groupBy.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/groupBy.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/include.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/include.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/include.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/include.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/includes.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/includes.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/includes.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/includes.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/indexBy.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/indexBy.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/indexBy.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/indexBy.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/inject.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/inject.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/inject.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/inject.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/invoke.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/invoke.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/invoke.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/invoke.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/map.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/map.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/map.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/map.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/max.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/max.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/max.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/max.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/min.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/min.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/min.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/min.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/partition.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/partition.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/partition.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/partition.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/pluck.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/pluck.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/pluck.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/pluck.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reduce.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reduce.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reduce.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reduce.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reduceRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reduceRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reduceRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reduceRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reject.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reject.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reject.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/reject.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sample.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sample.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sample.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sample.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/select.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/select.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/select.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/select.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/shuffle.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/shuffle.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/shuffle.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/shuffle.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/size.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/size.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/size.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/size.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/some.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/some.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/some.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/some.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortBy.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortBy.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortBy.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortBy.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortByAll.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortByAll.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortByAll.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortByAll.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortByOrder.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortByOrder.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortByOrder.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sortByOrder.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sum.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sum.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sum.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/sum.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/where.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/where.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/where.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/collection/where.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/date.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/date.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/date.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/date.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/date/now.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/date/now.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/date/now.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/date/now.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/after.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/after.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/after.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/after.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/ary.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/ary.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/ary.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/ary.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/backflow.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/backflow.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/backflow.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/backflow.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/before.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/before.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/before.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/before.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bind.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bind.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bind.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bind.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bindAll.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bindAll.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bindAll.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bindAll.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bindKey.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bindKey.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bindKey.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/bindKey.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/compose.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/compose.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/compose.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/compose.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/curry.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/curry.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/curry.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/curry.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/curryRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/curryRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/curryRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/curryRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/debounce.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/debounce.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/debounce.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/debounce.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/defer.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/defer.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/defer.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/defer.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/delay.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/delay.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/delay.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/delay.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/flow.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/flow.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/flow.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/flow.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/flowRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/flowRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/flowRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/flowRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/memoize.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/memoize.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/memoize.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/memoize.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/modArgs.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/modArgs.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/modArgs.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/modArgs.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/negate.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/negate.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/negate.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/negate.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/once.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/once.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/once.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/once.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/partial.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/partial.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/partial.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/partial.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/partialRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/partialRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/partialRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/partialRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/rearg.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/rearg.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/rearg.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/rearg.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/restParam.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/restParam.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/restParam.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/restParam.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/spread.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/spread.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/spread.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/spread.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/throttle.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/throttle.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/throttle.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/throttle.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/wrap.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/wrap.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/wrap.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/function/wrap.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/index.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/index.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/index.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/index.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/LazyWrapper.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/LazyWrapper.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/LazyWrapper.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/LazyWrapper.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/LodashWrapper.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/LodashWrapper.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/LodashWrapper.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/LodashWrapper.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/MapCache.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/MapCache.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/MapCache.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/MapCache.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/SetCache.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/SetCache.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/SetCache.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/SetCache.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayConcat.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayConcat.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayConcat.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayConcat.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayCopy.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayCopy.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayCopy.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayCopy.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEach.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEach.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEach.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEach.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEachRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEachRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEachRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEachRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEvery.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEvery.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEvery.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayEvery.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayExtremum.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayExtremum.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayExtremum.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayExtremum.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayFilter.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayFilter.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayFilter.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayFilter.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayMap.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayMap.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayMap.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayMap.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayPush.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayPush.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayPush.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayPush.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayReduce.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayReduce.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayReduce.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayReduce.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayReduceRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayReduceRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayReduceRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arrayReduceRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arraySome.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arraySome.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arraySome.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arraySome.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arraySum.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arraySum.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arraySum.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/arraySum.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignDefaults.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignDefaults.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignDefaults.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignDefaults.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignOwnDefaults.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignOwnDefaults.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignOwnDefaults.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignOwnDefaults.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignWith.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignWith.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignWith.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/assignWith.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseAssign.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseAssign.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseAssign.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseAssign.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseAt.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseAt.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseAt.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseAt.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCallback.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCallback.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCallback.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCallback.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseClone.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseClone.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseClone.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseClone.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCompareAscending.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCompareAscending.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCompareAscending.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCompareAscending.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCopy.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCopy.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCopy.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCopy.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCreate.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCreate.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCreate.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseCreate.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseDelay.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseDelay.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseDelay.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseDelay.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseDifference.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseDifference.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseDifference.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseDifference.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEach.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEach.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEach.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEach.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEachRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEachRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEachRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEachRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEvery.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEvery.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEvery.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseEvery.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseExtremum.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseExtremum.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseExtremum.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseExtremum.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFill.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFill.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFill.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFill.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFilter.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFilter.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFilter.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFilter.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFind.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFind.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFind.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFind.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFindIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFindIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFindIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFindIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFlatten.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFlatten.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFlatten.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFlatten.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFor.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFor.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFor.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFor.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForIn.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForIn.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForIn.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForIn.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForOwn.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForOwn.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForOwn.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForOwn.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForOwnRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForOwnRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForOwnRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForOwnRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseForRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFunctions.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFunctions.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFunctions.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseFunctions.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseGet.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseGet.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseGet.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseGet.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIndexOf.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIndexOf.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIndexOf.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIndexOf.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsEqual.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsEqual.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsEqual.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsEqual.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsEqualDeep.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsEqualDeep.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsEqualDeep.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsEqualDeep.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsFunction.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsFunction.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsFunction.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsFunction.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsMatch.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsMatch.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsMatch.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseIsMatch.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseLodash.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseLodash.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseLodash.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseLodash.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMap.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMap.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMap.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMap.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMatches.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMatches.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMatches.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMatches.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMatchesProperty.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMatchesProperty.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMatchesProperty.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMatchesProperty.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMerge.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMerge.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMerge.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMerge.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMergeDeep.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMergeDeep.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMergeDeep.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseMergeDeep.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseProperty.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseProperty.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseProperty.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseProperty.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/basePropertyDeep.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/basePropertyDeep.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/basePropertyDeep.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/basePropertyDeep.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/basePullAt.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/basePullAt.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/basePullAt.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/basePullAt.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseRandom.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseRandom.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseRandom.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseRandom.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseReduce.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseReduce.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseReduce.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseReduce.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSetData.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSetData.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSetData.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSetData.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSlice.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSlice.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSlice.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSlice.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSome.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSome.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSome.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSome.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSortBy.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSortBy.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSortBy.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSortBy.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSortByOrder.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSortByOrder.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSortByOrder.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSortByOrder.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSum.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSum.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSum.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseSum.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseToString.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseToString.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseToString.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseToString.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseUniq.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseUniq.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseUniq.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseUniq.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseValues.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseValues.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseValues.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseValues.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseWhile.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseWhile.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseWhile.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseWhile.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseWrapperValue.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseWrapperValue.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseWrapperValue.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/baseWrapperValue.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/binaryIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/binaryIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/binaryIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/binaryIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/binaryIndexBy.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/binaryIndexBy.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/binaryIndexBy.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/binaryIndexBy.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/bindCallback.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/bindCallback.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/bindCallback.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/bindCallback.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/bufferClone.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/bufferClone.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/bufferClone.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/bufferClone.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/cacheIndexOf.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/cacheIndexOf.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/cacheIndexOf.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/cacheIndexOf.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/cachePush.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/cachePush.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/cachePush.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/cachePush.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/charsLeftIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/charsLeftIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/charsLeftIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/charsLeftIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/charsRightIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/charsRightIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/charsRightIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/charsRightIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/compareAscending.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/compareAscending.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/compareAscending.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/compareAscending.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/compareMultiple.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/compareMultiple.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/compareMultiple.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/compareMultiple.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/composeArgs.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/composeArgs.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/composeArgs.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/composeArgs.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/composeArgsRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/composeArgsRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/composeArgsRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/composeArgsRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createAggregator.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createAggregator.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createAggregator.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createAggregator.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createAssigner.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createAssigner.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createAssigner.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createAssigner.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBaseEach.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBaseEach.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBaseEach.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBaseEach.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBaseFor.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBaseFor.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBaseFor.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBaseFor.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBindWrapper.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBindWrapper.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBindWrapper.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createBindWrapper.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCache.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCache.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCache.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCache.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCompounder.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCompounder.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCompounder.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCompounder.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCtorWrapper.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCtorWrapper.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCtorWrapper.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCtorWrapper.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCurry.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCurry.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCurry.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createCurry.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createDefaults.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createDefaults.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createDefaults.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createDefaults.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createExtremum.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createExtremum.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createExtremum.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createExtremum.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFind.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFind.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFind.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFind.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFindIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFindIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFindIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFindIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFindKey.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFindKey.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFindKey.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFindKey.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFlow.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFlow.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFlow.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createFlow.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForEach.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForEach.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForEach.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForEach.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForIn.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForIn.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForIn.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForIn.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForOwn.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForOwn.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForOwn.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createForOwn.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createHybridWrapper.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createHybridWrapper.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createHybridWrapper.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createHybridWrapper.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createObjectMapper.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createObjectMapper.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createObjectMapper.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createObjectMapper.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPadDir.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPadDir.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPadDir.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPadDir.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPadding.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPadding.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPadding.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPadding.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPartial.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPartial.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPartial.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPartial.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPartialWrapper.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPartialWrapper.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPartialWrapper.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createPartialWrapper.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createReduce.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createReduce.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createReduce.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createReduce.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createRound.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createRound.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createRound.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createRound.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createSortedIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createSortedIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createSortedIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createSortedIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createWrapper.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createWrapper.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createWrapper.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/createWrapper.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/deburrLetter.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/deburrLetter.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/deburrLetter.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/deburrLetter.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalArrays.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalArrays.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalArrays.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalArrays.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalByTag.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalByTag.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalByTag.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalByTag.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalObjects.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalObjects.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalObjects.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/equalObjects.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeHtmlChar.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeHtmlChar.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeHtmlChar.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeHtmlChar.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeRegExpChar.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeRegExpChar.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeRegExpChar.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeRegExpChar.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeStringChar.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeStringChar.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeStringChar.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/escapeStringChar.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getData.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getData.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getData.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getData.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getFuncName.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getFuncName.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getFuncName.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getFuncName.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getLength.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getLength.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getLength.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getLength.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getMatchData.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getMatchData.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getMatchData.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getMatchData.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getNative.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getNative.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getNative.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getNative.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getView.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getView.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getView.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/getView.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/indexOfNaN.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/indexOfNaN.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/indexOfNaN.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/indexOfNaN.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneArray.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneArray.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneArray.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneArray.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneByTag.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneByTag.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneByTag.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneByTag.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneObject.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneObject.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneObject.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/initCloneObject.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/invokePath.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/invokePath.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/invokePath.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/invokePath.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isArrayLike.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isArrayLike.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isArrayLike.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isArrayLike.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isIterateeCall.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isIterateeCall.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isIterateeCall.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isIterateeCall.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isKey.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isKey.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isKey.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isKey.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isLaziable.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isLaziable.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isLaziable.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isLaziable.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isLength.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isLength.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isLength.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isLength.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isObjectLike.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isObjectLike.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isObjectLike.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isObjectLike.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isSpace.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isSpace.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isSpace.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isSpace.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isStrictComparable.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isStrictComparable.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isStrictComparable.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/isStrictComparable.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyClone.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyClone.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyClone.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyClone.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyReverse.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyReverse.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyReverse.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyReverse.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyValue.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyValue.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyValue.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/lazyValue.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapDelete.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapDelete.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapDelete.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapDelete.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapGet.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapGet.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapGet.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapGet.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapHas.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapHas.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapHas.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapHas.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapSet.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapSet.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapSet.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mapSet.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mergeData.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mergeData.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mergeData.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mergeData.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mergeDefaults.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mergeDefaults.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mergeDefaults.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/mergeDefaults.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/metaMap.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/metaMap.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/metaMap.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/metaMap.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/pickByArray.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/pickByArray.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/pickByArray.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/pickByArray.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/pickByCallback.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/pickByCallback.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/pickByCallback.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/pickByCallback.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reEscape.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reEscape.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reEscape.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reEscape.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reEvaluate.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reEvaluate.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reEvaluate.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reEvaluate.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reInterpolate.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reInterpolate.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reInterpolate.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reInterpolate.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/realNames.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/realNames.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/realNames.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/realNames.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reorder.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reorder.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reorder.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/reorder.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/replaceHolders.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/replaceHolders.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/replaceHolders.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/replaceHolders.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/setData.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/setData.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/setData.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/setData.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/shimKeys.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/shimKeys.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/shimKeys.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/shimKeys.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/sortedUniq.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/sortedUniq.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/sortedUniq.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/sortedUniq.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toIterable.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toIterable.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toIterable.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toIterable.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toObject.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toObject.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toObject.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toObject.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toPath.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toPath.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toPath.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/toPath.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/trimmedLeftIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/trimmedLeftIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/trimmedLeftIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/trimmedLeftIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/trimmedRightIndex.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/trimmedRightIndex.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/trimmedRightIndex.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/trimmedRightIndex.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/unescapeHtmlChar.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/unescapeHtmlChar.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/unescapeHtmlChar.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/unescapeHtmlChar.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/wrapperClone.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/wrapperClone.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/wrapperClone.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/internal/wrapperClone.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/clone.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/clone.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/clone.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/clone.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/cloneDeep.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/cloneDeep.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/cloneDeep.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/cloneDeep.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/eq.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/eq.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/eq.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/eq.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/gt.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/gt.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/gt.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/gt.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/gte.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/gte.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/gte.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/gte.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isArguments.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isArguments.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isArguments.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isArguments.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isArray.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isArray.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isArray.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isArray.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isBoolean.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isBoolean.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isBoolean.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isBoolean.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isDate.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isDate.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isDate.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isDate.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isElement.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isElement.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isElement.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isElement.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isEmpty.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isEmpty.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isEmpty.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isEmpty.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isEqual.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isEqual.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isEqual.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isEqual.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isError.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isError.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isError.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isError.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isFinite.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isFinite.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isFinite.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isFinite.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isFunction.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isFunction.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isFunction.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isFunction.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isMatch.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isMatch.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isMatch.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isMatch.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNaN.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNaN.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNaN.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNaN.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNative.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNative.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNative.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNative.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNull.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNull.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNull.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNull.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNumber.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNumber.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNumber.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isNumber.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isObject.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isObject.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isObject.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isObject.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isPlainObject.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isPlainObject.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isPlainObject.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isPlainObject.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isRegExp.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isRegExp.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isRegExp.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isRegExp.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isString.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isString.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isString.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isString.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isTypedArray.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isTypedArray.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isTypedArray.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isTypedArray.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isUndefined.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isUndefined.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isUndefined.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/isUndefined.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/lt.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/lt.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/lt.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/lt.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/lte.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/lte.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/lte.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/lte.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/toArray.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/toArray.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/toArray.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/toArray.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/toPlainObject.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/toPlainObject.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/toPlainObject.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/lang/toPlainObject.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/add.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/add.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/add.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/add.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/ceil.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/ceil.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/ceil.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/ceil.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/floor.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/floor.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/floor.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/floor.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/max.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/max.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/max.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/max.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/min.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/min.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/min.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/min.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/round.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/round.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/round.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/round.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/sum.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/sum.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/sum.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/math/sum.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number/inRange.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number/inRange.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number/inRange.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number/inRange.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number/random.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number/random.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number/random.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/number/random.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/assign.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/assign.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/assign.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/assign.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/create.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/create.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/create.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/create.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/defaults.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/defaults.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/defaults.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/defaults.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/defaultsDeep.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/defaultsDeep.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/defaultsDeep.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/defaultsDeep.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/extend.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/extend.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/extend.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/extend.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/findKey.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/findKey.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/findKey.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/findKey.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/findLastKey.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/findLastKey.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/findLastKey.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/findLastKey.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forIn.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forIn.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forIn.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forIn.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forInRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forInRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forInRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forInRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forOwn.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forOwn.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forOwn.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forOwn.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forOwnRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forOwnRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forOwnRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/forOwnRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/functions.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/functions.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/functions.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/functions.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/get.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/get.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/get.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/get.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/has.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/has.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/has.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/has.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/invert.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/invert.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/invert.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/invert.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/keys.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/keys.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/keys.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/keys.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/keysIn.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/keysIn.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/keysIn.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/keysIn.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/mapKeys.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/mapKeys.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/mapKeys.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/mapKeys.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/mapValues.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/mapValues.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/mapValues.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/mapValues.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/merge.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/merge.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/merge.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/merge.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/methods.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/methods.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/methods.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/methods.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/omit.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/omit.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/omit.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/omit.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/pairs.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/pairs.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/pairs.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/pairs.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/pick.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/pick.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/pick.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/pick.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/result.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/result.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/result.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/result.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/set.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/set.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/set.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/set.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/transform.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/transform.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/transform.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/transform.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/values.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/values.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/values.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/values.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/valuesIn.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/valuesIn.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/valuesIn.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/object/valuesIn.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/package.json b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/package.json similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/package.json rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/package.json diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/camelCase.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/camelCase.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/camelCase.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/camelCase.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/capitalize.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/capitalize.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/capitalize.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/capitalize.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/deburr.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/deburr.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/deburr.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/deburr.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/endsWith.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/endsWith.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/endsWith.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/endsWith.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/escape.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/escape.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/escape.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/escape.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/escapeRegExp.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/escapeRegExp.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/escapeRegExp.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/escapeRegExp.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/kebabCase.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/kebabCase.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/kebabCase.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/kebabCase.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/pad.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/pad.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/pad.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/pad.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/padLeft.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/padLeft.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/padLeft.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/padLeft.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/padRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/padRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/padRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/padRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/parseInt.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/parseInt.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/parseInt.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/parseInt.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/repeat.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/repeat.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/repeat.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/repeat.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/snakeCase.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/snakeCase.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/snakeCase.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/snakeCase.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/startCase.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/startCase.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/startCase.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/startCase.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/startsWith.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/startsWith.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/startsWith.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/startsWith.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/template.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/template.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/template.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/template.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/templateSettings.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/templateSettings.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/templateSettings.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/templateSettings.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trim.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trim.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trim.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trim.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trimLeft.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trimLeft.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trimLeft.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trimLeft.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trimRight.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trimRight.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trimRight.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trimRight.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trunc.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trunc.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trunc.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/trunc.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/unescape.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/unescape.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/unescape.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/unescape.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/words.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/words.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/words.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/string/words.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/support.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/support.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/support.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/support.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/attempt.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/attempt.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/attempt.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/attempt.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/callback.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/callback.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/callback.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/callback.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/constant.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/constant.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/constant.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/constant.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/identity.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/identity.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/identity.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/identity.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/iteratee.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/iteratee.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/iteratee.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/iteratee.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/matches.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/matches.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/matches.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/matches.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/matchesProperty.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/matchesProperty.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/matchesProperty.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/matchesProperty.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/method.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/method.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/method.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/method.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/methodOf.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/methodOf.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/methodOf.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/methodOf.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/mixin.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/mixin.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/mixin.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/mixin.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/noop.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/noop.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/noop.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/noop.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/property.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/property.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/property.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/property.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/propertyOf.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/propertyOf.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/propertyOf.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/propertyOf.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/range.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/range.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/range.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/range.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/times.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/times.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/times.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/times.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/uniqueId.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/uniqueId.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/uniqueId.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/lodash/utility/uniqueId.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/.travis.yml b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/.travis.yml similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/.travis.yml rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/.travis.yml diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/LICENSE b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/LICENSE similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/LICENSE rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/LICENSE diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/bin/cmd.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/bin/cmd.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/bin/cmd.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/bin/cmd.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/bin/usage.txt b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/bin/usage.txt similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/bin/usage.txt rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/bin/usage.txt diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/examples/pow.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/examples/pow.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/examples/pow.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/examples/pow.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/index.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/index.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/index.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/index.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/.travis.yml b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/.travis.yml similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/.travis.yml rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/.travis.yml diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/LICENSE b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/LICENSE similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/LICENSE rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/LICENSE diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/example/parse.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/example/parse.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/example/parse.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/example/parse.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/index.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/index.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/index.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/index.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/package.json b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/package.json similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/package.json rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/package.json diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/readme.markdown b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/readme.markdown similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/readme.markdown rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/readme.markdown diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/dash.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/dash.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/dash.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/dash.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/default_bool.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/default_bool.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/default_bool.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/default_bool.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/dotted.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/dotted.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/dotted.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/dotted.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/long.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/long.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/long.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/long.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/parse.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/parse.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/parse.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/parse.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/short.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/short.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/short.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/short.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/whitespace.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/whitespace.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/whitespace.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/node_modules/minimist/test/whitespace.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/package.json b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/package.json similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/package.json rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/package.json diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/readme.markdown b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/readme.markdown similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/readme.markdown rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/readme.markdown diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/chmod.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/chmod.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/chmod.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/chmod.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/clobber.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/clobber.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/clobber.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/clobber.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/mkdirp.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/mkdirp.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/mkdirp.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/mkdirp.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/opts_fs.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/opts_fs.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/opts_fs.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/opts_fs.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/opts_fs_sync.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/opts_fs_sync.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/opts_fs_sync.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/opts_fs_sync.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/perm.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/perm.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/perm.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/perm.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/perm_sync.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/perm_sync.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/perm_sync.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/perm_sync.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/race.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/race.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/race.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/race.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/rel.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/rel.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/rel.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/rel.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/return.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/return.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/return.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/return.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/return_sync.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/return_sync.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/return_sync.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/return_sync.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/root.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/root.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/root.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/root.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/sync.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/sync.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/sync.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/sync.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/umask.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/umask.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/umask.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/umask.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/umask_sync.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/umask_sync.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/umask_sync.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/mkdirp/test/umask_sync.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/LICENSE-MIT.txt b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/LICENSE-MIT.txt similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/LICENSE-MIT.txt rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/LICENSE-MIT.txt diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/README.md b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/README.md similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/README.md rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/README.md diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/package.json b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/package.json similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/package.json rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/package.json diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/startswith.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/startswith.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/startswith.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/node_modules/string.prototype.startswith/startswith.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/package.json b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/package.json similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/package.json rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/package.json diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/protractor.config.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/protractor.config.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/protractor.config.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/protractor.config.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/template.html b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/template.html similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/template.html rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/template.html diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/test/test2Spec.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/test/test2Spec.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/test/test2Spec.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/test/test2Spec.js diff --git a/src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/test/testSpec.js b/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/test/testSpec.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/test/testSpec.js rename to client/javascript/test/e2e/node_module/protractor-jasmine2-html-reporter/test/testSpec.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.abonnement.js b/client/javascript/test/e2e/protractor.conf.abonnement.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.abonnement.js rename to client/javascript/test/e2e/protractor.conf.abonnement.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.ad.js b/client/javascript/test/e2e/protractor.conf.ad.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.ad.js rename to client/javascript/test/e2e/protractor.conf.ad.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.categorie.js b/client/javascript/test/e2e/protractor.conf.categorie.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.categorie.js rename to client/javascript/test/e2e/protractor.conf.categorie.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.depot.js b/client/javascript/test/e2e/protractor.conf.depot.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.depot.js rename to client/javascript/test/e2e/protractor.conf.depot.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.fichiers_interdits.js b/client/javascript/test/e2e/protractor.conf.fichiers_interdits.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.fichiers_interdits.js rename to client/javascript/test/e2e/protractor.conf.fichiers_interdits.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.filter.js b/client/javascript/test/e2e/protractor.conf.filter.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.filter.js rename to client/javascript/test/e2e/protractor.conf.filter.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.formulaire.js b/client/javascript/test/e2e/protractor.conf.formulaire.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.formulaire.js rename to client/javascript/test/e2e/protractor.conf.formulaire.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.import.export.js b/client/javascript/test/e2e/protractor.conf.import.export.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.import.export.js rename to client/javascript/test/e2e/protractor.conf.import.export.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.ip.js b/client/javascript/test/e2e/protractor.conf.ip.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.ip.js rename to client/javascript/test/e2e/protractor.conf.ip.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.js b/client/javascript/test/e2e/protractor.conf.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.js rename to client/javascript/test/e2e/protractor.conf.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.lot.js b/client/javascript/test/e2e/protractor.conf.lot.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.lot.js rename to client/javascript/test/e2e/protractor.conf.lot.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.metada.js b/client/javascript/test/e2e/protractor.conf.metada.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.metada.js rename to client/javascript/test/e2e/protractor.conf.metada.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.metadata.js b/client/javascript/test/e2e/protractor.conf.metadata.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.metadata.js rename to client/javascript/test/e2e/protractor.conf.metadata.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.moteurs.js b/client/javascript/test/e2e/protractor.conf.moteurs.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.moteurs.js rename to client/javascript/test/e2e/protractor.conf.moteurs.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.order.js b/client/javascript/test/e2e/protractor.conf.order.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.order.js rename to client/javascript/test/e2e/protractor.conf.order.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.publication.js b/client/javascript/test/e2e/protractor.conf.publication.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.publication.js rename to client/javascript/test/e2e/protractor.conf.publication.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.unicite.js b/client/javascript/test/e2e/protractor.conf.unicite.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.unicite.js rename to client/javascript/test/e2e/protractor.conf.unicite.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.upload.js b/client/javascript/test/e2e/protractor.conf.upload.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.upload.js rename to client/javascript/test/e2e/protractor.conf.upload.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.upload_fmw.js b/client/javascript/test/e2e/protractor.conf.upload_fmw.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.upload_fmw.js rename to client/javascript/test/e2e/protractor.conf.upload_fmw.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.upload_zip.js b/client/javascript/test/e2e/protractor.conf.upload_zip.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.upload_zip.js rename to client/javascript/test/e2e/protractor.conf.upload_zip.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.user_existant.js b/client/javascript/test/e2e/protractor.conf.user_existant.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.user_existant.js rename to client/javascript/test/e2e/protractor.conf.user_existant.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.users.js b/client/javascript/test/e2e/protractor.conf.users.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.users.js rename to client/javascript/test/e2e/protractor.conf.users.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.users_speciaux.js b/client/javascript/test/e2e/protractor.conf.users_speciaux.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.users_speciaux.js rename to client/javascript/test/e2e/protractor.conf.users_speciaux.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.users_speciaux.linux.js b/client/javascript/test/e2e/protractor.conf.users_speciaux.linux.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.users_speciaux.linux.js rename to client/javascript/test/e2e/protractor.conf.users_speciaux.linux.js diff --git a/src/vitis/client/javascript/test/e2e/protractor.conf.verrouillage_projet.js b/client/javascript/test/e2e/protractor.conf.verrouillage_projet.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/protractor.conf.verrouillage_projet.js rename to client/javascript/test/e2e/protractor.conf.verrouillage_projet.js diff --git a/src/vitis/client/javascript/test/e2e/resource/DATE.gex b/client/javascript/test/e2e/resource/DATE.gex similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/DATE.gex rename to client/javascript/test/e2e/resource/DATE.gex diff --git a/src/vitis/client/javascript/test/e2e/resource/DPT.DBF b/client/javascript/test/e2e/resource/DPT.DBF similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/DPT.DBF rename to client/javascript/test/e2e/resource/DPT.DBF diff --git a/src/vitis/client/javascript/test/e2e/resource/DPT.SHP b/client/javascript/test/e2e/resource/DPT.SHP similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/DPT.SHP rename to client/javascript/test/e2e/resource/DPT.SHP diff --git a/src/vitis/client/javascript/test/e2e/resource/DPT.SHX b/client/javascript/test/e2e/resource/DPT.SHX similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/DPT.SHX rename to client/javascript/test/e2e/resource/DPT.SHX diff --git a/src/vitis/client/javascript/test/e2e/resource/DPT.prj b/client/javascript/test/e2e/resource/DPT.prj similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/DPT.prj rename to client/javascript/test/e2e/resource/DPT.prj diff --git a/src/vitis/client/javascript/test/e2e/resource/DPT.zip b/client/javascript/test/e2e/resource/DPT.zip similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/DPT.zip rename to client/javascript/test/e2e/resource/DPT.zip diff --git a/src/vitis/client/javascript/test/e2e/resource/choix_multiple.fmw b/client/javascript/test/e2e/resource/choix_multiple.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/choix_multiple.fmw rename to client/javascript/test/e2e/resource/choix_multiple.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/choix_multiple.log b/client/javascript/test/e2e/resource/choix_multiple.log similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/choix_multiple.log rename to client/javascript/test/e2e/resource/choix_multiple.log diff --git a/src/vitis/client/javascript/test/e2e/resource/controle_quali.gex b/client/javascript/test/e2e/resource/controle_quali.gex similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/controle_quali.gex rename to client/javascript/test/e2e/resource/controle_quali.gex diff --git a/src/vitis/client/javascript/test/e2e/resource/dep dep.zip b/client/javascript/test/e2e/resource/dep dep.zip similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/dep dep.zip rename to client/javascript/test/e2e/resource/dep dep.zip diff --git a/src/vitis/client/javascript/test/e2e/resource/depts.zip b/client/javascript/test/e2e/resource/depts.zip similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/depts.zip rename to client/javascript/test/e2e/resource/depts.zip diff --git a/src/vitis/client/javascript/test/e2e/resource/dpt2.dbf b/client/javascript/test/e2e/resource/dpt2.dbf similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/dpt2.dbf rename to client/javascript/test/e2e/resource/dpt2.dbf diff --git a/src/vitis/client/javascript/test/e2e/resource/dpt2.prj b/client/javascript/test/e2e/resource/dpt2.prj similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/dpt2.prj rename to client/javascript/test/e2e/resource/dpt2.prj diff --git a/src/vitis/client/javascript/test/e2e/resource/dpt2.shp b/client/javascript/test/e2e/resource/dpt2.shp similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/dpt2.shp rename to client/javascript/test/e2e/resource/dpt2.shp diff --git a/src/vitis/client/javascript/test/e2e/resource/dpt2.shx b/client/javascript/test/e2e/resource/dpt2.shx similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/dpt2.shx rename to client/javascript/test/e2e/resource/dpt2.shx diff --git a/src/vitis/client/javascript/test/e2e/resource/dpt2.zip b/client/javascript/test/e2e/resource/dpt2.zip similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/dpt2.zip rename to client/javascript/test/e2e/resource/dpt2.zip diff --git "a/src/vitis/client/javascript/test/e2e/resource/d\303\251p.zip" "b/client/javascript/test/e2e/resource/d\303\251p.zip" similarity index 100% rename from "src/vitis/client/javascript/test/e2e/resource/d\303\251p.zip" rename to "client/javascript/test/e2e/resource/d\303\251p.zip" diff --git a/src/vitis/client/javascript/test/e2e/resource/ee aa.fmw b/client/javascript/test/e2e/resource/ee aa.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/ee aa.fmw rename to client/javascript/test/e2e/resource/ee aa.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/exemples.gex b/client/javascript/test/e2e/resource/exemples.gex similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/exemples.gex rename to client/javascript/test/e2e/resource/exemples.gex diff --git "a/src/vitis/client/javascript/test/e2e/resource/extraction_geofla_par_d\303\251partement.gex" "b/client/javascript/test/e2e/resource/extraction_geofla_par_d\303\251partement.gex" similarity index 100% rename from "src/vitis/client/javascript/test/e2e/resource/extraction_geofla_par_d\303\251partement.gex" rename to "client/javascript/test/e2e/resource/extraction_geofla_par_d\303\251partement.gex" diff --git a/src/vitis/client/javascript/test/e2e/resource/import_export.gex b/client/javascript/test/e2e/resource/import_export.gex similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/import_export.gex rename to client/javascript/test/e2e/resource/import_export.gex diff --git a/src/vitis/client/javascript/test/e2e/resource/import_export2.gex b/client/javascript/test/e2e/resource/import_export2.gex similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/import_export2.gex rename to client/javascript/test/e2e/resource/import_export2.gex diff --git a/src/vitis/client/javascript/test/e2e/resource/it3/ARDECHE.dbf b/client/javascript/test/e2e/resource/it3/ARDECHE.dbf similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/it3/ARDECHE.dbf rename to client/javascript/test/e2e/resource/it3/ARDECHE.dbf diff --git a/src/vitis/client/javascript/test/e2e/resource/it3/ARDECHE.prj b/client/javascript/test/e2e/resource/it3/ARDECHE.prj similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/it3/ARDECHE.prj rename to client/javascript/test/e2e/resource/it3/ARDECHE.prj diff --git a/src/vitis/client/javascript/test/e2e/resource/it3/ARDECHE.shp b/client/javascript/test/e2e/resource/it3/ARDECHE.shp similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/it3/ARDECHE.shp rename to client/javascript/test/e2e/resource/it3/ARDECHE.shp diff --git a/src/vitis/client/javascript/test/e2e/resource/it3/ARDECHE.shx b/client/javascript/test/e2e/resource/it3/ARDECHE.shx similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/it3/ARDECHE.shx rename to client/javascript/test/e2e/resource/it3/ARDECHE.shx diff --git a/src/vitis/client/javascript/test/e2e/resource/metadata.fmw b/client/javascript/test/e2e/resource/metadata.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/metadata.fmw rename to client/javascript/test/e2e/resource/metadata.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/metadata.log b/client/javascript/test/e2e/resource/metadata.log similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/metadata.log rename to client/javascript/test/e2e/resource/metadata.log diff --git a/src/vitis/client/javascript/test/e2e/resource/metadata2.fmw b/client/javascript/test/e2e/resource/metadata2.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/metadata2.fmw rename to client/javascript/test/e2e/resource/metadata2.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/selection_villes.gex b/client/javascript/test/e2e/resource/selection_villes.gex similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/selection_villes.gex rename to client/javascript/test/e2e/resource/selection_villes.gex diff --git a/src/vitis/client/javascript/test/e2e/resource/shp2mif.fmw b/client/javascript/test/e2e/resource/shp2mif.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/shp2mif.fmw rename to client/javascript/test/e2e/resource/shp2mif.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/t_abonnement.fmw b/client/javascript/test/e2e/resource/t_abonnement.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/t_abonnement.fmw rename to client/javascript/test/e2e/resource/t_abonnement.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/t_formulaire.fmw b/client/javascript/test/e2e/resource/t_formulaire.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/t_formulaire.fmw rename to client/javascript/test/e2e/resource/t_formulaire.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/t_importparlot1.fmw b/client/javascript/test/e2e/resource/t_importparlot1.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/t_importparlot1.fmw rename to client/javascript/test/e2e/resource/t_importparlot1.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/t_importparlot2.fmw b/client/javascript/test/e2e/resource/t_importparlot2.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/t_importparlot2.fmw rename to client/javascript/test/e2e/resource/t_importparlot2.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/t_unicite.fmw b/client/javascript/test/e2e/resource/t_unicite.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/t_unicite.fmw rename to client/javascript/test/e2e/resource/t_unicite.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/test_gex.gex b/client/javascript/test/e2e/resource/test_gex.gex similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/test_gex.gex rename to client/javascript/test/e2e/resource/test_gex.gex diff --git a/src/vitis/client/javascript/test/e2e/resource/test_param_choice_villes.fmw b/client/javascript/test/e2e/resource/test_param_choice_villes.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/test_param_choice_villes.fmw rename to client/javascript/test/e2e/resource/test_param_choice_villes.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/test_param_couleur.fmw b/client/javascript/test/e2e/resource/test_param_couleur.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/test_param_couleur.fmw rename to client/javascript/test/e2e/resource/test_param_couleur.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/test_param_date_time.fmw b/client/javascript/test/e2e/resource/test_param_date_time.fmw similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/test_param_date_time.fmw rename to client/javascript/test/e2e/resource/test_param_date_time.fmw diff --git a/src/vitis/client/javascript/test/e2e/resource/test_param_date_time.log b/client/javascript/test/e2e/resource/test_param_date_time.log similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/test_param_date_time.log rename to client/javascript/test/e2e/resource/test_param_date_time.log diff --git a/src/vitis/client/javascript/test/e2e/resource/villes.zip b/client/javascript/test/e2e/resource/villes.zip similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/villes.zip rename to client/javascript/test/e2e/resource/villes.zip diff --git a/src/vitis/client/javascript/test/e2e/resource/vse.jpg b/client/javascript/test/e2e/resource/vse.jpg similarity index 100% rename from src/vitis/client/javascript/test/e2e/resource/vse.jpg rename to client/javascript/test/e2e/resource/vse.jpg diff --git "a/src/vitis/client/javascript/test/e2e/resource/\303\251\303\240.fmw" "b/client/javascript/test/e2e/resource/\303\251\303\240.fmw" similarity index 100% rename from "src/vitis/client/javascript/test/e2e/resource/\303\251\303\240.fmw" rename to "client/javascript/test/e2e/resource/\303\251\303\240.fmw" diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_abonnement.js b/client/javascript/test/e2e/scenario/sc_vitis_abonnement.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_abonnement.js rename to client/javascript/test/e2e/scenario/sc_vitis_abonnement.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_ad.js b/client/javascript/test/e2e/scenario/sc_vitis_ad.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_ad.js rename to client/javascript/test/e2e/scenario/sc_vitis_ad.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_categorie.js b/client/javascript/test/e2e/scenario/sc_vitis_categorie.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_categorie.js rename to client/javascript/test/e2e/scenario/sc_vitis_categorie.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_depot.js b/client/javascript/test/e2e/scenario/sc_vitis_depot.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_depot.js rename to client/javascript/test/e2e/scenario/sc_vitis_depot.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_fichiers_interdits.js b/client/javascript/test/e2e/scenario/sc_vitis_fichiers_interdits.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_fichiers_interdits.js rename to client/javascript/test/e2e/scenario/sc_vitis_fichiers_interdits.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_filter.js b/client/javascript/test/e2e/scenario/sc_vitis_filter.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_filter.js rename to client/javascript/test/e2e/scenario/sc_vitis_filter.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_fme_params.js b/client/javascript/test/e2e/scenario/sc_vitis_fme_params.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_fme_params.js rename to client/javascript/test/e2e/scenario/sc_vitis_fme_params.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_formulaire.js b/client/javascript/test/e2e/scenario/sc_vitis_formulaire.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_formulaire.js rename to client/javascript/test/e2e/scenario/sc_vitis_formulaire.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_import_export.js b/client/javascript/test/e2e/scenario/sc_vitis_import_export.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_import_export.js rename to client/javascript/test/e2e/scenario/sc_vitis_import_export.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_ip.js b/client/javascript/test/e2e/scenario/sc_vitis_ip.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_ip.js rename to client/javascript/test/e2e/scenario/sc_vitis_ip.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_lot.js b/client/javascript/test/e2e/scenario/sc_vitis_lot.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_lot.js rename to client/javascript/test/e2e/scenario/sc_vitis_lot.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_metadata.js b/client/javascript/test/e2e/scenario/sc_vitis_metadata.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_metadata.js rename to client/javascript/test/e2e/scenario/sc_vitis_metadata.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_moteurs.js b/client/javascript/test/e2e/scenario/sc_vitis_moteurs.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_moteurs.js rename to client/javascript/test/e2e/scenario/sc_vitis_moteurs.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_order.js b/client/javascript/test/e2e/scenario/sc_vitis_order.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_order.js rename to client/javascript/test/e2e/scenario/sc_vitis_order.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_publication.js b/client/javascript/test/e2e/scenario/sc_vitis_publication.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_publication.js rename to client/javascript/test/e2e/scenario/sc_vitis_publication.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_unicite.js b/client/javascript/test/e2e/scenario/sc_vitis_unicite.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_unicite.js rename to client/javascript/test/e2e/scenario/sc_vitis_unicite.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_upload.js b/client/javascript/test/e2e/scenario/sc_vitis_upload.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_upload.js rename to client/javascript/test/e2e/scenario/sc_vitis_upload.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_upload_fmw.js b/client/javascript/test/e2e/scenario/sc_vitis_upload_fmw.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_upload_fmw.js rename to client/javascript/test/e2e/scenario/sc_vitis_upload_fmw.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_upload_zip.js b/client/javascript/test/e2e/scenario/sc_vitis_upload_zip.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_upload_zip.js rename to client/javascript/test/e2e/scenario/sc_vitis_upload_zip.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_user_existant.js b/client/javascript/test/e2e/scenario/sc_vitis_user_existant.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_user_existant.js rename to client/javascript/test/e2e/scenario/sc_vitis_user_existant.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_users.js b/client/javascript/test/e2e/scenario/sc_vitis_users.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_users.js rename to client/javascript/test/e2e/scenario/sc_vitis_users.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_users_linux.js b/client/javascript/test/e2e/scenario/sc_vitis_users_linux.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_users_linux.js rename to client/javascript/test/e2e/scenario/sc_vitis_users_linux.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_users_speciaux.js b/client/javascript/test/e2e/scenario/sc_vitis_users_speciaux.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_users_speciaux.js rename to client/javascript/test/e2e/scenario/sc_vitis_users_speciaux.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_users_speciaux_linux.js b/client/javascript/test/e2e/scenario/sc_vitis_users_speciaux_linux.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_users_speciaux_linux.js rename to client/javascript/test/e2e/scenario/sc_vitis_users_speciaux_linux.js diff --git a/src/vitis/client/javascript/test/e2e/scenario/sc_vitis_verrouillage_projet.js b/client/javascript/test/e2e/scenario/sc_vitis_verrouillage_projet.js similarity index 100% rename from src/vitis/client/javascript/test/e2e/scenario/sc_vitis_verrouillage_projet.js rename to client/javascript/test/e2e/scenario/sc_vitis_verrouillage_projet.js diff --git a/src/vitis/client/lang/lang-en.json b/client/lang/lang-en.json similarity index 100% rename from src/vitis/client/lang/lang-en.json rename to client/lang/lang-en.json diff --git a/src/vitis/client/lang/lang-fr.json b/client/lang/lang-fr.json similarity index 100% rename from src/vitis/client/lang/lang-fr.json rename to client/lang/lang-fr.json diff --git a/src/vitis/client/less/doubleForm.less b/client/less/doubleForm.less similarity index 100% rename from src/vitis/client/less/doubleForm.less rename to client/less/doubleForm.less diff --git a/src/vitis/client/less/htmlForm.less b/client/less/htmlForm.less similarity index 100% rename from src/vitis/client/less/htmlForm.less rename to client/less/htmlForm.less diff --git a/src/vitis/client/less/login.less b/client/less/login.less similarity index 100% rename from src/vitis/client/less/login.less rename to client/less/login.less diff --git a/src/vitis/client/less/main.less b/client/less/main.less similarity index 100% rename from src/vitis/client/less/main.less rename to client/less/main.less diff --git a/src/vitis/client/less/mobile.less b/client/less/mobile.less similarity index 100% rename from src/vitis/client/less/mobile.less rename to client/less/mobile.less diff --git a/src/vitis/client/less/sectionForm.less b/client/less/sectionForm.less similarity index 100% rename from src/vitis/client/less/sectionForm.less rename to client/less/sectionForm.less diff --git a/src/vitis/client/less/simpleForm.less b/client/less/simpleForm.less similarity index 100% rename from src/vitis/client/less/simpleForm.less rename to client/less/simpleForm.less diff --git a/src/vitis/client/less/workspaceList.less b/client/less/workspaceList.less similarity index 100% rename from src/vitis/client/less/workspaceList.less rename to client/less/workspaceList.less diff --git a/src/vitis/client/modules/vitis/data/proj.json b/client/modules/vitis/data/proj.json similarity index 100% rename from src/vitis/client/modules/vitis/data/proj.json rename to client/modules/vitis/data/proj.json diff --git a/src/vitis/client/modules/vitis/forms/configuration/configuration_vitis_configuration.json b/client/modules/vitis/forms/configuration/configuration_vitis_configuration.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/configuration/configuration_vitis_configuration.json rename to client/modules/vitis/forms/configuration/configuration_vitis_configuration.json diff --git a/src/vitis/client/modules/vitis/forms/exploitation/exploitation_exploitation.json b/client/modules/vitis/forms/exploitation/exploitation_exploitation.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/exploitation/exploitation_exploitation.json rename to client/modules/vitis/forms/exploitation/exploitation_exploitation.json diff --git a/src/vitis/client/modules/vitis/forms/logs/logs_vitis_log.json b/client/modules/vitis/forms/logs/logs_vitis_log.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/logs/logs_vitis_log.json rename to client/modules/vitis/forms/logs/logs_vitis_log.json diff --git a/src/vitis/client/modules/vitis/forms/user/user_vitis_user.js b/client/modules/vitis/forms/user/user_vitis_user.js similarity index 100% rename from src/vitis/client/modules/vitis/forms/user/user_vitis_user.js rename to client/modules/vitis/forms/user/user_vitis_user.js diff --git a/src/vitis/client/modules/vitis/forms/user/user_vitis_user.json b/client/modules/vitis/forms/user/user_vitis_user.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/user/user_vitis_user.json rename to client/modules/vitis/forms/user/user_vitis_user.json diff --git a/src/vitis/client/modules/vitis/forms/users/active_directory_connection.json b/client/modules/vitis/forms/users/active_directory_connection.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/users/active_directory_connection.json rename to client/modules/vitis/forms/users/active_directory_connection.json diff --git a/src/vitis/client/modules/vitis/forms/users/search_active_directory_group.json b/client/modules/vitis/forms/users/search_active_directory_group.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/users/search_active_directory_group.json rename to client/modules/vitis/forms/users/search_active_directory_group.json diff --git a/src/vitis/client/modules/vitis/forms/users/search_active_directory_person.json b/client/modules/vitis/forms/users/search_active_directory_person.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/users/search_active_directory_person.json rename to client/modules/vitis/forms/users/search_active_directory_person.json diff --git a/src/vitis/client/modules/vitis/forms/users/users_vitis_billinggroup.json b/client/modules/vitis/forms/users/users_vitis_billinggroup.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/users/users_vitis_billinggroup.json rename to client/modules/vitis/forms/users/users_vitis_billinggroup.json diff --git a/src/vitis/client/modules/vitis/forms/users/users_vitis_domain.json b/client/modules/vitis/forms/users/users_vitis_domain.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/users/users_vitis_domain.json rename to client/modules/vitis/forms/users/users_vitis_domain.json diff --git a/src/vitis/client/modules/vitis/forms/users/users_vitis_group.json b/client/modules/vitis/forms/users/users_vitis_group.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/users/users_vitis_group.json rename to client/modules/vitis/forms/users/users_vitis_group.json diff --git a/src/vitis/client/modules/vitis/forms/users/users_vitis_privilege.json b/client/modules/vitis/forms/users/users_vitis_privilege.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/users/users_vitis_privilege.json rename to client/modules/vitis/forms/users/users_vitis_privilege.json diff --git a/src/vitis/client/modules/vitis/forms/users/users_vitis_users.json b/client/modules/vitis/forms/users/users_vitis_users.json similarity index 100% rename from src/vitis/client/modules/vitis/forms/users/users_vitis_users.json rename to client/modules/vitis/forms/users/users_vitis_users.json diff --git a/src/vitis/client/modules/vitis/images/administrator.png b/client/modules/vitis/images/administrator.png similarity index 100% rename from src/vitis/client/modules/vitis/images/administrator.png rename to client/modules/vitis/images/administrator.png diff --git a/src/vitis/client/modules/vitis/images/button_green.gif b/client/modules/vitis/images/button_green.gif similarity index 100% rename from src/vitis/client/modules/vitis/images/button_green.gif rename to client/modules/vitis/images/button_green.gif diff --git a/src/vitis/client/modules/vitis/images/button_red.gif b/client/modules/vitis/images/button_red.gif similarity index 100% rename from src/vitis/client/modules/vitis/images/button_red.gif rename to client/modules/vitis/images/button_red.gif diff --git a/src/vitis/client/modules/vitis/images/user.png b/client/modules/vitis/images/user.png similarity index 100% rename from src/vitis/client/modules/vitis/images/user.png rename to client/modules/vitis/images/user.png diff --git a/src/vitis/client/modules/vitis/javascript/controllers/activeDirectoryTreeCtrl.js b/client/modules/vitis/javascript/controllers/activeDirectoryTreeCtrl.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/controllers/activeDirectoryTreeCtrl.js rename to client/modules/vitis/javascript/controllers/activeDirectoryTreeCtrl.js diff --git a/src/vitis/client/modules/vitis/javascript/controllers/logsCtrl.js b/client/modules/vitis/javascript/controllers/logsCtrl.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/controllers/logsCtrl.js rename to client/modules/vitis/javascript/controllers/logsCtrl.js diff --git a/src/vitis/client/modules/vitis/javascript/controllers/versionConfigurationCtrl.js b/client/modules/vitis/javascript/controllers/versionConfigurationCtrl.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/controllers/versionConfigurationCtrl.js rename to client/modules/vitis/javascript/controllers/versionConfigurationCtrl.js diff --git a/src/vitis/client/modules/vitis/javascript/controllers/webServiceHelpCtrl.js b/client/modules/vitis/javascript/controllers/webServiceHelpCtrl.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/controllers/webServiceHelpCtrl.js rename to client/modules/vitis/javascript/controllers/webServiceHelpCtrl.js diff --git a/src/vitis/client/modules/vitis/javascript/controllers/websocketConfigurationCtrl.js b/client/modules/vitis/javascript/controllers/websocketConfigurationCtrl.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/controllers/websocketConfigurationCtrl.js rename to client/modules/vitis/javascript/controllers/websocketConfigurationCtrl.js diff --git a/src/vitis/client/modules/vitis/javascript/deps.js b/client/modules/vitis/javascript/deps.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/deps.js rename to client/modules/vitis/javascript/deps.js diff --git a/src/vitis/client/modules/vitis/javascript/directives/activeDirectoryTreeDrtv.js b/client/modules/vitis/javascript/directives/activeDirectoryTreeDrtv.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/directives/activeDirectoryTreeDrtv.js rename to client/modules/vitis/javascript/directives/activeDirectoryTreeDrtv.js diff --git a/src/vitis/client/modules/vitis/javascript/directives/logsDrtv.js b/client/modules/vitis/javascript/directives/logsDrtv.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/directives/logsDrtv.js rename to client/modules/vitis/javascript/directives/logsDrtv.js diff --git a/src/vitis/client/modules/vitis/javascript/directives/phpInfoConfigurationDrtv.js b/client/modules/vitis/javascript/directives/phpInfoConfigurationDrtv.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/directives/phpInfoConfigurationDrtv.js rename to client/modules/vitis/javascript/directives/phpInfoConfigurationDrtv.js diff --git a/src/vitis/client/modules/vitis/javascript/directives/versionConfigurationDrtv.js b/client/modules/vitis/javascript/directives/versionConfigurationDrtv.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/directives/versionConfigurationDrtv.js rename to client/modules/vitis/javascript/directives/versionConfigurationDrtv.js diff --git a/src/vitis/client/modules/vitis/javascript/directives/webServiceHelpDrtv.js b/client/modules/vitis/javascript/directives/webServiceHelpDrtv.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/directives/webServiceHelpDrtv.js rename to client/modules/vitis/javascript/directives/webServiceHelpDrtv.js diff --git a/src/vitis/client/modules/vitis/javascript/directives/websocketConfigurationDrtv.js b/client/modules/vitis/javascript/directives/websocketConfigurationDrtv.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/directives/websocketConfigurationDrtv.js rename to client/modules/vitis/javascript/directives/websocketConfigurationDrtv.js diff --git a/src/vitis/client/modules/vitis/javascript/script_module.js b/client/modules/vitis/javascript/script_module.js similarity index 100% rename from src/vitis/client/modules/vitis/javascript/script_module.js rename to client/modules/vitis/javascript/script_module.js diff --git a/src/vitis/client/modules/vitis/lang/lang-en.json b/client/modules/vitis/lang/lang-en.json similarity index 100% rename from src/vitis/client/modules/vitis/lang/lang-en.json rename to client/modules/vitis/lang/lang-en.json diff --git a/src/vitis/client/modules/vitis/lang/lang-fr.json b/client/modules/vitis/lang/lang-fr.json similarity index 100% rename from src/vitis/client/modules/vitis/lang/lang-fr.json rename to client/modules/vitis/lang/lang-fr.json diff --git a/src/vitis/client/modules/vitis/less/activeDirectoryTree.less b/client/modules/vitis/less/activeDirectoryTree.less similarity index 100% rename from src/vitis/client/modules/vitis/less/activeDirectoryTree.less rename to client/modules/vitis/less/activeDirectoryTree.less diff --git a/src/vitis/client/modules/vitis/less/logs.less b/client/modules/vitis/less/logs.less similarity index 100% rename from src/vitis/client/modules/vitis/less/logs.less rename to client/modules/vitis/less/logs.less diff --git a/src/vitis/client/modules/vitis/less/main.less b/client/modules/vitis/less/main.less similarity index 100% rename from src/vitis/client/modules/vitis/less/main.less rename to client/modules/vitis/less/main.less diff --git a/src/vitis/client/modules/vitis/less/phpInfoConfiguration.less b/client/modules/vitis/less/phpInfoConfiguration.less similarity index 100% rename from src/vitis/client/modules/vitis/less/phpInfoConfiguration.less rename to client/modules/vitis/less/phpInfoConfiguration.less diff --git a/src/vitis/client/modules/vitis/less/sharedDirectory.less b/client/modules/vitis/less/sharedDirectory.less similarity index 100% rename from src/vitis/client/modules/vitis/less/sharedDirectory.less rename to client/modules/vitis/less/sharedDirectory.less diff --git a/src/vitis/client/modules/vitis/less/updateConfiguration.less b/client/modules/vitis/less/updateConfiguration.less similarity index 100% rename from src/vitis/client/modules/vitis/less/updateConfiguration.less rename to client/modules/vitis/less/updateConfiguration.less diff --git a/src/vitis/client/modules/vitis/less/users.less b/client/modules/vitis/less/users.less similarity index 100% rename from src/vitis/client/modules/vitis/less/users.less rename to client/modules/vitis/less/users.less diff --git a/src/vitis/client/modules/vitis/less/versionConfiguration.less b/client/modules/vitis/less/versionConfiguration.less similarity index 100% rename from src/vitis/client/modules/vitis/less/versionConfiguration.less rename to client/modules/vitis/less/versionConfiguration.less diff --git a/src/vitis/client/modules/vitis/less/webServiceHelp.less b/client/modules/vitis/less/webServiceHelp.less similarity index 100% rename from src/vitis/client/modules/vitis/less/webServiceHelp.less rename to client/modules/vitis/less/webServiceHelp.less diff --git a/src/vitis/client/modules/vitis/templates/activeDirectoryTreeLeftTpl.html b/client/modules/vitis/templates/activeDirectoryTreeLeftTpl.html similarity index 100% rename from src/vitis/client/modules/vitis/templates/activeDirectoryTreeLeftTpl.html rename to client/modules/vitis/templates/activeDirectoryTreeLeftTpl.html diff --git a/src/vitis/client/modules/vitis/templates/activeDirectoryTreeRightTpl.html b/client/modules/vitis/templates/activeDirectoryTreeRightTpl.html similarity index 100% rename from src/vitis/client/modules/vitis/templates/activeDirectoryTreeRightTpl.html rename to client/modules/vitis/templates/activeDirectoryTreeRightTpl.html diff --git a/src/vitis/client/modules/vitis/templates/logsLeftTpl.html b/client/modules/vitis/templates/logsLeftTpl.html similarity index 100% rename from src/vitis/client/modules/vitis/templates/logsLeftTpl.html rename to client/modules/vitis/templates/logsLeftTpl.html diff --git a/src/vitis/client/modules/vitis/templates/logsRightTpl.html b/client/modules/vitis/templates/logsRightTpl.html similarity index 100% rename from src/vitis/client/modules/vitis/templates/logsRightTpl.html rename to client/modules/vitis/templates/logsRightTpl.html diff --git a/src/vitis/client/modules/vitis/templates/phpInfoConfigurationTpl.html b/client/modules/vitis/templates/phpInfoConfigurationTpl.html similarity index 100% rename from src/vitis/client/modules/vitis/templates/phpInfoConfigurationTpl.html rename to client/modules/vitis/templates/phpInfoConfigurationTpl.html diff --git a/src/vitis/client/modules/vitis/templates/updateConfigurationTpl.html b/client/modules/vitis/templates/updateConfigurationTpl.html similarity index 100% rename from src/vitis/client/modules/vitis/templates/updateConfigurationTpl.html rename to client/modules/vitis/templates/updateConfigurationTpl.html diff --git a/src/vitis/client/modules/vitis/templates/versionConfigurationTpl.html b/client/modules/vitis/templates/versionConfigurationTpl.html similarity index 100% rename from src/vitis/client/modules/vitis/templates/versionConfigurationTpl.html rename to client/modules/vitis/templates/versionConfigurationTpl.html diff --git a/src/vitis/client/modules/vitis/templates/webServiceHelpTpl.html b/client/modules/vitis/templates/webServiceHelpTpl.html similarity index 100% rename from src/vitis/client/modules/vitis/templates/webServiceHelpTpl.html rename to client/modules/vitis/templates/webServiceHelpTpl.html diff --git a/src/vitis/client/modules/vitis/templates/websocketConfigurationTpl.html b/client/modules/vitis/templates/websocketConfigurationTpl.html similarity index 100% rename from src/vitis/client/modules/vitis/templates/websocketConfigurationTpl.html rename to client/modules/vitis/templates/websocketConfigurationTpl.html diff --git a/src/vitis/client/templates/clientDocumentationTpl.html b/client/templates/clientDocumentationTpl.html similarity index 100% rename from src/vitis/client/templates/clientDocumentationTpl.html rename to client/templates/clientDocumentationTpl.html diff --git a/src/vitis/client/templates/creditsTpl.html b/client/templates/creditsTpl.html similarity index 100% rename from src/vitis/client/templates/creditsTpl.html rename to client/templates/creditsTpl.html diff --git a/src/vitis/client/templates/doubleFormTpl.html b/client/templates/doubleFormTpl.html similarity index 100% rename from src/vitis/client/templates/doubleFormTpl.html rename to client/templates/doubleFormTpl.html diff --git a/src/vitis/client/templates/formTpl.html b/client/templates/formTpl.html similarity index 100% rename from src/vitis/client/templates/formTpl.html rename to client/templates/formTpl.html diff --git a/src/vitis/client/templates/loginTpl.html b/client/templates/loginTpl.html similarity index 100% rename from src/vitis/client/templates/loginTpl.html rename to client/templates/loginTpl.html diff --git a/src/vitis/client/templates/mainTpl.html b/client/templates/mainTpl.html similarity index 100% rename from src/vitis/client/templates/mainTpl.html rename to client/templates/mainTpl.html diff --git a/src/vitis/client/templates/sectionFormTpl.html b/client/templates/sectionFormTpl.html similarity index 100% rename from src/vitis/client/templates/sectionFormTpl.html rename to client/templates/sectionFormTpl.html diff --git a/src/vitis/client/templates/simpleFormTpl.html b/client/templates/simpleFormTpl.html similarity index 100% rename from src/vitis/client/templates/simpleFormTpl.html rename to client/templates/simpleFormTpl.html diff --git a/src/vitis/client/templates/uiGridActionTpl.html b/client/templates/uiGridActionTpl.html similarity index 100% rename from src/vitis/client/templates/uiGridActionTpl.html rename to client/templates/uiGridActionTpl.html diff --git a/src/vitis/client/templates/uiGridPaginationTpl.html b/client/templates/uiGridPaginationTpl.html similarity index 100% rename from src/vitis/client/templates/uiGridPaginationTpl.html rename to client/templates/uiGridPaginationTpl.html diff --git a/src/vitis/client/templates/workspaceListTpl.html b/client/templates/workspaceListTpl.html similarity index 100% rename from src/vitis/client/templates/workspaceListTpl.html rename to client/templates/workspaceListTpl.html diff --git a/conf/Gruntfile.js b/conf/Gruntfile.js deleted file mode 100755 index 28e9144ebb6cda02295de10949ee891e13c4958e..0000000000000000000000000000000000000000 --- a/conf/Gruntfile.js +++ /dev/null @@ -1,112 +0,0 @@ -module.exports = function (grunt) { - - var compilerPackage = require('google-closure-compiler'); - compilerPackage.grunt(grunt); - - var devMode = grunt.option('dev'); - - var sHome = '../'; - if (devMode) { - sHome = '../client/'; - } - - var sClosureDepsHome = '../../../../../'; - - // Project configuration. - grunt.initConfig({ - 'closure-compiler': { - Extraction: { - files: { - [sHome + '/javascript/extraction.min.js']: [ - // Fichiers Vitis - sHome + 'javascript/require/*.js', - sHome + 'javascript/app/**/*.js', - sHome + 'javascript/externs/formReader/**/*.js', - sHome + 'javascript/externs/mapJSON/**/*.js', - sHome + 'modules/vitis/javascript/**/*.js', - // OpenLayers - sHome + 'javascript/externs/openLayers/**/*.js', - // Fichiers Extraction - sHome + 'conf/requires/*.js', - sHome + 'modules/extraction/javascript/**/*.js' - ] - }, - options: { - js: [ - 'node_modules/google-closure-library/closure/goog/**.js', - '!node_modules/google-closure-library/closure/goog/**_test.js' - ], - externs: [ - 'closure/externs/angular-1.3.js', - 'closure/externs/bingmaps.js', - 'closure/externs/jquery-1.9.js', - 'closure/externs/bootstrap.js', - 'closure/externs/geojson.js', - 'closure/externs/jspdf.js', - 'closure/externs/html2canvas.js' - ], - compilation_level: 'ADVANCED', - manage_closure_dependencies: true, - generate_exports: true, - angular_pass: true, - debug: false, - language_in: 'ECMASCRIPT5', - language_out: 'ECMASCRIPT5', - closure_entry_point: ['vitis'], - create_source_map: sHome + '/javascript/extraction.min.js.map', - output_wrapper: '(function(){\n%output%\n}).call(this)\n//# sourceMappingURL=../javascript/extraction.min.js.map' - } - }, - formReader: { - files: { - [sHome + '/javascript/externs/formReader/formReader.min.js']: [ - // Fichiers FormReader - sHome + 'javascript/externs/formReader/**/*.js' - ] - }, - options: { - compilation_level: 'WHITESPACE_ONLY', - angular_pass: true, - language_in: 'ECMASCRIPT5', - language_out: 'ECMASCRIPT5' - } - } - }, - 'closureDepsWriter': { - options: { - depswriter: 'closure/depswriter/depswriter.py', - root_with_prefix: [ - // Fichiers Vitis - '"' + sHome + 'javascript/app ' + sClosureDepsHome + 'javascript/app"', - '"' + sHome + 'modules/vitis/javascript ' + sClosureDepsHome + 'modules/vitis/javascript"', - '"' + sHome + 'javascript/externs/formReader ' + sClosureDepsHome + 'javascript/externs/formReader"', - '"' + sHome + 'javascript/externs/mapJSON ' + sClosureDepsHome + 'javascript/externs/mapJSON"', - '"' + sHome + 'conf/requires ' + sClosureDepsHome + 'conf/requires"', - // OpenLayers - '"' + sHome + 'javascript/externs/openLayers ' + sClosureDepsHome + 'javascript/externs/openLayers"', - // Fichiers Extraction - '"' + sHome + 'modules/extraction/javascript ' + sClosureDepsHome + 'modules/extraction/javascript"', - // Closure library - '"' + sHome + 'conf/node_modules/google-closure-library/closure/goog ' + sClosureDepsHome + 'conf/node_modules/google-closure-library/closure/goog"' - ] - }, - targetName: { - dest: sHome + '/javascript/extraction.deps.js' - } - } - }); - - grunt.loadNpmTasks('grunt-closure-tools'); - - // Tache par défaut - // cmd: grunt - grunt.registerTask('default', ['closureDepsWriter', 'closure-compiler:Extraction']); - // cmd: grunt generate-deps - grunt.registerTask('generate-deps', ['closureDepsWriter']); - // cmd: grunt formReader minify - grunt.registerTask('minify-formReader', ['closure-compiler:formReader']); - // cmd: grunt formReader and studio minify - grunt.registerTask('minify-libs', ['closure-compiler:formReader']); - // cmd: grunt compile - grunt.registerTask('compile', ['closure-compiler:Extraction']); -}; diff --git a/conf/_install/apache.conf b/conf/_install/apache.conf deleted file mode 100755 index a57db00115b18fa7bd6372477c8df53b4eaa993d..0000000000000000000000000000000000000000 --- a/conf/_install/apache.conf +++ /dev/null @@ -1,6 +0,0 @@ -Alias /extraction[ENV] "[APPDIRECTORY]" - <Directory "[APPDIRECTORY]"> - AllowOverride FileInfo - Options FollowSymLinks - Require all granted - </Directory> diff --git a/conf/_install/dependency.xml b/conf/_install/dependency.xml deleted file mode 100755 index 11848b0b9701ab7ada2328ecff5db9b5de2b8148..0000000000000000000000000000000000000000 --- a/conf/_install/dependency.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Application --> -<installer> - <dependenciesCollection> - <dependency> - <nature>framework</nature> - <name>vitis</name> - <version>next_version</version> - </dependency> - <dependency> - <nature>modules</nature> - <name>module_extraction</name> - <version>next_version</version> - </dependency> - </dependenciesCollection> -</installer> diff --git a/conf/_install/fileToDelete.txt b/conf/_install/fileToDelete.txt deleted file mode 100755 index 5b05a50a454c651556fd9d44df2c88b53b1caf05..0000000000000000000000000000000000000000 --- a/conf/_install/fileToDelete.txt +++ /dev/null @@ -1,2 +0,0 @@ -package.json -Gruntfile.js \ No newline at end of file diff --git a/conf/_install/folderToDelete.txt b/conf/_install/folderToDelete.txt deleted file mode 100755 index 3ff9591f1c764874b1d17e92491d955cff82fb9f..0000000000000000000000000000000000000000 --- a/conf/_install/folderToDelete.txt +++ /dev/null @@ -1 +0,0 @@ -requires \ No newline at end of file diff --git a/conf/credits.json b/conf/credits.json deleted file mode 100755 index 6e2a596b388c9464ddab0005244de976a285b4dc..0000000000000000000000000000000000000000 --- a/conf/credits.json +++ /dev/null @@ -1,156 +0,0 @@ -[ - { - "label": "CREDITS_SOFTWARE", - "rows": [ - { - "type": "text", - "value": "vMap" - } - ] - }, - { - "label": "CREDITS_VERSION", - "rows": [ - { - "type": "text", - "value": "CREDITS_VERSION_CONTENT" - } - ] - }, - { - "label": "CREDITS_DATE", - "rows": [ - { - "type": "text", - "value": "CREDITS_DATE_CONTENT" - } - ] - }, - { - "label": "CREDITS_EDITOR", - "rows": [ - { - "type": "link", - "value": "Veremes", - "url": "http://www.veremes.com" - } - ] - }, - { - "label": "CREDITS_AUTHOR", - "rows": [ - { - "type": "text", - "value": "Armand Bahi" - }, - { - "type": "text", - "value": "Alexandre Bizien" - }, - { - "type": "text", - "value": "Anthony Borghi" - }, - { - "type": "text", - "value": "Frédéric Carretero" - }, - { - "type": "text", - "value": "Olivier Gayte" - }, - { - "type": "text", - "value": "Sébastien Legrand" - }, - { - "type": "text", - "value": "Laurent Panabieres" - }, - { - "type": "text", - "value": "Yoann Perollet" - } - ] - }, - { - "label": "CREDITS_GRAPHICS", - "rows": [ - { - "type": "link", - "value": "Nematis", - "url": "http://www.nematis.com" - } - ] - }, - { - "label": "CREDITS_LIBRARIES", - "rows": [ - { - "type": "link", - "value": "Bootstrap", - "url": "http://getbootstrap.com" - }, - { - "type": "link", - "value": "AngularJS", - "url": "https://angularjs.org" - }, - { - "type": "link", - "value": "Google Closure", - "url": "https://developers.google.com/closure" - }, - { - "type": "link", - "value": "jQuery", - "url": "http://jquery.com" - }, - { - "type": "link", - "value": "Rgraph", - "url": "http://www.rgraph.net" - }, - { - "type": "link", - "value": "CodeMirror", - "url": "http://codemirror.net" - }, - { - "type": "link", - "value": "OpenLayers", - "url": "http://openlayers.org" - }, - { - "type": "link", - "value": "TinyMCE", - "url": "https://www.tinymce.com" - } - ] - }, - { - "label": "CREDITS_CONTACT", - "rows": [ - { - "type": "link", - "value": "www.veremes.com", - "url": "http://www.veremes.com" - }, - { - "type": "link", - "value": "www.veremes.com/nous-contacter#1", - "url": "http://www.veremes.com/nous-contacter#1" - } - ] - }, - { - "label": "CREDITS_LICENSE", - "rows": [ - { - "type": "link", - "value": "Cecill-B", - "url": "http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html" - } - ] - } -] diff --git a/conf/less/variables.less b/conf/less/variables.less deleted file mode 100755 index 9636cd033e250a040d282d02129ea7e3f22e61e1..0000000000000000000000000000000000000000 --- a/conf/less/variables.less +++ /dev/null @@ -1,35 +0,0 @@ - -// user colors -@user-color-theme-1: #23282D; -@user-color-theme-2: #6F8456; - - -// Veremes colors -@veremes-gtf-color: #39468A; -@veremes-majic-color: #CF461F; -@veremes-qualigeo-color: #832C7A; -@veremes-wab-color: #198D9F; -/*@veremes-vmap-color: #CB0650;*/ -@veremes-vmap-color: #198D9F; - -@veremes-map-backgroud-color: #020237; -@veremes-gray-backgroud-color: #3A3A3A; -@veremes-light-gray-backgroud-color: #9A9A9A; - - -// Application colors -@application-color-theme: @veremes-vmap-color; // <- Change this color - -@application-lighen-color-theme: lighten(@application-color-theme, 20%); -@application-darken-color-theme: darken(@application-color-theme, 10%); - -@application-action-1-color: #337ab7; // blue bootstrap -@application-action-2-color: #5cb85c; // green bootstrap - -// Other variables -@ui-grid-bg-image: "../images/ui-grid/wbg.gif"; -@font-color-purple: #020237; - -// Dimension des vignettes dans les listes. -@ui-grid-thumbnail-width: 100px; -@ui-grid-thumbnail-heigth: 60px; \ No newline at end of file diff --git a/conf/package.json b/conf/package.json deleted file mode 100755 index 5b5091d40728e547f4c50369734cf88ed10edef1..0000000000000000000000000000000000000000 --- a/conf/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "Vitis", - "version": "0.1.0" -} diff --git a/conf/requires/config.js b/conf/requires/config.js deleted file mode 100755 index 6d0f540fe9ce3c78b73ce81ec4c05a3d853cdbc1..0000000000000000000000000000000000000000 --- a/conf/requires/config.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; - -goog.provide('vitis.application.config'); - -// Fichiers js et css à charger pour l'application Extraction. -var oApplicationFiles = { - 'css': [ - // Vitis - 'css/lib/bootstrap/css/bootstrap.min.css', - 'css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.min.css', - 'css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.min.css', - 'css/lib/ui-grid/ui-grid.min.css', - 'css/lib/jquery/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css', - 'css/lib/bootstrap-checkbox/build.css', - 'css/lib/bootstrap-checkbox/font-awesome.css', - 'css/lib/jquery/plugins/bootstrap-slider/bootstrap-slider.min.css', - 'css/lib/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.min.css', - 'css/lib/ui-grid/plugins/draggable-rows.less', - 'less/main.less', - // App - 'modules/vitis/less/main.less', - 'modules/extraction/less/main.less', - 'css/lib/codemirror/codemirror.css', - 'css/lib/codemirror/codemirror_foldgutter.css', - 'css/lib/codemirror/map.css', - 'css/lib/codemirror/show-hint.css', - 'css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.css', - 'css/lib/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css', - 'css/lib/jquery/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css', - 'css/lib/viewer/viewer.min.css' - ], - 'js': { - 'externs': [ - // Studio - 'javascript/externs/bootbox/bootbox.min.js', - 'javascript/externs/codemirror/codemirror.min.js', - 'javascript/externs/codemirror/htmlmixed.js', - 'javascript/externs/codemirror/css.js', - 'javascript/externs/codemirror/javascript.js', - 'javascript/externs/codemirror/clike.js', - 'javascript/externs/codemirror/php.js', - 'javascript/externs/codemirror/xml.js', - 'javascript/externs/codemirror/sql.js', - 'javascript/externs/codemirror/map.js', - 'javascript/externs/codemirror/show-hint.js', - 'javascript/externs/codemirror/addon/fold/foldcode.js', - 'javascript/externs/codemirror/addon/fold/foldgutter.js', - 'javascript/externs/codemirror/addon/fold/brace-fold.js', - 'javascript/externs/codemirror/addon/fold/xml-fold.js', - 'javascript/externs/angular/modules/ui-codemirror/ui-codemirror.min.js', - 'javascript/externs/tinymce/tinymce.min.js', - 'javascript/externs/angular/modules/ui-tinymce/tinymce.js', - 'javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.js', - 'javascript/externs/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js', - 'javascript/externs/scripts_cryptage.js', - 'javascript/externs/moment/moment.min.js', - 'javascript/externs/moment/min/moment-with-locales.min.js', - 'javascript/externs/jquery/plugins/notify/notify.js', - 'javascript/externs/jquery/plugins/bootstrap-colorpicker/bootstrap-colorpicker.min.js', - 'javascript/externs/jquery/plugins/bootstrap-confirmation/bootstrap-confirmation.min.js', - 'javascript/externs/jquery/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js', - 'javascript/externs/viewer/viewer.min.js' - ] - }, - 'vitisModuleDependencies': ['ui.codemirror', 'ui.tinymce', 'ui.grid.draggable-rows'] -}; \ No newline at end of file diff --git a/conf/requires/requiresApp.js b/conf/requires/requiresApp.js deleted file mode 100755 index 3417eb6f16157ed7199e004c095080b7c58043f5..0000000000000000000000000000000000000000 --- a/conf/requires/requiresApp.js +++ /dev/null @@ -1,11 +0,0 @@ -/* global goog */ - -/** - * Ce fichier permet de charger les fichiers de l'applicaiton - * de façon non compilée - * @author: Armand Bahi - */ - -goog.provide('vitis.application.requires'); -//goog.require('vmap.script_module'); -goog.require('extraction.script_module'); \ No newline at end of file diff --git a/install.bat b/install.bat deleted file mode 100644 index d3123bf3fd1bea62aa71042192d9505b4fea7982..0000000000000000000000000000000000000000 --- a/install.bat +++ /dev/null @@ -1,18 +0,0 @@ -@echo off -title Install Vitis App -echo Install Vitis App - -cd utils -call init_tree.bat -call copy_hooks.bat - -cd ../client/conf -call npm install grunt --save -call npm install grunt-cli -call npm install grunt-closure-tools --save -call npm install google-closure-compiler@20160911.0.0 --save -call npm install google-closure-library@20160911.0.0 --save -call grunt - -cd .. -pause diff --git a/install.sh b/install.sh deleted file mode 100755 index c67e39752717c3a5b10cb3d1b20c7e1d4304784b..0000000000000000000000000000000000000000 --- a/install.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -# -# -# Script d'initialisation d'un dépot vMap versionné sous git -# Initislise l'ensemble des dépendances sous forme de subtrees -# Crée des symlinks pour re-créer l'arborescence de l'application -# -# - -if [ `whoami` == "root" ]; then - echo "Please, do not run this script as sudo" -else - cd utils/ - ./init_symlinks.sh - ./pull_subtrees.sh - ./copy_hooks.sh - - cd ../conf - npm install grunt --save - npm install grunt-cli - npm install grunt-closure-tools --save - npm install google-closure-compiler@20160911.0.0 --save - npm install google-closure-library@20160911.0.0 --save - grunt -dev -fi diff --git a/pull_subtrees.sh b/pull_subtrees.sh deleted file mode 100755 index d9bc20cf9cd259704bdfb8e563ff8a3c0f2f78da..0000000000000000000000000000000000000000 --- a/pull_subtrees.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# -# -# Récupère les modifications des modules sur l'application -# -# - -if [ `whoami` == "root" ]; then - echo "Please, do not run this script as sudo" -else - cd utils/ - ./pull_subtrees.sh -fi diff --git a/push_subtrees.sh b/push_subtrees.sh deleted file mode 100644 index 098911317857e59aa0e87fb002942c61ddfbc2c1..0000000000000000000000000000000000000000 --- a/push_subtrees.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# -# -# Envoie les modifications de l'application sur les modules -# -# - -if [ `whoami` == "root" ]; then - echo "Please, do not run this script as sudo" -else - cd utils/ - ./push_subtrees.sh -fi diff --git a/src/closure/README.md b/src/closure/README.md deleted file mode 100644 index d28619bfbb0b10de706cd5985e7a7d042204b2d4..0000000000000000000000000000000000000000 --- a/src/closure/README.md +++ /dev/null @@ -1 +0,0 @@ -Google closure exceptions \ No newline at end of file diff --git a/src/closure/conf/depswriter/closurebuilder.py b/src/closure/conf/depswriter/closurebuilder.py deleted file mode 100755 index 7be7661f76c4e9dad1b1ab31f01f88498eee81d3..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/closurebuilder.py +++ /dev/null @@ -1,293 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2009 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Utility for Closure Library dependency calculation. - -ClosureBuilder scans source files to build dependency info. From the -dependencies, the script can produce a manifest in dependency order, -a concatenated script, or compiled output from the Closure Compiler. - -Paths to files can be expressed as individual arguments to the tool (intended -for use with find and xargs). As a convenience, --root can be used to specify -all JS files below a directory. - -usage: %prog [options] [file1.js file2.js ...] -""" - -__author__ = 'nnaze@google.com (Nathan Naze)' - - -import io -import logging -import optparse -import os -import sys - -import depstree -import jscompiler -import source -import treescan - - -def _GetOptionsParser(): - """Get the options parser.""" - - parser = optparse.OptionParser(__doc__) - parser.add_option('-i', - '--input', - dest='inputs', - action='append', - default=[], - help='One or more input files to calculate dependencies ' - 'for. The namespaces in this file will be combined with ' - 'those given with the -n flag to form the set of ' - 'namespaces to find dependencies for.') - parser.add_option('-n', - '--namespace', - dest='namespaces', - action='append', - default=[], - help='One or more namespaces to calculate dependencies ' - 'for. These namespaces will be combined with those given ' - 'with the -i flag to form the set of namespaces to find ' - 'dependencies for. A Closure namespace is a ' - 'dot-delimited path expression declared with a call to ' - 'goog.provide() (e.g. "goog.array" or "foo.bar").') - parser.add_option('--root', - dest='roots', - action='append', - default=[], - help='The paths that should be traversed to build the ' - 'dependencies.') - parser.add_option('-o', - '--output_mode', - dest='output_mode', - type='choice', - action='store', - choices=['list', 'script', 'compiled'], - default='list', - help='The type of output to generate from this script. ' - 'Options are "list" for a list of filenames, "script" ' - 'for a single script containing the contents of all the ' - 'files, or "compiled" to produce compiled output with ' - 'the Closure Compiler. Default is "list".') - parser.add_option('-c', - '--compiler_jar', - dest='compiler_jar', - action='store', - help='The location of the Closure compiler .jar file.') - parser.add_option('-f', - '--compiler_flags', - dest='compiler_flags', - default=[], - action='append', - help='Additional flags to pass to the Closure compiler. ' - 'To pass multiple flags, --compiler_flags has to be ' - 'specified multiple times.') - parser.add_option('-j', - '--jvm_flags', - dest='jvm_flags', - default=[], - action='append', - help='Additional flags to pass to the JVM compiler. ' - 'To pass multiple flags, --jvm_flags has to be ' - 'specified multiple times.') - parser.add_option('--output_file', - dest='output_file', - action='store', - help=('If specified, write output to this path instead of ' - 'writing to standard output.')) - - return parser - - -def _GetInputByPath(path, sources): - """Get the source identified by a path. - - Args: - path: str, A path to a file that identifies a source. - sources: An iterable collection of source objects. - - Returns: - The source from sources identified by path, if found. Converts to - real paths for comparison. - """ - for js_source in sources: - # Convert both to real paths for comparison. - if os.path.realpath(path) == os.path.realpath(js_source.GetPath()): - return js_source - - -def _GetClosureBaseFile(sources): - """Given a set of sources, returns the one base.js file. - - Note that if zero or two or more base.js files are found, an error message - will be written and the program will be exited. - - Args: - sources: An iterable of _PathSource objects. - - Returns: - The _PathSource representing the base Closure file. - """ - base_files = [ - js_source for js_source in sources if _IsClosureBaseFile(js_source) - ] - - if not base_files: - logging.error('No Closure base.js file found.') - sys.exit(1) - if len(base_files) > 1: - logging.error('More than one Closure base.js files found at these paths:') - for base_file in base_files: - logging.error(base_file.GetPath()) - sys.exit(1) - return base_files[0] - - -def _IsClosureBaseFile(js_source): - """Returns true if the given _PathSource is the Closure base.js source.""" - return (os.path.basename(js_source.GetPath()) == 'base.js' and - js_source.provides == set(['goog'])) - - -class _PathSource(source.Source): - """Source file subclass that remembers its file path.""" - - def __init__(self, path): - """Initialize a source. - - Args: - path: str, Path to a JavaScript file. The source string will be read - from this file. - """ - super(_PathSource, self).__init__(source.GetFileContents(path)) - - self._path = path - - def __str__(self): - return 'PathSource %s' % self._path - - def GetPath(self): - """Returns the path.""" - return self._path - - -def _WrapGoogModuleSource(src): - return ('goog.loadModule(function(exports) {{' - '"use strict";' - '{0}' - '\n' # terminate any trailing single line comment. - ';return exports' - '}});\n').format(src) - - -def main(): - logging.basicConfig(format=(sys.argv[0] + ': %(message)s'), - level=logging.INFO) - options, args = _GetOptionsParser().parse_args() - - # Make our output pipe. - if options.output_file: - out = io.open(options.output_file, 'wb') - else: - version = sys.version_info[:2] - if version >= (3, 0): - # Write bytes to stdout - out = sys.stdout.buffer - else: - out = sys.stdout - - sources = set() - - logging.info('Scanning paths...') - for path in options.roots: - for js_path in treescan.ScanTreeForJsFiles(path): - sources.add(_PathSource(js_path)) - - # Add scripts specified on the command line. - for js_path in args: - sources.add(_PathSource(js_path)) - - logging.info('%s sources scanned.', len(sources)) - - # Though deps output doesn't need to query the tree, we still build it - # to validate dependencies. - logging.info('Building dependency tree..') - tree = depstree.DepsTree(sources) - - input_namespaces = set() - inputs = options.inputs or [] - for input_path in inputs: - js_input = _GetInputByPath(input_path, sources) - if not js_input: - logging.error('No source matched input %s', input_path) - sys.exit(1) - input_namespaces.update(js_input.provides) - - input_namespaces.update(options.namespaces) - - if not input_namespaces: - logging.error('No namespaces found. At least one namespace must be ' - 'specified with the --namespace or --input flags.') - sys.exit(2) - - # The Closure Library base file must go first. - base = _GetClosureBaseFile(sources) - deps = [base] + tree.GetDependencies(input_namespaces) - - output_mode = options.output_mode - if output_mode == 'list': - out.writelines([js_source.GetPath() + '\n' for js_source in deps]) - elif output_mode == 'script': - for js_source in deps: - src = js_source.GetSource() - if js_source.is_goog_module: - src = _WrapGoogModuleSource(src) - out.write(src.encode('utf-8') + b'\n') - elif output_mode == 'compiled': - logging.warning("""\ -Closure Compiler now natively understands and orders Closure dependencies and -is prefererred over using this script for performing JavaScript compilation. - -Please migrate your codebase. - -See: -https://github.com/google/closure-compiler/wiki/Managing-Dependencies -""") - - # Make sure a .jar is specified. - if not options.compiler_jar: - logging.error('--compiler_jar flag must be specified if --output is ' - '"compiled"') - sys.exit(2) - - # Will throw an error if the compilation fails. - compiled_source = jscompiler.Compile(options.compiler_jar, - [js_source.GetPath() - for js_source in deps], - jvm_flags=options.jvm_flags, - compiler_flags=options.compiler_flags) - - logging.info('JavaScript compilation succeeded.') - out.write(compiled_source.encode('utf-8')) - - else: - logging.error('Invalid value for --output flag.') - sys.exit(2) - - -if __name__ == '__main__': - main() diff --git a/src/closure/conf/depswriter/depstree.py b/src/closure/conf/depswriter/depstree.py deleted file mode 100755 index f288dd3aa616a9a69390f5ac6dc4411a3a8a419b..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/depstree.py +++ /dev/null @@ -1,189 +0,0 @@ -# Copyright 2009 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Class to represent a full Closure Library dependency tree. - -Offers a queryable tree of dependencies of a given set of sources. The tree -will also do logical validation to prevent duplicate provides and circular -dependencies. -""" - -__author__ = 'nnaze@google.com (Nathan Naze)' - - -class DepsTree(object): - """Represents the set of dependencies between source files.""" - - def __init__(self, sources): - """Initializes the tree with a set of sources. - - Args: - sources: A set of JavaScript sources. - - Raises: - MultipleProvideError: A namespace is provided by muplitple sources. - NamespaceNotFoundError: A namespace is required but never provided. - """ - - self._sources = sources - self._provides_map = dict() - - # Ensure nothing was provided twice. - for source in sources: - for provide in source.provides: - if provide in self._provides_map: - raise MultipleProvideError( - provide, [self._provides_map[provide], source]) - - self._provides_map[provide] = source - - # Check that all required namespaces are provided. - for source in sources: - for require in source.requires: - if require not in self._provides_map: - raise NamespaceNotFoundError(require, source) - - def GetDependencies(self, required_namespaces): - """Get source dependencies, in order, for the given namespaces. - - Args: - required_namespaces: A string (for one) or list (for one or more) of - namespaces. - - Returns: - A list of source objects that provide those namespaces and all - requirements, in dependency order. - - Raises: - NamespaceNotFoundError: A namespace is requested but doesn't exist. - CircularDependencyError: A cycle is detected in the dependency tree. - """ - if isinstance(required_namespaces, str): - required_namespaces = [required_namespaces] - - deps_sources = [] - - for namespace in required_namespaces: - for source in DepsTree._ResolveDependencies( - namespace, [], self._provides_map, []): - if source not in deps_sources: - deps_sources.append(source) - - return deps_sources - - @staticmethod - def _ResolveDependencies(required_namespace, deps_list, provides_map, - traversal_path): - """Resolve dependencies for Closure source files. - - Follows the dependency tree down and builds a list of sources in dependency - order. This function will recursively call itself to fill all dependencies - below the requested namespaces, and then append its sources at the end of - the list. - - Args: - required_namespace: String of required namespace. - deps_list: List of sources in dependency order. This function will append - the required source once all of its dependencies are satisfied. - provides_map: Map from namespace to source that provides it. - traversal_path: List of namespaces of our path from the root down the - dependency/recursion tree. Used to identify cyclical dependencies. - This is a list used as a stack -- when the function is entered, the - current namespace is pushed and popped right before returning. - Each recursive call will check that the current namespace does not - appear in the list, throwing a CircularDependencyError if it does. - - Returns: - The given deps_list object filled with sources in dependency order. - - Raises: - NamespaceNotFoundError: A namespace is requested but doesn't exist. - CircularDependencyError: A cycle is detected in the dependency tree. - """ - - source = provides_map.get(required_namespace) - if not source: - raise NamespaceNotFoundError(required_namespace) - - if required_namespace in traversal_path: - traversal_path.append(required_namespace) # do this *after* the test - - # This must be a cycle. - raise CircularDependencyError(traversal_path) - - # If we don't have the source yet, we'll have to visit this namespace and - # add the required dependencies to deps_list. - if source not in deps_list: - traversal_path.append(required_namespace) - - for require in source.requires: - - # Append all other dependencies before we append our own. - DepsTree._ResolveDependencies(require, deps_list, provides_map, - traversal_path) - deps_list.append(source) - - traversal_path.pop() - - return deps_list - - -class BaseDepsTreeError(Exception): - """Base DepsTree error.""" - - def __init__(self): - Exception.__init__(self) - - -class CircularDependencyError(BaseDepsTreeError): - """Raised when a dependency cycle is encountered.""" - - def __init__(self, dependency_list): - BaseDepsTreeError.__init__(self) - self._dependency_list = dependency_list - - def __str__(self): - return ('Encountered circular dependency:\n%s\n' % - '\n'.join(self._dependency_list)) - - -class MultipleProvideError(BaseDepsTreeError): - """Raised when a namespace is provided more than once.""" - - def __init__(self, namespace, sources): - BaseDepsTreeError.__init__(self) - self._namespace = namespace - self._sources = sources - - def __str__(self): - source_strs = map(str, self._sources) - - return ('Namespace "%s" provided more than once in sources:\n%s\n' % - (self._namespace, '\n'.join(source_strs))) - - -class NamespaceNotFoundError(BaseDepsTreeError): - """Raised when a namespace is requested but not provided.""" - - def __init__(self, namespace, source=None): - BaseDepsTreeError.__init__(self) - self._namespace = namespace - self._source = source - - def __str__(self): - msg = 'Namespace "%s" never provided.' % self._namespace - if self._source: - msg += ' Required in %s' % self._source - return msg diff --git a/src/closure/conf/depswriter/depstree_test.py b/src/closure/conf/depswriter/depstree_test.py deleted file mode 100755 index eb4c99958ec6cabaacd782e49b7a8a16e85c9f61..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/depstree_test.py +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2009 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Unit test for depstree.""" - -__author__ = 'nnaze@google.com (Nathan Naze)' - - -import unittest - -import depstree - - -def _GetProvides(sources): - """Get all namespaces provided by a collection of sources.""" - - provides = set() - for source in sources: - provides.update(source.provides) - return provides - - -class MockSource(object): - """Mock Source file.""" - - def __init__(self, provides, requires): - self.provides = set(provides) - self.requires = set(requires) - - def __repr__(self): - return 'MockSource %s' % self.provides - - -class DepsTreeTestCase(unittest.TestCase): - """Unit test for DepsTree. Tests several common situations and errors.""" - - def AssertValidDependencies(self, deps_list): - """Validates a dependency list. - - Asserts that a dependency list is valid: For every source in the list, - ensure that every require is provided by a source earlier in the list. - - Args: - deps_list: A list of sources that should be in dependency order. - """ - - for i in range(len(deps_list)): - source = deps_list[i] - previous_provides = _GetProvides(deps_list[:i]) - for require in source.requires: - self.assertTrue( - require in previous_provides, - 'Namespace "%s" not provided before required by %s' % ( - require, source)) - - def testSimpleDepsTree(self): - a = MockSource(['A'], ['B', 'C']) - b = MockSource(['B'], []) - c = MockSource(['C'], ['D']) - d = MockSource(['D'], ['E']) - e = MockSource(['E'], []) - - tree = depstree.DepsTree([a, b, c, d, e]) - - self.AssertValidDependencies(tree.GetDependencies('A')) - self.AssertValidDependencies(tree.GetDependencies('B')) - self.AssertValidDependencies(tree.GetDependencies('C')) - self.AssertValidDependencies(tree.GetDependencies('D')) - self.AssertValidDependencies(tree.GetDependencies('E')) - - def testCircularDependency(self): - # Circular deps - a = MockSource(['A'], ['B']) - b = MockSource(['B'], ['C']) - c = MockSource(['C'], ['A']) - - tree = depstree.DepsTree([a, b, c]) - - self.assertRaises(depstree.CircularDependencyError, - tree.GetDependencies, 'A') - - def testRequiresUndefinedNamespace(self): - a = MockSource(['A'], ['B']) - b = MockSource(['B'], ['C']) - c = MockSource(['C'], ['D']) # But there is no D. - - def MakeDepsTree(): - return depstree.DepsTree([a, b, c]) - - self.assertRaises(depstree.NamespaceNotFoundError, MakeDepsTree) - - def testDepsForMissingNamespace(self): - a = MockSource(['A'], ['B']) - b = MockSource(['B'], []) - - tree = depstree.DepsTree([a, b]) - - # There is no C. - self.assertRaises(depstree.NamespaceNotFoundError, - tree.GetDependencies, 'C') - - def testMultipleRequires(self): - a = MockSource(['A'], ['B']) - b = MockSource(['B'], ['C']) - c = MockSource(['C'], []) - d = MockSource(['D'], ['B']) - - tree = depstree.DepsTree([a, b, c, d]) - self.AssertValidDependencies(tree.GetDependencies(['D', 'A'])) - - -if __name__ == '__main__': - unittest.main() diff --git a/src/closure/conf/depswriter/depswriter.py b/src/closure/conf/depswriter/depswriter.py deleted file mode 100755 index a78e0f83c1b315136b043bd6f32415dc881bbb4f..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/depswriter.py +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2009 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Generates out a Closure deps.js file given a list of JavaScript sources. - -Paths can be specified as arguments or (more commonly) specifying trees -with the flags (call with --help for descriptions). - -Usage: depswriter.py [path/to/js1.js [path/to/js2.js] ...] -""" - -import json -import logging -import optparse -import os -import posixpath -import shlex -import sys - -import source -import treescan - - -__author__ = 'nnaze@google.com (Nathan Naze)' - - -def MakeDepsFile(source_map): - """Make a generated deps file. - - Args: - source_map: A dict map of the source path to source.Source object. - - Returns: - str, A generated deps file source. - """ - - # Write in path alphabetical order - paths = sorted(source_map.keys()) - - lines = [] - - for path in paths: - js_source = source_map[path] - - # We don't need to add entries that don't provide anything. - if js_source.provides: - lines.append(_GetDepsLine(path, js_source)) - - return ''.join(lines) - - -def _GetDepsLine(path, js_source): - """Get a deps.js file string for a source.""" - - provides = _ToJsSrc(sorted(js_source.provides)) - requires = _ToJsSrc(sorted(js_source.requires)) - module = 'true' if js_source.is_goog_module else 'false' - - return 'goog.addDependency(\'%s?_\' + sessionStorage[\'build\'], %s, %s, %s);\n' % ( - path, provides, requires, module) - - -def _ToJsSrc(arr): - """Convert a python arr to a js source string.""" - - return json.dumps(arr).replace('"', '\'') - - -def _GetOptionsParser(): - """Get the options parser.""" - - parser = optparse.OptionParser(__doc__) - - parser.add_option('--output_file', - dest='output_file', - action='store', - help=('If specified, write output to this path instead of ' - 'writing to standard output.')) - parser.add_option('--root', - dest='roots', - default=[], - action='append', - help='A root directory to scan for JS source files. ' - 'Paths of JS files in generated deps file will be ' - 'relative to this path. This flag may be specified ' - 'multiple times.') - parser.add_option('--root_with_prefix', - dest='roots_with_prefix', - default=[], - action='append', - help='A root directory to scan for JS source files, plus ' - 'a prefix (if either contains a space, surround with ' - 'quotes). Paths in generated deps file will be relative ' - 'to the root, but preceded by the prefix. This flag ' - 'may be specified multiple times.') - parser.add_option('--path_with_depspath', - dest='paths_with_depspath', - default=[], - action='append', - help='A path to a source file and an alternate path to ' - 'the file in the generated deps file (if either contains ' - 'a space, surround with whitespace). This flag may be ' - 'specified multiple times.') - return parser - - -def _NormalizePathSeparators(path): - """Replaces OS-specific path separators with POSIX-style slashes. - - Args: - path: str, A file path. - - Returns: - str, The path with any OS-specific path separators (such as backslash on - Windows) replaced with URL-compatible forward slashes. A no-op on systems - that use POSIX paths. - """ - return path.replace(os.sep, posixpath.sep) - - -def _GetRelativePathToSourceDict(root, prefix=''): - """Scans a top root directory for .js sources. - - Args: - root: str, Root directory. - prefix: str, Prefix for returned paths. - - Returns: - dict, A map of relative paths (with prefix, if given), to source.Source - objects. - """ - # Remember and restore the cwd when we're done. We work from the root so - # that paths are relative from the root. - start_wd = os.getcwd() - os.chdir(root) - - path_to_source = {} - for path in treescan.ScanTreeForJsFiles('.'): - prefixed_path = _NormalizePathSeparators(os.path.join(prefix, path)) - path_to_source[prefixed_path] = source.Source(source.GetFileContents(path)) - - os.chdir(start_wd) - - return path_to_source - - -def _GetPair(s): - """Return a string as a shell-parsed tuple. Two values expected.""" - try: - # shlex uses '\' as an escape character, so they must be escaped. - s = s.replace('\\', '\\\\') - first, second = shlex.split(s) - return (first, second) - except: - raise Exception('Unable to parse input line as a pair: %s' % s) - - -def main(): - """CLI frontend to MakeDepsFile.""" - logging.basicConfig(format=(sys.argv[0] + ': %(message)s'), - level=logging.INFO) - options, args = _GetOptionsParser().parse_args() - - path_to_source = {} - - # Roots without prefixes - for root in options.roots: - path_to_source.update(_GetRelativePathToSourceDict(root)) - - # Roots with prefixes - for root_and_prefix in options.roots_with_prefix: - root, prefix = _GetPair(root_and_prefix) - path_to_source.update(_GetRelativePathToSourceDict(root, prefix=prefix)) - - # Source paths - for path in args: - path_to_source[path] = source.Source(source.GetFileContents(path)) - - # Source paths with alternate deps paths - for path_with_depspath in options.paths_with_depspath: - srcpath, depspath = _GetPair(path_with_depspath) - path_to_source[depspath] = source.Source(source.GetFileContents(srcpath)) - - # Make our output pipe. - if options.output_file: - out = open(options.output_file, 'w') - else: - out = sys.stdout - - out.write(('// This file was autogenerated by %s.\n' % - os.path.basename(__file__))) - out.write('// Please do not edit.\n') - - out.write(MakeDepsFile(path_to_source)) - - -if __name__ == '__main__': - main() diff --git a/src/closure/conf/depswriter/depswriter_test.py b/src/closure/conf/depswriter/depswriter_test.py deleted file mode 100755 index 8d9bf3b26b093c53e1552993ae22d8dbd04748f9..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/depswriter_test.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2010 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Unit test for depswriter.""" - -__author__ = 'johnlenz@google.com (John Lenz)' - - -import unittest - -import depswriter - - -class MockSource(object): - """Mock Source file.""" - - def __init__(self, provides, requires): - self.provides = set(provides) - self.requires = set(requires) - self.is_goog_module = False - - def __repr__(self): - return 'MockSource %s' % self.provides - - -class DepsWriterTestCase(unittest.TestCase): - """Unit test for depswriter.""" - - def testMakeDepsFile(self): - sources = {} - sources['test.js'] = MockSource(['A'], ['B', 'C']) - deps = depswriter.MakeDepsFile(sources) - - self.assertEqual( - 'goog.addDependency(\'test.js\', [\'A\'], [\'B\', \'C\'], false);\n', - deps) - - def testMakeDepsFileUnicode(self): - sources = {} - sources['test.js'] = MockSource([u'A'], [u'B', u'C']) - deps = depswriter.MakeDepsFile(sources) - - self.assertEqual( - 'goog.addDependency(\'test.js\', [\'A\'], [\'B\', \'C\'], false);\n', - deps) - -if __name__ == '__main__': - unittest.main() diff --git a/src/closure/conf/depswriter/jscompiler.py b/src/closure/conf/depswriter/jscompiler.py deleted file mode 100755 index 76b0253707a76981e8be38d0bab2a10434911b18..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/jscompiler.py +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright 2010 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Utility to use the Closure Compiler CLI from Python.""" - -import logging -import os -import re -import subprocess -import tempfile - -# Pulls just the major and minor version numbers from the first line of -# 'java -version'. Versions are in the format of [0-9]+\.[0-9]+\..* See: -# http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html -_VERSION_REGEX = re.compile(r'"([0-9]+)\.([0-9]+)') - - -class JsCompilerError(Exception): - """Raised if there's an error in calling the compiler.""" - pass - - -def _GetJavaVersionString(): - """Get the version string from the Java VM.""" - return subprocess.check_output(['java', '-version'], stderr=subprocess.STDOUT) - - -def _ParseJavaVersion(version_string): - """Returns a 2-tuple for the current version of Java installed. - - Args: - version_string: String of the Java version (e.g. '1.7.2-ea'). - - Returns: - The major and minor versions, as a 2-tuple (e.g. (1, 7)). - """ - match = _VERSION_REGEX.search(version_string) - if match: - version = tuple(int(x, 10) for x in match.groups()) - assert len(version) == 2 - return version - - -def _JavaSupports32BitMode(): - """Determines whether the JVM supports 32-bit mode on the platform.""" - # Suppresses process output to stderr and stdout from showing up in the - # console as we're only trying to determine 32-bit JVM support. - supported = False - try: - devnull = open(os.devnull, 'wb') - return subprocess.call(['java', '-d32', '-version'], - stdout=devnull, - stderr=devnull) == 0 - except IOError: - pass - else: - devnull.close() - return supported - - -def _GetJsCompilerArgs(compiler_jar_path, java_version, jvm_flags): - """Assembles arguments for call to JsCompiler.""" - - if java_version < (1, 7): - raise JsCompilerError('Closure Compiler requires Java 1.7 or higher. ' - 'Please visit http://www.java.com/getjava') - - args = ['java'] - - # Add JVM flags we believe will produce the best performance. See - # https://groups.google.com/forum/#!topic/closure-library-discuss/7w_O9-vzlj4 - - # Attempt 32-bit mode if available (Java 7 on Mac OS X does not support 32-bit - # mode, for example). - if _JavaSupports32BitMode(): - args += ['-d32'] - - # Prefer the "client" VM. - args += ['-client'] - - # Add JVM flags, if any - if jvm_flags: - args += jvm_flags - - # Add the application JAR. - args += ['-jar', compiler_jar_path] - - return args - - -def _GetFlagFile(source_paths, compiler_flags): - """Writes given source paths and compiler flags to a --flagfile. - - The given source_paths will be written as '--js' flags and the compiler_flags - are written as-is. - - Args: - source_paths: List of string js source paths. - compiler_flags: List of string compiler flags. - - Returns: - The file to which the flags were written. - """ - args = [] - for path in source_paths: - args += ['--js', path] - - # Add compiler flags, if any. - if compiler_flags: - args += compiler_flags - - flags_file = tempfile.NamedTemporaryFile(delete=False) - flags_file.write(' '.join(args)) - flags_file.close() - - return flags_file - - -def Compile(compiler_jar_path, - source_paths, - jvm_flags=None, - compiler_flags=None): - """Prepares command-line call to Closure Compiler. - - Args: - compiler_jar_path: Path to the Closure compiler .jar file. - source_paths: Source paths to build, in order. - jvm_flags: A list of additional flags to pass on to JVM. - compiler_flags: A list of additional flags to pass on to Closure Compiler. - - Returns: - The compiled source, as a string, or None if compilation failed. - """ - - java_version = _ParseJavaVersion(str(_GetJavaVersionString())) - - args = _GetJsCompilerArgs(compiler_jar_path, java_version, jvm_flags) - - # Write source path arguments to flag file for avoiding "The filename or - # extension is too long" error in big projects. See - # https://github.com/google/closure-library/pull/678 - flags_file = _GetFlagFile(source_paths, compiler_flags) - args += ['--flagfile', flags_file.name] - - logging.info('Compiling with the following command: %s', ' '.join(args)) - - try: - return subprocess.check_output(args) - except subprocess.CalledProcessError: - raise JsCompilerError('JavaScript compilation failed.') - finally: - os.remove(flags_file.name) diff --git a/src/closure/conf/depswriter/jscompiler_test.py b/src/closure/conf/depswriter/jscompiler_test.py deleted file mode 100755 index 6f63e414e852da6faed108b11a39dce8d66790c0..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/jscompiler_test.py +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2013 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Unit test for depstree.""" - -__author__ = 'nnaze@google.com (Nathan Naze)' - -import os -import unittest - -import jscompiler - - -class JsCompilerTestCase(unittest.TestCase): - """Unit tests for jscompiler module.""" - - def testGetFlagFile(self): - flags_file = jscompiler._GetFlagFile( - ['path/to/src1.js', 'path/to/src2.js'], ['--test_compiler_flag']) - - def file_get_contents(filename): - with open(filename) as f: - content = f.read() - f.close() - return content - - flags_file_content = file_get_contents(flags_file.name) - os.remove(flags_file.name) - - self.assertEqual( - '--js path/to/src1.js --js path/to/src2.js --test_compiler_flag', - flags_file_content) - - def testGetJsCompilerArgs(self): - - original_check = jscompiler._JavaSupports32BitMode - jscompiler._JavaSupports32BitMode = lambda: False - args = jscompiler._GetJsCompilerArgs('path/to/jscompiler.jar', (1, 7), - ['--test_jvm_flag']) - - self.assertEqual( - ['java', '-client', '--test_jvm_flag', '-jar', - 'path/to/jscompiler.jar'], args) - - def CheckJava15RaisesError(): - jscompiler._GetJsCompilerArgs('path/to/jscompiler.jar', (1, 5), - ['--test_jvm_flag']) - - self.assertRaises(jscompiler.JsCompilerError, CheckJava15RaisesError) - jscompiler._JavaSupports32BitMode = original_check - - def testGetJsCompilerArgs32BitJava(self): - - original_check = jscompiler._JavaSupports32BitMode - - # Should include the -d32 flag only if 32-bit Java is supported by the - # system. - jscompiler._JavaSupports32BitMode = lambda: True - args = jscompiler._GetJsCompilerArgs('path/to/jscompiler.jar', (1, 7), - ['--test_jvm_flag']) - - self.assertEqual( - ['java', '-d32', '-client', '--test_jvm_flag', '-jar', - 'path/to/jscompiler.jar'], args) - - # Should exclude the -d32 flag if 32-bit Java is not supported by the - # system. - jscompiler._JavaSupports32BitMode = lambda: False - args = jscompiler._GetJsCompilerArgs('path/to/jscompiler.jar', (1, 7), - ['--test_jvm_flag']) - - self.assertEqual( - ['java', '-client', '--test_jvm_flag', '-jar', - 'path/to/jscompiler.jar'], args) - - jscompiler._JavaSupports32BitMode = original_check - - def testGetJavaVersion(self): - - def assertVersion(expected, version_string): - self.assertEquals(expected, jscompiler._ParseJavaVersion(version_string)) - - assertVersion((1, 7), _TEST_JAVA_VERSION_STRING) - assertVersion((1, 6), _TEST_JAVA_NESTED_VERSION_STRING) - assertVersion((1, 4), 'java version "1.4.0_03-ea"') - - -_TEST_JAVA_VERSION_STRING = """\ -openjdk version "1.7.0-google-v5" -OpenJDK Runtime Environment (build 1.7.0-google-v5-64327-39803485) -OpenJDK Server VM (build 22.0-b10, mixed mode) -""" - -_TEST_JAVA_NESTED_VERSION_STRING = """\ -Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 -java version "1.6.0_35" -Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811) -Java HotSpot(TM) Client VM (build 20.10-b01-428, mixed mode) -""" - -if __name__ == '__main__': - unittest.main() diff --git a/src/closure/conf/depswriter/source.py b/src/closure/conf/depswriter/source.py deleted file mode 100755 index 0610e6b644f33774336ea7b4d9f36e2d64c19561..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/source.py +++ /dev/null @@ -1,132 +0,0 @@ -# Copyright 2009 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Scans a source JS file for its provided and required namespaces. - -Simple class to scan a JavaScript file and express its dependencies. -""" - -__author__ = 'nnaze@google.com' - - -import codecs -import re - -_BASE_REGEX_STRING = r'^\s*goog\.%s\(\s*[\'"](.+)[\'"]\s*\)' -_MODULE_REGEX = re.compile(_BASE_REGEX_STRING % 'module') -_PROVIDE_REGEX = re.compile(_BASE_REGEX_STRING % 'provide') - -_REQUIRE_REGEX_STRING = (r'^\s*(?:(?:var|let|const)\s+[a-zA-Z_$][a-zA-Z0-9$_]*' - r'\s*=\s*)?goog\.require\(\s*[\'"](.+)[\'"]\s*\)') -_REQUIRES_REGEX = re.compile(_REQUIRE_REGEX_STRING) - -class Source(object): - """Scans a JavaScript source for its provided and required namespaces.""" - - # Matches a "/* ... */" comment. - # Note: We can't definitively distinguish a "/*" in a string literal without a - # state machine tokenizer. We'll assume that a line starting with whitespace - # and "/*" is a comment. - _COMMENT_REGEX = re.compile( - r""" - ^\s* # Start of a new line and whitespace - /\* # Opening "/*" - .*? # Non greedy match of any characters (including newlines) - \*/ # Closing "*/""", - re.MULTILINE | re.DOTALL | re.VERBOSE) - - def __init__(self, source): - """Initialize a source. - - Args: - source: str, The JavaScript source. - """ - - self.provides = set() - self.requires = set() - self.is_goog_module = False - - self._source = source - self._ScanSource() - - def GetSource(self): - """Get the source as a string.""" - return self._source - - @classmethod - def _StripComments(cls, source): - return cls._COMMENT_REGEX.sub('', source) - - @classmethod - def _HasProvideGoogFlag(cls, source): - """Determines whether the @provideGoog flag is in a comment.""" - for comment_content in cls._COMMENT_REGEX.findall(source): - if '@provideGoog' in comment_content: - return True - - return False - - def _ScanSource(self): - """Fill in provides and requires by scanning the source.""" - - stripped_source = self._StripComments(self.GetSource()) - - source_lines = stripped_source.splitlines() - for line in source_lines: - match = _PROVIDE_REGEX.match(line) - if match: - self.provides.add(match.group(1)) - match = _MODULE_REGEX.match(line) - if match: - self.provides.add(match.group(1)) - self.is_goog_module = True - match = _REQUIRES_REGEX.match(line) - if match: - self.requires.add(match.group(1)) - - # Closure's base file implicitly provides 'goog'. - # This is indicated with the @provideGoog flag. - if self._HasProvideGoogFlag(self.GetSource()): - - if len(self.provides) or len(self.requires): - raise Exception( - 'Base file should not provide or require namespaces.') - - self.provides.add('goog') - - -def GetFileContents(path): - """Get a file's contents as a string. - - Args: - path: str, Path to file. - - Returns: - str, Contents of file. - - Raises: - IOError: An error occurred opening or reading the file. - - """ - fileobj = None - try: - fileobj = codecs.open(path, encoding='utf-8-sig') - return fileobj.read() - except IOError as error: - raise IOError('An error occurred opening or reading the file: %s. %s' - % (path, error)) - finally: - if fileobj is not None: - fileobj.close() diff --git a/src/closure/conf/depswriter/source_test.py b/src/closure/conf/depswriter/source_test.py deleted file mode 100755 index eb1591b442c671578bea87ef611d631ce0a8335c..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/source_test.py +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2010 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Unit test for source.""" - -__author__ = 'nnaze@google.com (Nathan Naze)' - - -import unittest - -import source - - -class SourceTestCase(unittest.TestCase): - """Unit test for source. Tests the parser on a known source input.""" - - def testSourceScan(self): - test_source = source.Source(_TEST_SOURCE) - - self.assertEqual(set(['foo', 'foo.test']), - test_source.provides) - self.assertEqual(set(['goog.dom', 'goog.events.EventType']), - test_source.requires) - self.assertFalse(test_source.is_goog_module) - - def testSourceScanBase(self): - test_source = source.Source(_TEST_BASE_SOURCE) - - self.assertEqual(set(['goog']), - test_source.provides) - self.assertEqual(test_source.requires, set()) - self.assertFalse(test_source.is_goog_module) - - def testSourceScanBadBase(self): - - def MakeSource(): - source.Source(_TEST_BAD_BASE_SOURCE) - - self.assertRaises(Exception, MakeSource) - - def testSourceScanGoogModule(self): - test_source = source.Source(_TEST_MODULE_SOURCE) - - self.assertEqual(set(['foo']), - test_source.provides) - self.assertEqual(set(['bar']), - test_source.requires) - self.assertTrue(test_source.is_goog_module) - - def testStripComments(self): - self.assertEquals( - '\nvar foo = function() {}', - source.Source._StripComments(( - '/* This is\n' - ' a comment split\n' - ' over multiple lines\n' - '*/\n' - 'var foo = function() {}'))) - - def testGoogStatementsInComments(self): - test_source = source.Source(_TEST_COMMENT_SOURCE) - - self.assertEqual(set(['foo']), - test_source.provides) - self.assertEqual(set(['goog.events.EventType']), - test_source.requires) - self.assertFalse(test_source.is_goog_module) - - def testHasProvideGoog(self): - self.assertTrue(source.Source._HasProvideGoogFlag(_TEST_BASE_SOURCE)) - self.assertTrue(source.Source._HasProvideGoogFlag(_TEST_BAD_BASE_SOURCE)) - self.assertFalse(source.Source._HasProvideGoogFlag(_TEST_COMMENT_SOURCE)) - - -_TEST_MODULE_SOURCE = """ -goog.module('foo'); -var b = goog.require('bar'); -""" - - -_TEST_SOURCE = """// Fake copyright notice - -/** Very important comment. */ - -goog.provide('foo'); -goog.provide('foo.test'); - -goog.require('goog.dom'); -goog.require('goog.events.EventType'); - -function foo() { - // Set bar to seventeen to increase performance. - this.bar = 17; -} -""" - -_TEST_COMMENT_SOURCE = """// Fake copyright notice - -goog.provide('foo'); - -/* -goog.provide('foo.test'); - */ - -/* -goog.require('goog.dom'); -*/ - -// goog.require('goog.dom'); - -goog.require('goog.events.EventType'); - -function bar() { - this.baz = 55; -} -""" - -_TEST_BASE_SOURCE = """ -/** - * @fileoverview The base file. - * @provideGoog - */ - -var goog = goog || {}; -""" - -_TEST_BAD_BASE_SOURCE = """ -/** - * @fileoverview The base file. - * @provideGoog - */ - -goog.provide('goog'); -""" - - -if __name__ == '__main__': - unittest.main() diff --git a/src/closure/conf/depswriter/treescan.py b/src/closure/conf/depswriter/treescan.py deleted file mode 100755 index 6694593aab0a3ae36a45429f9ca9dead2920b999..0000000000000000000000000000000000000000 --- a/src/closure/conf/depswriter/treescan.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2010 The Closure Library Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS-IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -"""Shared utility functions for scanning directory trees.""" - -import os -import re - - -__author__ = 'nnaze@google.com (Nathan Naze)' - - -# Matches a .js file path. -_JS_FILE_REGEX = re.compile(r'^.+\.js$') - - -def ScanTreeForJsFiles(root): - """Scans a directory tree for JavaScript files. - - Args: - root: str, Path to a root directory. - - Returns: - An iterable of paths to JS files, relative to cwd. - """ - return ScanTree(root, path_filter=_JS_FILE_REGEX) - - -def ScanTree(root, path_filter=None, ignore_hidden=True): - """Scans a directory tree for files. - - Args: - root: str, Path to a root directory. - path_filter: A regular expression filter. If set, only paths matching - the path_filter are returned. - ignore_hidden: If True, do not follow or return hidden directories or files - (those starting with a '.' character). - - Yields: - A string path to files, relative to cwd. - """ - - def OnError(os_error): - raise os_error - - for dirpath, dirnames, filenames in os.walk(root, onerror=OnError): - # os.walk allows us to modify dirnames to prevent decent into particular - # directories. Avoid hidden directories. - for dirname in dirnames: - if ignore_hidden and dirname.startswith('.'): - dirnames.remove(dirname) - - for filename in filenames: - - # nothing that starts with '.' - if ignore_hidden and filename.startswith('.'): - continue - - fullpath = os.path.join(dirpath, filename) - - if path_filter and not path_filter.match(fullpath): - continue - - yield os.path.normpath(fullpath) diff --git a/src/closure/conf/externs/angular-1.3.js b/src/closure/conf/externs/angular-1.3.js deleted file mode 100755 index c3795d2988ff48a966db4c95bd2c112cb1c73f01..0000000000000000000000000000000000000000 --- a/src/closure/conf/externs/angular-1.3.js +++ /dev/null @@ -1,2392 +0,0 @@ -/* - * Copyright 2012 The Closure Compiler Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Externs for Angular 1. - * - * TODO: Mocks. - * TODO: Remaining Services: - * $compileProvider - * $cookies - * $cookieStore - * $document - * $httpBackend - * $interpolate - * $locale - * $resource - * $rootElement - * $rootScope - * $rootScopeProvider - * - * TODO: Resolve two issues with angular.$http - * 1) angular.$http isn't declared as a - * callable type. It should be declared as a function, and properties - * added following the technique used by $timeout, $parse and - * $interval. - * 2) angular.$http.delete cannot be added as an extern - * as it is a reserved keyword. - * Its use is potentially not supported in IE. - * It may be aliased as 'remove' in a future version. - * - * @see http://angularjs.org/ - * @externs - */ - -/** - * @typedef {(Window|Document|Element|Array.<Element>|string|!angular.JQLite| - * NodeList|{length: number})} - */ -var JQLiteSelector; - -/** - * @type {Object} - * @const - */ -var angular = {}; - -/** - * @param {T} self Specifies the object which this should point to when the - * function is run. - * @param {?function(this:T, ...)} fn A function to partially apply. - * @return {!Function} A partially-applied form of the function bind() was - * invoked as a method of. - * @param {...*} args Additional arguments that are partially applied to the - * function. - * @template T - */ -angular.bind = function(self, fn, args) {}; - -/** @typedef {{strictDi: (boolean|undefined)}} */ -angular.BootstrapOptions; - -/** - * @param {Element|HTMLDocument} element - * @param {Array.<string|Function>=} opt_modules - * @param {angular.BootstrapOptions=} opt_config - * @return {!angular.$injector} - */ -angular.bootstrap = function(element, opt_modules, opt_config) {}; - -/** - * @param {T} source - * @param {(Object|Array)=} opt_dest - * @return {T} - * @template T - */ -angular.copy = function(source, opt_dest) {}; - -/** - * @param {(JQLiteSelector|Object)} element - * @param {(JQLiteSelector|Object)=} opt_context - * @return {!angular.JQLite} - */ -angular.element = function(element, opt_context) {}; - -/** - * @param {*} o1 - * @param {*} o2 - * @return {boolean} - */ -angular.equals = function(o1, o2) {}; - -/** - * @param {Object} dest - * @param {...Object} srcs - */ -angular.extend = function(dest, srcs) {}; - -/** - * @param {Object|Array} obj - * @param {Function} iterator - * @param {Object=} opt_context - * @return {Object|Array} - */ -angular.forEach = function(obj, iterator, opt_context) {}; - -/** - * @param {string|T} json - * @return {Object|Array|Date|T} - * @template T - */ -angular.fromJson = function(json) {}; - -/** - * @param {*} arg - * @return {*} - */ -angular.identity = function(arg) {}; - -/** - * @param {Array.<string|Function>} modules - * @return {!angular.$injector} - */ -angular.injector = function(modules) {}; - -/** - * @param {*} value - * @return {boolean} - */ -angular.isArray = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - */ -angular.isDate = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - */ -angular.isDefined = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - */ -angular.isElement = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - */ -angular.isFunction = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - */ -angular.isNumber = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - */ -angular.isObject = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - */ -angular.isString = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - */ -angular.isUndefined = function(value) {}; - -/** - * @param {string} s - * @return {string} - */ -angular.lowercase = function(s) {}; - -angular.mock = {}; - -/** - * @param {string} name - * @param {Array.<string>=} opt_requires - * @param {(Function|Array.<string|Function>)=} opt_configFn - * @return {!angular.Module} - */ -angular.module = function(name, opt_requires, opt_configFn) {}; - -angular.noop = function() {}; - -/** - * @param {Object|Array|Date|string|number} obj - * @param {boolean=} opt_pretty - * @return {string} - */ -angular.toJson = function(obj, opt_pretty) {}; - -/** - * @param {string} s - * @return {string} - */ -angular.uppercase = function(s) {}; - -/** - * @typedef {{ - * enter: (function(!angular.JQLite, !Function): (!Function|undefined)| - * undefined), - * leave: (function(!angular.JQLite, !Function): (!Function|undefined)| - * undefined), - * move: (function(!angular.JQLite, !Function): (!Function|undefined)| - * undefined), - * addClass: (function(!angular.JQLite, !Function): (!Function|undefined)| - * undefined), - * removeClass: (function(!angular.JQLite, !Function): (!Function|undefined)| - * undefined) - * }} - */ -angular.Animation; - -/** - * @param {!angular.JQLite} element - * @param {!Function} done - * @return {(!Function|undefined)} - */ -angular.Animation.enter = function(element, done) {}; - -/** - * @param {!angular.JQLite} element - * @param {!Function} done - * @return {(!Function|undefined)} - */ -angular.Animation.leave = function(element, done) {}; - -/** - * @param {!angular.JQLite} element - * @param {!Function} done - * @return {(!Function|undefined)} - */ -angular.Animation.move = function(element, done) {}; - -/** - * @param {!angular.JQLite} element - * @param {!Function} done - * @return {(!Function|undefined)} - */ -angular.Animation.addClass = function(element, done) {}; - -/** - * @param {!angular.JQLite} element - * @param {!Function} done - * @return {(!Function|undefined)} - */ -angular.Animation.removeClass = function(element, done) {}; - -/** - * @typedef {{ - * $attr: Object.<string,string>, - * $normalize: function(string): string, - * $observe: function(string, function(*)): function(), - * $set: function(string, ?(string|boolean), boolean=, string=) - * }} - */ -angular.Attributes; - -/** - * @type {Object.<string, string>} - */ -angular.Attributes.$attr; - -/** - * @param {string} classVal - */ -angular.Attributes.$addClass = function(classVal) {}; - -/** - * @param {string} classVal - */ -angular.Attributes.$removeClass = function(classVal) {}; - -/** - * @param {string} newClasses - * @param {string} oldClasses - */ -angular.Attributes.$updateClass = function(newClasses, oldClasses) {}; - -/** - * @param {string} name - * @return {string} - */ -angular.Attributes.$normalize = function(name) {}; - -/** - * @param {string} key - * @param {function(*)} fn - * @return {function()} - */ -angular.Attributes.$observe = function(key, fn) {}; - -/** - * @param {string} key - * @param {?(string|boolean)} value - * @param {boolean=} opt_writeAttr - * @param {string=} opt_attrName - */ -angular.Attributes.$set = function(key, value, opt_writeAttr, opt_attrName) {}; - -/** - * @typedef {{ - * pre: (function( - * !angular.Scope=, - * !angular.JQLite=, - * !angular.Attributes=, - * (!Object|!Array.<!Object>)=)| - * undefined), - * post: (function( - * !angular.Scope=, - * !angular.JQLite=, - * !angular.Attributes=, - * (!Object|Array.<!Object>)=)| - * undefined) - * }} - */ -angular.LinkingFunctions; - -/** - * @param {!angular.Scope=} scope - * @param {!angular.JQLite=} iElement - * @param {!angular.Attributes=} iAttrs - * @param {(!Object|!Array.<!Object>)=} controller - */ -angular.LinkingFunctions.pre = function(scope, iElement, iAttrs, controller) {}; - -/** - * @param {!angular.Scope=} scope - * @param {!angular.JQLite=} iElement - * @param {!angular.Attributes=} iAttrs - * @param {(!Object|!Array.<!Object>)=} controller - */ -angular.LinkingFunctions.post = function(scope, iElement, iAttrs, controller) { -}; - -/** - * @typedef {{ - * bindToController: (boolean|undefined), - * compile: (function( - * !angular.JQLite=, !angular.Attributes=, Function=)|undefined), - * controller: (Function|Array.<string|Function>|string|undefined), - * controllerAs: (string|undefined), - * link: (function( - * !angular.Scope=, !angular.JQLite=, !angular.Attributes=, - * (!Object|!Array.<!Object>)=)| - * !angular.LinkingFunctions| - * undefined), - * name: (string|undefined), - * priority: (number|undefined), - * replace: (boolean|undefined), - * require: (string|Array.<string>|undefined), - * restrict: (string|undefined), - * scope: (boolean|Object.<string, string>|undefined), - * template: (string| - * function(!angular.JQLite=,!angular.Attributes=): string| - * undefined), - * templateNamespace: (string|undefined), - * templateUrl: (string| - * function(!angular.JQLite=,!angular.Attributes=)| - * undefined), - * terminal: (boolean|undefined), - * transclude: (boolean|string|undefined) - * }} - */ -angular.Directive; - -/** - * @param {!angular.JQLite=} tElement - * @param {!angular.Attributes=} tAttrs - * @param {Function=} transclude - * @return {Function|angular.LinkingFunctions|undefined} - */ -angular.Directive.compile = function(tElement, tAttrs, transclude) {}; - -angular.Directive.controller = function() {}; - -/** - * @type {string|undefined} - */ -angular.Directive.controllerAs; - -/** - * @type {( - * function(!angular.Scope=, !angular.JQLite=, !angular.Attributes=, - * (!Object|!Array.<!Object>)=)| - * !angular.LinkingFunctions| - * undefined - * )} - */ -angular.Directive.link; - -/** - * @type {(string|undefined)} - */ -angular.Directive.name; - -/** - * @type {(number|undefined)} - */ -angular.Directive.priority; - -/** - * @type {(boolean|undefined)} - */ -angular.Directive.replace; - -/** - * @type {(string|Array.<string>|undefined)} - */ -angular.Directive.require; - -/** - * @type {(string|undefined)} - */ -angular.Directive.restrict; - -/** - * @type {(boolean|Object.<string, string>|undefined)} - */ -angular.Directive.scope; - -/** - * @type {( - * string| - * function(!angular.JQLite=,!angular.Attributes=): string| - * undefined - * )} - */ -angular.Directive.template; - -/** - * @type {(string|function(!angular.JQLite=, !angular.Attributes=)|undefined)} - */ -angular.Directive.templateUrl; - -/** - * @type {(boolean|undefined)} - */ -angular.Directive.terminal; - -/** - * @type {(boolean|string|undefined)} - */ -angular.Directive.transclude; - -/** - * @typedef {{ - * addClass: function(string): !angular.JQLite, - * after: function(JQLiteSelector): !angular.JQLite, - * append: function(JQLiteSelector): !angular.JQLite, - * attr: function(string, (string|boolean)=): - * (!angular.JQLite|string|boolean), - * bind: function(string, Function): !angular.JQLite, - * children: function(): !angular.JQLite, - * clone: function(): !angular.JQLite, - * contents: function(): !angular.JQLite, - * controller: function(string=): Object, - * css: function((string|!Object), string=): (!angular.JQLite|string), - * data: function(string=, *=): *, - * detach: function(): !angular.JQLite, - * empty: function(): !angular.JQLite, - * eq: function(number): !angular.JQLite, - * find: function(string): !angular.JQLite, - * hasClass: function(string): boolean, - * html: function(string=): (!angular.JQLite|string), - * inheritedData: function(string=, *=): *, - * injector: function(): !angular.$injector, - * isolateScope: function(): (!angular.Scope|undefined), - * length: number, - * next: function(): !angular.JQLite, - * on: function(string, Function): !angular.JQLite, - * off: function(string=, Function=): !angular.JQLite, - * one: function(string, Function): !angular.JQLite, - * parent: function(): !angular.JQLite, - * prepend: function(JQLiteSelector): !angular.JQLite, - * prop: function(string, *=): *, - * ready: function(Function): !angular.JQLite, - * remove: function(): !angular.JQLite, - * removeAttr: function(string): !angular.JQLite, - * removeClass: function(string): !angular.JQLite, - * removeData: function(string=): !angular.JQLite, - * replaceWith: function(JQLiteSelector): !angular.JQLite, - * scope: function(): !angular.Scope, - * text: function(string=): (!angular.JQLite|string), - * toggleClass: function(string, boolean=): !angular.JQLite, - * triggerHandler: function(string, *=): !angular.JQLite, - * unbind: function(string=, Function=): !angular.JQLite, - * val: function(string=): (!angular.JQLite|string), - * wrap: function(JQLiteSelector): !angular.JQLite - * }} - */ -angular.JQLite; - -/** - * @param {string} name - * @return {!angular.JQLite} - */ -angular.JQLite.addClass = function(name) {}; - -/** - * @param {JQLiteSelector} element - * @return {!angular.JQLite} - */ -angular.JQLite.after = function(element) {}; - -/** - * @param {JQLiteSelector} element - * @return {!angular.JQLite} - */ -angular.JQLite.append = function(element) {}; - -/** - * @param {string} name - * @param {(string|boolean)=} opt_value - * @return {!angular.JQLite|string|boolean} - */ -angular.JQLite.attr = function(name, opt_value) {}; - -/** - * @param {string} type - * @param {Function} fn - * @return {!angular.JQLite} - */ -angular.JQLite.bind = function(type, fn) {}; - -/** - * @return {!angular.JQLite} - */ -angular.JQLite.children = function() {}; - -/** - * @return {!angular.JQLite} - */ -angular.JQLite.clone = function() {}; - -/** - * @return {!angular.JQLite} - */ -angular.JQLite.contents = function() {}; - -/** - * @param {string=} opt_name - * @return {Object} - */ -angular.JQLite.controller = function(opt_name) {}; - -/** - * @param {(string|!Object)} nameOrObject - * @param {string=} opt_value - * @return {!angular.JQLite|string} - */ -angular.JQLite.css = function(nameOrObject, opt_value) {}; - -/** - * @param {string=} opt_key - * @param {*=} opt_value - * @return {*} - */ -angular.JQLite.data = function(opt_key, opt_value) {}; - -/** - * @param {number} index - * @return {!angular.JQLite} - */ -angular.JQLite.eq = function(index) {}; - -/** - * @param {string} selector - * @return {!angular.JQLite} - */ -angular.JQLite.find = function(selector) {}; - -/** - * @param {string} name - * @return {boolean} - */ -angular.JQLite.hasClass = function(name) {}; - -/** - * @param {string=} opt_value - * @return {!angular.JQLite|string} - */ -angular.JQLite.html = function(opt_value) {}; - -/** - * @param {string=} opt_key - * @param {*=} opt_value - * @return {*} - */ -angular.JQLite.inheritedData = function(opt_key, opt_value) {}; - -/** - * @return {!angular.$injector} - */ -angular.JQLite.injector = function() {}; - -/** @type {number} */ -angular.JQLite.length; - -/** - * @return {!angular.JQLite} - */ -angular.JQLite.next = function() {}; - -/** - * @param {string} type - * @param {Function} fn - * @return {!angular.JQLite} - */ -angular.JQLite.on = function(type, fn) {}; - -/** - * @param {string=} opt_type - * @param {Function=} opt_fn - * @return {!angular.JQLite} - */ -angular.JQLite.off = function(opt_type, opt_fn) {}; - -/** - * @return {!angular.JQLite} - */ -angular.JQLite.parent = function() {}; - -/** - * @param {JQLiteSelector} element - * @return {!angular.JQLite} - */ -angular.JQLite.prepend = function(element) {}; - -/** - * @param {string} name - * @param {*=} opt_value - * @return {*} - */ -angular.JQLite.prop = function(name, opt_value) {}; - -/** - * @param {Function} fn - * @return {!angular.JQLite} - */ -angular.JQLite.ready = function(fn) {}; - -/** - * @return {!angular.JQLite} - */ -angular.JQLite.remove = function() {}; - -/** - * @param {string} name - * @return {!angular.JQLite} - */ -angular.JQLite.removeAttr = function(name) {}; - -/** - * @param {string} name - * @return {!angular.JQLite} - */ -angular.JQLite.removeClass = function(name) {}; - -/** - * @param {string=} opt_name - * @return {!angular.JQLite} - */ -angular.JQLite.removeData = function(opt_name) {}; - -/** - * @param {JQLiteSelector} element - * @return {!angular.JQLite} - */ -angular.JQLite.replaceWith = function(element) {}; - -/** - * @return {!angular.Scope} - */ -angular.JQLite.scope = function() {}; - -/** - * @param {string=} opt_value - * @return {!angular.JQLite|string} - */ -angular.JQLite.text = function(opt_value) {}; - -/** - * @param {string} name - * @param {boolean=} opt_condition - * @return {!angular.JQLite} - */ -angular.JQLite.toggleClass = function(name, opt_condition) {}; - -/** - * @param {string} type - * @param {*=} opt_value - * @return {!angular.JQLite} - */ -angular.JQLite.triggerHandler = function(type, opt_value) {}; - -/** - * @param {string=} opt_type - * @param {Function=} opt_fn - * @return {!angular.JQLite} - */ -angular.JQLite.unbind = function(opt_type, opt_fn) {}; - -/** - * @param {string=} opt_value - * @return {!angular.JQLite|string} - */ -angular.JQLite.val = function(opt_value) {}; - -/** - * @param {JQLiteSelector} element - * @return {!angular.JQLite} - */ -angular.JQLite.wrap = function(element) {}; - -/** - * @typedef {{ - * animation: - * function(string, function(...*):angular.Animation):!angular.Module, - * config: function((Function|Array.<string|Function>)):!angular.Module, - * constant: function(string, *):angular.Module, - * controller: - * (function(string, (Function|Array.<string|Function>)):!angular.Module| - * function(!Object.<(Function|Array.<string|Function>)>): - * !angular.Module), - * directive: - * (function(string, (Function|Array.<string|Function>)):!angular.Module| - * function(!Object.<(Function|Array.<string|Function>)>): - * !angular.Module), - * factory: - * function(string, (Function|Array.<string|Function>)):!angular.Module, - * filter: - * function(string, (Function|Array.<string|Function>)):!angular.Module, - * name: string, - * provider: function(string, - * (Object|Function|Array.<string|Function>)):!angular.Module, - * requires: !Array.<string>, - * run: function((Function|Array.<string|Function>)):!angular.Module, - * service: - * function(string, (Function|Array.<string|Function>)):!angular.Module, - * value: function(string, *):!angular.Module - * }} - */ -angular.Module; - -/** - * @param {string} name - * @param {function(...*):angular.Animation} animationFactory - */ -angular.Module.animation = function(name, animationFactory) {}; - -/** - * @param {Function|Array.<string|Function>} configFn - * @return {!angular.Module} - */ -angular.Module.config = function(configFn) {}; - -/** - * @param {string} name - * @param {*} object - * @return {!angular.Module} - */ -angular.Module.constant = function(name, object) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} constructor - * @return {!angular.Module} - */ -angular.Module.controller = function(name, constructor) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} directiveFactory - * @return {!angular.Module} - */ -angular.Module.directive = function(name, directiveFactory) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} providerFunction - * @return {!angular.Module} - */ -angular.Module.factory = function(name, providerFunction) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} filterFactory - * @return {!angular.Module} - */ -angular.Module.filter = function(name, filterFactory) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} providerType - * @return {!angular.Module} - */ -angular.Module.provider = function(name, providerType) {}; - -/** - * @param {Function|Array.<string|Function>} initializationFn - * @return {!angular.Module} - */ -angular.Module.run = function(initializationFn) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} constructor - * @return {!angular.Module} - */ -angular.Module.service = function(name, constructor) {}; - -/** - * @param {string} name - * @param {*} object - * @return {!angular.Module} - */ -angular.Module.value = function(name, object) {}; - -/** - * @type {string} - */ -angular.Module.name = ''; - -/** - * @type {Array.<string>} - */ -angular.Module.requires; - -/** - * @typedef {{ - * $$phase: string, - * $apply: function((string|function(!angular.Scope))=):*, - * $applyAsync: function((string|function(!angular.Scope))=), - * $broadcast: function(string, ...*), - * $destroy: function(), - * $digest: function(), - * $emit: function(string, ...*), - * $eval: function((string|function(!angular.Scope))=, Object=):*, - * $evalAsync: function((string|function())=), - * $id: string, - * $new: function(boolean=):!angular.Scope, - * $on: function(string, function(!angular.Scope.Event, ...?)):function(), - * $parent: !angular.Scope, - * $root: !angular.Scope, - * $watch: function( - * (string|Function), (string|Function)=, boolean=):function(), - * $watchCollection: function( - * (string|Function), (string|Function)=):function(), - * $watchGroup: function( - * Array.<string|Function>, (string|Function)=):function() - * }} - */ -angular.Scope; - -/** @type {string} */ -angular.Scope.$$phase; - -/** - * @param {(string|function(!angular.Scope))=} opt_exp - * @return {*} - */ -angular.Scope.$apply = function(opt_exp) {}; - -/** - * @param {string} name - * @param {...*} args - */ -angular.Scope.$broadcast = function(name, args) {}; - -angular.Scope.$destroy = function() {}; - -angular.Scope.$digest = function() {}; - -/** - * @param {string} name - * @param {...*} args - */ -angular.Scope.$emit = function(name, args) {}; - -/** - * @param {(string|function())=} opt_exp - * @param {Object=} opt_locals - * @return {*} - */ -angular.Scope.$eval = function(opt_exp, opt_locals) {}; - -/** - * @param {(string|function())=} opt_exp - */ -angular.Scope.$evalAsync = function(opt_exp) {}; - -/** @type {string} */ -angular.Scope.$id; - -/** - * @param {boolean=} opt_isolate - * @return {!angular.Scope} - */ -angular.Scope.$new = function(opt_isolate) {}; - -/** - * @param {string} name - * @param {function(!angular.Scope.Event, ...?)} listener - * @return {function()} - */ -angular.Scope.$on = function(name, listener) {}; - -/** @type {!angular.Scope} */ -angular.Scope.$parent; - -/** @type {!angular.Scope} */ -angular.Scope.$root; - -/** - * @param {string|!Function} exp - * @param {(string|Function)=} opt_listener - * @param {boolean=} opt_objectEquality - * @return {function()} - */ -angular.Scope.$watch = function(exp, opt_listener, opt_objectEquality) {}; - -/** - * @param {string|!Function} exp - * @param {(string|Function)=} opt_listener - * @return {function()} - */ -angular.Scope.$watchCollection = function(exp, opt_listener) {}; - -/** - * @typedef {{ - * currentScope: !angular.Scope, - * defaultPrevented: boolean, - * name: string, - * preventDefault: function(), - * stopPropagation: function(), - * targetScope: !angular.Scope - * }} - */ -angular.Scope.Event; - -/** @type {!angular.Scope} */ -angular.Scope.Event.currentScope; - -/** @type {boolean} */ -angular.Scope.Event.defaultPrevented; - -/** @type {string} */ -angular.Scope.Event.name; - -angular.Scope.Event.preventDefault = function() {}; - -angular.Scope.Event.stopPropagation = function() {}; - -/** @type {!angular.Scope} */ -angular.Scope.Event.targetScope; - -/** - * @type {Object} - */ -angular.version = {}; - -/** - * @type {string} - */ -angular.version.full = ''; - -/** - * @type {number} - */ -angular.version.major = 0; - -/** - * @type {number} - */ -angular.version.minor = 0; - -/** - * @type {number} - */ -angular.version.dot = 0; - -/** - * @type {string} - */ -angular.version.codeName = ''; - -/****************************************************************************** - * $anchorScroll Service - *****************************************************************************/ - -/** - * @typedef {function()} - */ -angular.$anchorScroll; - -/****************************************************************************** - * $anchorScrollProvider Service - *****************************************************************************/ - -/** - * @typedef {{ - * disableAutoScrolling: function() - * }} - */ -angular.$anchorScrollProvider; - -/** - * @type {function()} - */ -angular.$anchorScrollProvider.disableAutoScrolling = function() {}; - -/****************************************************************************** - * $animate Service - *****************************************************************************/ - -/** - * @constructor - */ -angular.$animate; - -/** - * @param {JQLiteSelector} element - * @param {Object} from - * @param {Object} to - * @param {string=} opt_className - * @param {Object.<string, *>=} opt_options - * @return {!angular.$q.Promise} - */ -angular.$animate.prototype.animate = function( - element, from, to, opt_className, opt_options) {}; - -/** - * @param {JQLiteSelector} element - * @param {JQLiteSelector} parentElement - * @param {JQLiteSelector} afterElement - * @param {Object.<string, *>=} opt_options - * @return {!angular.$q.Promise} - */ -angular.$animate.prototype.enter = function( - element, parentElement, afterElement, opt_options) {}; - -/** - * @param {JQLiteSelector} element - * @param {Object.<string, *>=} opt_options - * @return {!angular.$q.Promise} - */ -angular.$animate.prototype.leave = function(element, opt_options) {}; - -/** - * @param {JQLiteSelector} element - * @param {JQLiteSelector} parentElement - * @param {JQLiteSelector} afterElement - * @param {Object.<string, *>=} opt_options - * @return {!angular.$q.Promise} - */ -angular.$animate.prototype.move = function( - element, parentElement, afterElement, opt_options) {}; - -/** - * @param {JQLiteSelector} element - * @param {string} className - * @param {Object.<string, *>=} opt_options - * @return {!angular.$q.Promise} - */ -angular.$animate.prototype.addClass = function( - element, className, opt_options) {}; - -/** - * @param {JQLiteSelector} element - * @param {string} className - * @param {Object.<string, *>=} opt_options - * @return {!angular.$q.Promise} - */ -angular.$animate.prototype.removeClass = function( - element, className, opt_options) {}; - -/** - * @param {JQLiteSelector} element - * @param {string} add - * @param {string} remove - * @param {Object.<string, *>=} opt_options - * @return {!angular.$q.Promise} - */ -angular.$animate.prototype.setClass = function( - element, add, remove, opt_options) {}; - -/** - * @param {boolean=} opt_value - * @param {JQLiteSelector=} opt_element - * @return {boolean} - */ -angular.$animate.prototype.enabled = function(opt_value, opt_element) {}; - -/** - * @param {angular.$q.Promise} animationPromise - */ -angular.$animate.prototype.cancel = function(animationPromise) {}; - -/****************************************************************************** - * $animateProvider Service - *****************************************************************************/ - -/** - * @constructor - */ -angular.$animateProvider; - -/** - * @param {string} name - * @param {Function} factory - */ -angular.$animateProvider.prototype.register = function(name, factory) {}; - -/** - * @param {RegExp=} opt_expression - */ -angular.$animateProvider.prototype.classNameFilter = function( - opt_expression) {}; - -/****************************************************************************** - * $compile Service - *****************************************************************************/ - -/** - * @typedef { - * function( - * (JQLiteSelector|Object), - * function(!angular.Scope, Function=)=, number=): - * function(!angular.Scope, - * function(!angular.JQLite, !angular.Scope=)=): !angular.JQLite} - */ -angular.$compile; - -/****************************************************************************** - * $cacheFactory Service - *****************************************************************************/ - -/** - * @typedef { - * function(string, angular.$cacheFactory.Options=): - * !angular.$cacheFactory.Cache} - */ -angular.$cacheFactory; - -/** - * @typedef {function(string): ?angular.$cacheFactory.Cache} - */ -angular.$cacheFactory.get; - -/** @typedef {{capacity: (number|undefined)}} */ -angular.$cacheFactory.Options; - -/** - * @template T - * @constructor - */ -angular.$cacheFactory.Cache = function() {}; - -/** - * @return {!angular.$cacheFactory.Cache.Info} - */ -angular.$cacheFactory.Cache.prototype.info = function() {}; - -/** - * @param {string} key - * @param {T} value - */ -angular.$cacheFactory.Cache.prototype.put = function(key, value) {}; - -/** - * @param {string} key - * @return {T} - */ -angular.$cacheFactory.Cache.prototype.get = function(key) {}; - -/** - * @param {string} key - */ -angular.$cacheFactory.Cache.prototype.remove = function(key) {}; - -angular.$cacheFactory.Cache.prototype.removeAll = function() {}; -angular.$cacheFactory.Cache.prototype.destroy = function() {}; - -/** - * @typedef {{ - * id: string, - * size: number, - * options: angular.$cacheFactory.Options - * }} - */ -angular.$cacheFactory.Cache.Info; - -/****************************************************************************** - * $controller Service - *****************************************************************************/ - -/** - * @typedef {function((Function|string), Object):Object} - */ -angular.$controller; - -/****************************************************************************** - * $controllerProvider Service - *****************************************************************************/ - -/** - * @typedef {{ - * register: function((string|Object), (Function|Array)), - * allowGlobals: function() - * }} - */ -angular.$controllerProvider; - -/****************************************************************************** - * $exceptionHandler Service - *****************************************************************************/ - -/** - * @typedef {function(Error, string=)} - */ -angular.$exceptionHandler; - -/****************************************************************************** - * $filter Service - *****************************************************************************/ - -/** - * @typedef {function(string): !Function} - */ -angular.$filter; - -/** - * The 'orderBy' filter is available through $filterProvider and AngularJS - * injection; but is not accessed through a documented public API of AngularJS. - * <p>In current AngularJS version the injection is satisfied by - * angular.orderByFunction, where the implementation is found. - * <p>See http://docs.angularjs.org/api/ng.filter:orderBy. - * @typedef {function(Array, - * (string|function(?):*|Array.<(string|function(?):*)>), - * boolean=): Array} - */ -angular.$filter.orderBy; - -/****************************************************************************** - * $filterProvider Service - *****************************************************************************/ - -/** - * @typedef {{ - * register: function(string, (!Function|!Array.<string|!Function>)) - * }} - */ -angular.$filterProvider; - -/** - * @param {string} name - * @param {(!Function|!Array.<string|!Function>)} fn - */ -angular.$filterProvider.register = function(name, fn) {}; - -/****************************************************************************** - * $http Service - *****************************************************************************/ - -/** - * This is a typedef because the closure compiler does not allow - * defining a type that is a function with properties. - * If you are trying to use the $http service as a function, try - * using one of the helper functions instead. - * @typedef {{ - * delete: function(string, angular.$http.Config=):!angular.$http.HttpPromise, - * get: function(string, angular.$http.Config=):!angular.$http.HttpPromise, - * head: function(string, angular.$http.Config=):!angular.$http.HttpPromise, - * jsonp: function(string, angular.$http.Config=):!angular.$http.HttpPromise, - * post: function(string, *, angular.$http.Config=): - * !angular.$http.HttpPromise, - * put: function(string, *, angular.$http.Config=):!angular.$http.HttpPromise, - * defaults: angular.$http.Config, - * pendingRequests: !Array.<angular.$http.Config> - * }} - */ -angular.$http; - -/** - * @typedef {{ - * cache: (boolean|!angular.$cacheFactory.Cache|undefined), - * data: (string|Object|undefined), - * headers: (Object|undefined), - * method: (string|undefined), - * params: (Object.<(string|Object)>|undefined), - * responseType: (string|undefined), - * timeout: (number|!angular.$q.Promise|undefined), - * transformRequest: - * (function((string|Object), Object):(string|Object)| - * Array.<function((string|Object), Object):(string|Object)>|undefined), - * transformResponse: - * (function((string|Object), Object):(string|Object)| - * Array.<function((string|Object), Object):(string|Object)>|undefined), - * url: (string|undefined), - * withCredentials: (boolean|undefined), - * xsrfCookieName: (string|undefined), - * xsrfHeaderName: (string|undefined) - * }} - */ -angular.$http.Config; - -angular.$http.Config.transformRequest; - -angular.$http.Config.transformResponse; - -// /** -// * This extern is currently incomplete as delete is a reserved word. -// * To use delete, index $http. -// * Example: $http['delete'](url, opt_config); -// * @param {string} url -// * @param {angular.$http.Config=} opt_config -// * @return {!angular.$http.HttpPromise} -// */ -// angular.$http.delete = function(url, opt_config) {}; - -/** - * @param {string} url - * @param {angular.$http.Config=} opt_config - * @return {!angular.$http.HttpPromise} - */ -angular.$http.get = function(url, opt_config) {}; - -/** - * @param {string} url - * @param {angular.$http.Config=} opt_config - * @return {!angular.$http.HttpPromise} - */ -angular.$http.head = function(url, opt_config) {}; - -/** - * @param {string} url - * @param {angular.$http.Config=} opt_config - * @return {!angular.$http.HttpPromise} - */ -angular.$http.jsonp = function(url, opt_config) {}; - -/** - * @param {string} url - * @param {*} data - * @param {angular.$http.Config=} opt_config - * @return {!angular.$http.HttpPromise} - */ -angular.$http.post = function(url, data, opt_config) {}; - -/** - * @param {string} url - * @param {*} data - * @param {angular.$http.Config=} opt_config - * @return {!angular.$http.HttpPromise} - */ -angular.$http.put = function(url, data, opt_config) {}; - -/** - * @type {angular.$http.Config} - */ -angular.$http.defaults; - -/** - * @type {Array.<angular.$http.Config>} - * @const - */ -angular.$http.pendingRequests; - -/** - * @typedef {{ - * request: (undefined|(function(!angular.$http.Config): - * !angular.$http.Config|!angular.$q.Promise.<!angular.$http.Config>)), - * requestError: (undefined|(function(Object): !angular.$q.Promise|Object)), - * response: (undefined|(function(!angular.$http.Response): - * !angular.$http.Response|!angular.$q.Promise.<!angular.$http.Response>)), - * responseError: (undefined|(function(Object): !angular.$q.Promise|Object)) - * }} - */ -angular.$http.Interceptor; - -/** - * @typedef {{ - * defaults: !angular.$http.Config, - * interceptors: !Array.<string|function(...*): !angular.$http.Interceptor>, - * useApplyAsync: function(boolean=):(boolean|!angular.$HttpProvider) - * }} - */ -angular.$HttpProvider; - -/** - * @type {angular.$http.Config} - */ -angular.$HttpProvider.defaults; - -/** - * @type {!Array.<string|function(...*): !angular.$http.Interceptor>} - */ -angular.$HttpProvider.interceptors; - -/** - * @param {boolean=} opt_value - * @return {boolean|!angular.$HttpProvider} - */ -angular.$HttpProvider.useApplyAsync = function(opt_value) {}; - -/****************************************************************************** - * $injector Service - *****************************************************************************/ - -/** - * @typedef {{ - * annotate: function((Function|Array.<string|Function>)):Array.<string>, - * get: function(string):(?), - * has: function(string):boolean, - * instantiate: function(Function, Object=):Object, - * invoke: function( - * (!Function|Array.<string|!Function>), Object=, Object=):(?) - * }} - */ -angular.$injector; - -/** - * @param {(!Function|Array.<string|!Function>)} fn - * @return {Array.<string>} - */ -angular.$injector.annotate = function(fn) {}; - -/** - * @param {string} name - * @return {?} - */ -angular.$injector.get = function(name) {}; - -/** - * @param {string} name - * @return {boolean} - */ -angular.$injector.has = function(name) {}; - -/** - * @param {!Function} type - * @param {Object=} opt_locals - * @return {Object} - */ -angular.$injector.instantiate = function(type, opt_locals) {}; - -/** - * @param {(!Function|Array.<string|!Function>)} fn - * @param {Object=} opt_self - * @param {Object=} opt_locals - * @return {?} - */ -angular.$injector.invoke = function(fn, opt_self, opt_locals) {}; - -/****************************************************************************** - * $interpolateProvider Service - *****************************************************************************/ - -/** - * @typedef {{ - * startSymbol: function(string), - * endSymbol: function(string) - * }} - */ -angular.$interpolateProvider; - -/** @type {function(string)} */ -angular.$interpolateProvider.startSymbol; - -/** @type {function(string)} */ -angular.$interpolateProvider.endSymbol; - -/****************************************************************************** - * $interval Service - *****************************************************************************/ - -/** - * @typedef { - * function(function(), number=, number=, boolean=):!angular.$q.Promise - * } - */ -angular.$interval; - -/** - * Augment the angular.$interval type definition by reopening the type via an - * artificial angular.$interval instance. - * - * This allows us to define methods on function objects which is something - * that can't be expressed via typical type annotations. - * - * @type {angular.$interval} - */ -angular.$interval_; - -/** - * @type {function(!angular.$q.Promise):boolean} - */ -angular.$interval_.cancel = function(promise) {}; - -/****************************************************************************** - * $location Service - *****************************************************************************/ - -/** - * @typedef {{ - * absUrl: function():string, - * hash: function(string=):string, - * host: function():string, - * path: function(string=):(string|!angular.$location), - * port: function():number, - * protocol: function():string, - * replace: function(), - * search: function((string|Object.<string, string>)=, - * ?(string|Array.<string>|boolean)=): (!Object|angular.$location), - * url: function(string=):string - * }} - */ -angular.$location; - -/** - * @return {string} - */ -angular.$location.absUrl = function() {}; - -/** - * @param {string=} opt_hash - * @return {string} - */ -angular.$location.hash = function(opt_hash) {}; - -/** - * @return {string} - */ -angular.$location.host = function() {}; - -/** - * @param {string=} opt_path - * @return {string|!angular.$location} - */ -angular.$location.path = function(opt_path) {}; - -/** - * @return {number} - */ -angular.$location.port = function() {}; - -/** - * @return {string} - */ -angular.$location.protocol = function() {}; - -/** - * @type {function()} - */ -angular.$location.replace = function() {}; - -/** - * @param {(string|Object.<string, string>)=} opt_search - * @param {?(string|Array.<string>|boolean)=} opt_paramValue - * @return {(!Object|angular.$location)} - */ -angular.$location.search = function(opt_search, opt_paramValue) {}; - -/** - * @param {string=} opt_url - * @return {string} - */ -angular.$location.url = function(opt_url) {}; - -/****************************************************************************** - * $locationProvider Service - *****************************************************************************/ - -/** - * @typedef {{ - * enabled: (boolean|undefined), - * requireBase: (boolean|undefined) - * }} - */ -angular.$locationProvider.html5ModeConfig; - -/** - * @typedef {{ - * hashPrefix: - * function(string=): (string|!angular.$locationProvider), - * html5Mode: - * function( - * (boolean|angular.$locationProvider.html5ModeConfig)=): - * (boolean|!angular.$locationProvider) - * }} - */ -angular.$locationProvider; - -/** - * @param {string=} opt_prefix - * @return {string|!angular.$locationProvider} - */ -angular.$locationProvider.hashPrefix = function(opt_prefix) {}; - -/** - * @param {(boolean|angular.$locationProvider.html5ModeConfig)=} opt_mode - * @return {boolean|!angular.$locationProvider} - */ -angular.$locationProvider.html5Mode = function(opt_mode) {}; - -/****************************************************************************** - * $log Service - *****************************************************************************/ - -/** - * @typedef {{ - * error: function(...*), - * info: function(...*), - * log: function(...*), - * warn: function(...*) - * }} - */ -angular.$log; - -/** - * @param {...*} var_args - */ -angular.$log.error = function(var_args) {}; - -/** - * @param {...*} var_args - */ -angular.$log.info = function(var_args) {}; - -/** - * @param {...*} var_args - */ -angular.$log.log = function(var_args) {}; - -/** - * @param {...*} var_args - */ -angular.$log.warn = function(var_args) {}; - -/****************************************************************************** - * NgModelController - *****************************************************************************/ - -/** - * @constructor - */ -angular.NgModelController = function() {}; - -/** - * @type {?} - */ -angular.NgModelController.prototype.$modelValue; - -/** - * @type {boolean} - */ -angular.NgModelController.prototype.$dirty; - -/** - * @type {!Object.<boolean>} - */ -angular.NgModelController.prototype.$error; - -/** - * @type {!Array.<function(?):*>} - */ -angular.NgModelController.prototype.$formatters; - -/** - * @type {boolean} - */ -angular.NgModelController.prototype.$invalid; - -/** - * @type {!Array.<function(?):*>} - */ -angular.NgModelController.prototype.$parsers; - -/** - * @type {boolean} - */ -angular.NgModelController.prototype.$pristine; - -angular.NgModelController.prototype.$render = function() {}; - -/** - * @param {string} key - * @param {boolean} isValid - */ -angular.NgModelController.prototype.$setValidity = function(key, isValid) {}; - -/** - * @param {?} value - */ -angular.NgModelController.prototype.$setViewValue = function(value) {}; - -/** - * @type {boolean} - */ -angular.NgModelController.prototype.$valid; - -/** - * @type {!Array.<function()>} - */ -angular.NgModelController.prototype.$viewChangeListeners; - -/** - * @type {?} - */ -angular.NgModelController.prototype.$viewValue; - -/** - * @type {!Object.<string, function(?, ?):*>} - */ -angular.NgModelController.prototype.$validators; - -/** - * @type {Object.<string, function(?, ?):*>} - */ -angular.NgModelController.prototype.$asyncValidators; - -/** - * @type {boolean} - */ -angular.NgModelController.prototype.$untouched; - -/** - * @type {boolean} - */ -angular.NgModelController.prototype.$touched; - -/** - * @param {?} value - */ -angular.NgModelController.prototype.$isEmpty = function(value) {}; - -/** - * @type {function()} - */ -angular.NgModelController.prototype.$setPristine = function() {}; - -/** - * @type {function()} - */ -angular.NgModelController.prototype.$setDirty = function() {}; - -/** - * @type {function()} - */ -angular.NgModelController.prototype.$setUntouched = function() {}; - -/** - * @type {function()} - */ -angular.NgModelController.prototype.$setTouched = function() {}; - -/** - * @type {function()} - */ -angular.NgModelController.prototype.$rollbackViewValue = function() {}; - -/** - * @type {function()} - */ -angular.NgModelController.prototype.$validate = function() {}; - -/** - * @type {function()} - */ -angular.NgModelController.prototype.$commitViewValue = function() {}; - -/****************************************************************************** - * FormController - *****************************************************************************/ - -/** - * @constructor - */ -angular.FormController = function() {}; - -/** - * @param {*} control - */ -angular.FormController.prototype.$addControl = function(control) {}; - -/** - * @type {function()} - */ -angular.FormController.prototype.$rollbackViewValue = function() {}; - -/** - * @type {function()} - */ -angular.FormController.prototype.$commitViewValue = function() {}; - -/** - * @type {boolean} - */ -angular.FormController.prototype.$dirty; - -/** - * @type {!Object.<boolean|!Array.<*>>} - */ -angular.FormController.prototype.$error; - -/** - * @type {boolean} - */ -angular.FormController.prototype.$invalid; - -/** - * @type {string} - */ -angular.FormController.prototype.$name; - -/** - * @type {boolean} - */ -angular.FormController.prototype.$pristine; - -/** - * @param {*} control - */ -angular.FormController.prototype.$removeControl = function(control) {}; - -/** - * @type {function()} - */ -angular.FormController.prototype.$setDirty = function() {}; - -/** - * @type {function()} - */ -angular.FormController.prototype.$setPristine = function() {}; - -/** - * @type {function()} - */ -angular.FormController.prototype.$setUntouched = function() {}; - -/** - * @type {function()} - */ -angular.FormController.prototype.$setSubmitted = function() {}; - -/** - * @type {boolean} - */ -angular.FormController.prototype.$submitted; - -/** - * @param {string} validationToken - * @param {boolean} isValid - * @param {*} control - */ -angular.FormController.prototype.$setValidity = function( - validationToken, isValid, control) {}; - -/** - * @type {boolean} - */ -angular.FormController.prototype.$valid; - -/****************************************************************************** - * $parse Service - *****************************************************************************/ - -/** - * @typedef {function(string):!angular.$parse.Expression} - */ -angular.$parse; - -/** - * @typedef {function((!angular.Scope|!Object), Object=):*} - */ -angular.$parse.Expression; - -/** - * Augment the angular.$parse.Expression type definition by reopening the type - * via an artificial angular.$parse instance. - * - * This allows us to define methods on function objects which is something - * that can't be expressed via typical type annotations. - * - * @type {angular.$parse.Expression} - */ -angular.$parse_; - -/** - * @type {function((!angular.Scope|!Object), *)} - */ -angular.$parse_.assign = function(scope, newValue) {}; - -/****************************************************************************** - * $provide Service - *****************************************************************************/ - -/** - * @typedef {{ - * constant: function(string, *): Object, - * decorator: function(string, (!Function|Array.<string|!Function>)), - * factory: function(string, (!Function|Array.<string|!Function>)): Object, - * provider: function(string, (!Function|Array.<string|!Function>)): Object, - * service: function(string, (!Function|Array.<string|!Function>)): Object, - * value: function(string, *): Object - * }} - */ -angular.$provide; - -/** - * @param {string} name - * @param {*} object - * @return {Object} - */ -angular.$provide.constant = function(name, object) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} decorator - */ -angular.$provide.decorator = function(name, decorator) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} providerFunction - * @return {Object} - */ -angular.$provide.factory = function(name, providerFunction) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} providerType - * @return {Object} - */ -angular.$provide.provider = function(name, providerType) {}; - -/** - * @param {string} name - * @param {Function|Array.<string|Function>} constructor - * @return {Object} - */ -angular.$provide.service = function(name, constructor) {}; - -/** - * @param {string} name - * @param {*} object - * @return {Object} - */ -angular.$provide.value = function(name, object) {}; - -/****************************************************************************** - * $route Service - *****************************************************************************/ - -/** - * @typedef {{ - * reload: function(), - * current: !angular.$route.Route, - * routes: Array.<!angular.$route.Route> - * }} - */ -angular.$route; - -/** @type {function()} */ -angular.$route.reload = function() {}; - -/** - * @param {!Object<string,string>} object - */ -angular.$route.updateParams = function(object) {}; - -/** @type {!angular.$route.Route} */ -angular.$route.current; - -/** @type {Array.<!angular.$route.Route>} */ -angular.$route.routes; - -/** - * @typedef {{ - * $route: angular.$routeProvider.Params, - * locals: Object.<string, *>, - * params: Object.<string, string>, - * pathParams: Object.<string, string>, - * scope: Object.<string, *>, - * originalPath: (string|undefined), - * regexp: (RegExp|undefined) - * }} - */ -angular.$route.Route; - -/** @type {angular.$routeProvider.Params} */ -angular.$route.Route.$route; - -/** @type {Object.<string, *>} */ -angular.$route.Route.locals; - -/** @type {Object.<string, string>} */ -angular.$route.Route.params; - -/** @type {Object.<string, string>} */ -angular.$route.Route.pathParams; - -/** @type {Object.<string, *>} */ -angular.$route.Route.scope; - -/** @type {string|undefined} */ -angular.$route.Route.originalPath; - -/** @type {RegExp|undefined} */ -angular.$route.Route.regexp; - -/****************************************************************************** - * $routeParams Service - *****************************************************************************/ - -// TODO: This should be !Object.<string|boolean> because valueless query params -// (without even an equal sign) come through as boolean "true". - -/** @typedef {!Object.<string>} */ -angular.$routeParams; - -/****************************************************************************** - * $routeProvider Service - *****************************************************************************/ - -/** - * @typedef {{ - * otherwise: - * function( - * (string|!angular.$routeProvider.Params)): !angular.$routeProvider, - * when: - * function( - * string, angular.$routeProvider.Params): !angular.$routeProvider - * }} - */ -angular.$routeProvider; - -/** - * @param {(string|!angular.$routeProvider.Params)} params - * @return {!angular.$routeProvider} - */ -angular.$routeProvider.otherwise = function(params) {}; - -/** - * @param {string} path - * @param {angular.$routeProvider.Params} route - * @return {!angular.$routeProvider} - */ -angular.$routeProvider.when = function(path, route) {}; - -/** - * @typedef {{ - * controller: (Function|Array.<string|Function>|string|undefined), - * controllerAs: (string|undefined), - * template: (string|undefined), - * templateUrl: (string|function(!Object.<string,string>=)|undefined), - * resolve: (Object.<string, ( - * string|Function|Array.<string|Function>|!angular.$q.Promise - * )>|undefined), - * redirectTo: ( - * string|function(Object.<string>, string, Object): string|undefined), - * reloadOnSearch: (boolean|undefined) - * }} - */ -angular.$routeProvider.Params; - -/** @type {Function|Array.<string|Function>|string} */ -angular.$routeProvider.Params.controller; - -/** @type {string} */ -angular.$routeProvider.Params.controllerAs; - -/** @type {string} */ -angular.$routeProvider.Params.template; - -/** @type {string|function(!Object.<string,string>=)} */ -angular.$routeProvider.Params.templateUrl; - -/** - * @type { - * Object.<string, ( - * string|Function|Array.<string|Function>|!angular.$q.Promise - * )>} - */ -angular.$routeProvider.Params.resolve; - -/** @type {string|function(Object.<string>, string, Object): string} */ -angular.$routeProvider.Params.redirectTo; - -/** @type {boolean} */ -angular.$routeProvider.Params.reloadOnSearch; - -/****************************************************************************** - * $sanitize Service - *****************************************************************************/ - -/** @typedef {function(string):string} */ -angular.$sanitize; - -/****************************************************************************** - * $sce Service - *****************************************************************************/ - -/** - * Ref: http://docs.angularjs.org/api/ng.$sce - * - * @typedef {{ - * HTML: string, - * CSS: string, - * URL: string, - * JS: string, - * RESOURCE_URL: string, - * isEnabled: function(): boolean, - * parseAs: function(string, string): !angular.$parse.Expression, - * getTrusted: function(string, *): string, - * trustAs: function(string, string): *, - * parseAsHtml: function(string): !angular.$parse.Expression, - * parseAsCss: function(string): !angular.$parse.Expression, - * parseAsUrl: function(string): !angular.$parse.Expression, - * parseAsJs: function(string): !angular.$parse.Expression, - * parseAsResourceUrl: function(string): !angular.$parse.Expression, - * getTrustedHtml: function(*): string, - * getTrustedCss: function(*): string, - * getTrustedUrl: function(*): string, - * getTrustedJs: function(*): string, - * getTrustedResourceUrl: function(*): string, - * trustAsHtml: function(string): *, - * trustAsCss: function(string): *, - * trustAsUrl: function(string): *, - * trustAsJs: function(string): *, - * trustAsResourceUrl: function(string): * - * }} - *****************************************************************************/ -angular.$sce; - - -/** @const {string} */ -angular.$sce.HTML; - -/** @const {string} */ -angular.$sce.CSS; - -/** @const {string} */ -angular.$sce.URL; - -/** @const {string} */ -angular.$sce.JS; - -/** @const {string} */ -angular.$sce.RESOURCE_URL; - -/** @return {boolean} */ -angular.$sce.isEnabled = function() {}; - -/** - * @param {string} type - * @param {string} expression - * @return {!angular.$parse.Expression} - */ -angular.$sce.parseAs = function(type, expression) {}; - -/** - * @param {string} type - * @param {*} maybeTrusted - * @return {string} - */ -angular.$sce.getTrusted = function(type, maybeTrusted) {}; - -/** - * @param {string} type - * @param {string} trustedValue - * @return {*} - */ -angular.$sce.trustAs = function(type, trustedValue) {}; - -/** - * @param {string} expression - * @return {!angular.$parse.Expression} - */ -angular.$sce.parseAsHtml = function(expression) {}; - -/** - * @param {string} expression - * @return {!angular.$parse.Expression} - */ -angular.$sce.parseAsCss = function(expression) {}; - -/** - * @param {string} expression - * @return {!angular.$parse.Expression} - */ -angular.$sce.parseAsUrl = function(expression) {}; - -/** - * @param {string} expression - * @return {!angular.$parse.Expression} - */ -angular.$sce.parseAsJs = function(expression) {}; - -/** - * @param {string} expression - * @return {!angular.$parse.Expression} - */ -angular.$sce.parseAsResourceUrl = function(expression) {}; - -/** - * @param {*} maybeTrusted - * @return {string} - */ -angular.$sce.getTrustedHtml = function(maybeTrusted) {}; - -/** - * @param {*} maybeTrusted - * @return {string} - */ -angular.$sce.getTrustedCss = function(maybeTrusted) {}; - -/** - * @param {*} maybeTrusted - * @return {string} - */ -angular.$sce.getTrustedUrl = function(maybeTrusted) {}; - -/** - * @param {*} maybeTrusted - * @return {string} - */ -angular.$sce.getTrustedJs = function(maybeTrusted) {}; - -/** - * @param {*} maybeTrusted - * @return {string} - */ -angular.$sce.getTrustedResourceUrl = function(maybeTrusted) {}; - -/** - * @param {string} trustedValue - * @return {*} - */ -angular.$sce.trustAsHtml = function(trustedValue) {}; - -/** - * @param {string} trustedValue - * @return {*} - */ -angular.$sce.trustAsCss = function(trustedValue) {}; - -/** - * @param {string} trustedValue - * @return {*} - */ -angular.$sce.trustAsUrl = function(trustedValue) {}; - -/** - * @param {string} trustedValue - * @return {*} - */ -angular.$sce.trustAsJs = function(trustedValue) {}; - -/** - * @param {string} trustedValue - * @return {*} - */ -angular.$sce.trustAsResourceUrl = function(trustedValue) {}; - -/****************************************************************************** - * $sceDelegate Service - *****************************************************************************/ - -/** - * Ref: http://docs.angularjs.org/api/ng/service/$sceDelegate - * - * @constructor - */ -angular.$sceDelegate = function() {}; - -/** - * @param {string} type - * @param {*} value - * @return {*} - */ -angular.$sceDelegate.prototype.trustAs = function(type, value) {}; - -/** - * Note: because this method overrides Object.prototype.valueOf, the value - * parameter needs to be annotated as optional to keep the compiler happy (as - * otherwise the signature won't match Object.prototype.valueOf). - * - * @override - * @param {*=} value - * @return {*} - */ -angular.$sceDelegate.prototype.valueOf = function(value) {}; - -/** - * @param {string} type - * @param {*} maybeTrusted - * @return {*} - */ -angular.$sceDelegate.prototype.getTrusted = function(type, maybeTrusted) {}; - -/****************************************************************************** - * $sceDelegateProvider Service - *****************************************************************************/ - -/** - * Ref: http://docs.angularjs.org/api/ng/provider/$sceDelegateProvider - * - * @constructor - */ -angular.$sceDelegateProvider = function() {}; - -/** - * @param {Array.<string>=} opt_whitelist - * @return {!Array.<string>} - */ -angular.$sceDelegateProvider.prototype.resourceUrlWhitelist = function( - opt_whitelist) {}; - -/** - * @param {Array.<string>=} opt_blacklist - * @return {!Array.<string>} - */ -angular.$sceDelegateProvider.prototype.resourceUrlBlacklist = function( - opt_blacklist) {}; - -/****************************************************************************** - * $templateCache Service - *****************************************************************************/ - -/** - * @typedef {!angular.$cacheFactory.Cache.<string>} - */ -angular.$templateCache; - -/****************************************************************************** - * $timeout Service - *****************************************************************************/ - -/** - * @typedef {function(function(), number=, boolean=):!angular.$q.Promise} - */ -angular.$timeout; - -/** - * Augment the angular.$timeout type definition by reopening the type via an - * artificial angular.$timeout instance. - * - * This allows us to define methods on function objects which is something - * that can't be expressed via typical type annotations. - * - * @type {angular.$timeout} - */ -angular.$timeout_; - -/** - * @type {function(angular.$q.Promise=):boolean} - */ -angular.$timeout_.cancel = function(promise) {}; - -/****************************************************************************** - * $window Service - *****************************************************************************/ - -/** @typedef {!Window} */ -angular.$window; diff --git a/src/closure/conf/externs/bingmaps.js b/src/closure/conf/externs/bingmaps.js deleted file mode 100755 index 99da4d0224839e7e26651f37279d08f2927e73e9..0000000000000000000000000000000000000000 --- a/src/closure/conf/externs/bingmaps.js +++ /dev/null @@ -1,176 +0,0 @@ -/** - * @externs - */ - - - -/** - * @constructor - */ -var BingMapsCoverageArea = function() {}; - - -/** - * @type {Array.<number>} - */ -BingMapsCoverageArea.prototype.bbox; - - -/** - * @type {number} - */ -BingMapsCoverageArea.prototype.zoomMax; - - -/** - * @type {number} - */ -BingMapsCoverageArea.prototype.zoomMin; - - - -/** - * @constructor - */ -var BingMapsImageryProvider = function() {}; - - -/** - * @type {string} - */ -BingMapsImageryProvider.prototype.attribution; - - -/** - * @type {Array.<BingMapsCoverageArea>} - */ -BingMapsImageryProvider.prototype.coverageAreas; - - - -/** - * @constructor - */ -var BingMapsImageryMetadataResponse = function() {}; - - -/** - * @type {string} - */ -BingMapsImageryMetadataResponse.prototype.authenticationResultCode; - - -/** - * @type {string} - */ -BingMapsImageryMetadataResponse.prototype.brandLogoUri; - - -/** - * @type {string} - */ -BingMapsImageryMetadataResponse.prototype.copyright; - - -/** - * @type {Array.<BingMapsResourceSet>} - */ -BingMapsImageryMetadataResponse.prototype.resourceSets; - - -/** - * @type {number} - */ -BingMapsImageryMetadataResponse.prototype.statusCode; - - -/** - * @type {string} - */ -BingMapsImageryMetadataResponse.prototype.statusDescription; - - -/** - * @type {string} - */ -BingMapsImageryMetadataResponse.prototype.traceId; - - - -/** - * @constructor - */ -var BingMapsResource = function() {}; - - -/** - * @type {number} - */ -BingMapsResource.prototype.imageHeight; - - -/** - * @type {string} - */ -BingMapsResource.prototype.imageUrl; - - -/** - * @type {Array.<string>} - */ -BingMapsResource.prototype.imageUrlSubdomains; - - -/** - * @type {number} - */ -BingMapsResource.prototype.imageWidth; - - -/** - * @type {Array.<BingMapsImageryProvider>} - */ -BingMapsResource.prototype.imageryProviders; - - -/** - * @type {Object} - */ -BingMapsResource.prototype.vintageEnd; - - -/** - * @type {Object} - */ -BingMapsResource.prototype.vintageStart; - - -/** - * @type {number} - */ -BingMapsResource.prototype.zoomMax; - - -/** - * @type {number} - */ -BingMapsResource.prototype.zoomMin; - - - -/** - * @constructor - */ -var BingMapsResourceSet = function() {}; - - -/** - * @type {number} - */ -BingMapsResourceSet.prototype.estimatedTotal; - - -/** - * @type {Array.<BingMapsResource>} - */ -BingMapsResourceSet.prototype.resources; \ No newline at end of file diff --git a/src/closure/conf/externs/bootstrap.js b/src/closure/conf/externs/bootstrap.js deleted file mode 100755 index fb49fcfded06a098b966e90649ddb20dbd69d2b5..0000000000000000000000000000000000000000 --- a/src/closure/conf/externs/bootstrap.js +++ /dev/null @@ -1,242 +0,0 @@ -/** - * @fileoverview Externs for Twitter Bootstrap - * @see http://twitter.github.com/bootstrap/ - * - * @author Qamal Kosim-Satyaputra - * @externs - */ - - - -// --- Modal --- - - - -/** @constructor */ -jQuery.modal.options = function() {}; - -/** @type {boolean} */ -jQuery.modal.options.prototype.backdrop; - -/** @type {boolean} */ -jQuery.modal.options.prototype.keyboard; - -/** @type {boolean} */ -jQuery.modal.options.prototype.show; - -/** - * @param {=(string|jQuery.modal.options)} opt_eventOrOptions - * @return {jQuery} - */ -jQuery.prototype.modal = function(opt_eventOrOptions) {}; - - - -// --- Dropdown --- - - - -/** - * @return {jQuery} - */ -jQuery.prototype.dropdown = function() {}; - - - -// --- Scroll Spy --- - - - -/** @constructor */ -jQuery.scrollspy.options = function() {}; - -/** @type {number} */ -jQuery.scrollspy.options.prototype.offset; - -/** - * @param {=jQuery.scrollspy.options} opt_options - * @return {jQuery} - */ -jQuery.prototype.scrollspy = function(opt_options) {}; - - - -// --- Tabs --- - - - -/** - * @param {=string} opt_event - * @return {jQuery} - */ -jQuery.prototype.tab = function(opt_event) {}; - - - -// --- Tooltips --- - - - -/** @constructor */ -jQuery.tooltip.options = function() {}; - -/** @type {boolean} */ -jQuery.tooltip.prototype.animation; - -/** @type {string|function} */ -jQuery.tooltip.prototype.placement; - -/** @type {string} */ -jQuery.tooltip.prototype.selector; - -/** @type {string|function} */ -jQuery.tooltip.prototype.title; - -/** @type {string} */ -jQuery.tooltip.prototype.trigger; - -/** @type {number|{show: number, hide: number}} */ -jQuery.tooltip.prototype.delay; - -/** - * @param {=(string|jQuery.tooltip.options)} opt_eventOrOptions - * @return {jQuery} - */ -jQuery.prototype.tooltip = function(opt_eventOrOptions) {}; - - - -// --- Popovers --- - - - -/** @constructor */ -jQuery.popover.options = function() {}; - -/** @type {boolean} */ -jQuery.popover.prototype.animation; - -/** @type {string|function} */ -jQuery.popover.prototype.placement; - -/** @type {string} */ -jQuery.popover.prototype.selector; - -/** @type {string} */ -jQuery.popover.prototype.trigger; - -/** @type {string|function} */ -jQuery.popover.prototype.title; - -/** @type {string|function} */ -jQuery.popover.prototype.content; - -/** @type {number|{show: number, hide: number}} */ -jQuery.popover.prototype.delay; - -/** - * @param {=(string|jQuery.tooltip.options)} opt_eventOrOptions - * @return {jQuery} - */ -jQuery.prototype.popover = function(opt_eventOrOptions) {}; - - - -// --- Alerts --- - - - -/** - * @param {=string} opt_event - * @return {jQuery} - */ -jQuery.prototype.alert = function(opt_event) {}; - - - -// --- Buttons --- - - - -/** - * @param {=string} opt_state - * @return {jQuery} - */ -jQuery.prototype.button = function(opt_state) {}; - - - -// --- Collapse --- - - - -/** @constructor */ -jQuery.collapse.options = function() {}; - -/** @type {jQuerySelector} */ -jQuery.collapse.options.prototype.parent; - -/** @type {boolean} */ -jQuery.collapse.options.prototype.toggle; - -/** - * @param {=(string|jQuery.collapse.options)} opt_eventOrOptions - */ -jQuery.prototype.collapse = function(opt_eventOrOptions) {}; - - - -// --- Carousel --- - - - -/** @constructor */ -jQuery.carousel.options = function() {}; - -/** @type {number} */ -jQuery.carousel.options.prototype.interval; - -/** @type {string} */ -jQuery.carousel.options.prototype.pause; - -/** - * @param {=(string|jQuery.carousel.options})} opt_eventOrOptions - */ -jQuery.prototype.carousel = function(opt_eventOrOptions) {}; - - - -// --- Typeahead --- - - - -/** @constructor */ -jQuery.typeahead.options = function() {}; - -/** @type {Array} */ -jQuery.typeahead.options.prototype.source; - -/** @type {number} */ -jQuery.typeahead.options.prototype.items; - -/** @type {function} */ -jQuery.typeahead.options.prototype.matcher; - -/** @type {function} */ -jQuery.typeahead.options.prototype.sorter; - -/** @type {function} */ -jQuery.typeahead.options.prototype.highlighter; - -/** - * @param {=(string|jQuery.typeahead.options)} opt_options - * @return {jQuery} - */ -jQuery.prototype.typeahead = function(opt_options) {}; - -/** - * @param {Element|jQuery|jQuerySelector} - * @param {=jQuery.typeahead.options} opt_options - * @return {jQuery} - */ -jQuery.prototype.typeahead.Constructor = function(element, opt_options) {}; \ No newline at end of file diff --git a/src/closure/conf/externs/geojson.js b/src/closure/conf/externs/geojson.js deleted file mode 100755 index 6ddf03a3cc7ba7623d5442e065046ce92f482adc..0000000000000000000000000000000000000000 --- a/src/closure/conf/externs/geojson.js +++ /dev/null @@ -1,171 +0,0 @@ -/** - * @fileoverview Externs for GeoJSON. - * @see http://geojson.org/geojson-spec.html - * @externs - */ - - - -/** - * @constructor - */ -var GeoJSONObject = function() {}; - - -/** - * @type {!Array.<number>|undefined} - */ -GeoJSONObject.prototype.bbox; - - -/** - * @type {string} - */ -GeoJSONObject.prototype.type; - - -/** - * @type {!GeoJSONCRS|undefined} - */ -GeoJSONObject.prototype.crs; - - - -/** - * @constructor - */ -var GeoJSONCRS = function() {}; - - -/** - * CRS type. One of `link` or `name`. - * @type {string} - */ -GeoJSONCRS.prototype.type; - - -/** - * TODO: remove GeoJSONCRSCode when http://jira.codehaus.org/browse/GEOS-5996 - * is fixed and widely deployed. - * @type {!GeoJSONCRSCode|!GeoJSONCRSName|!GeoJSONLink} - */ -GeoJSONCRS.prototype.properties; - - - -/** - * `GeoJSONCRSCode` is not part of the GeoJSON specification, but is generated - * by GeoServer. - * TODO: remove GeoJSONCRSCode when http://jira.codehaus.org/browse/GEOS-5996 - * is fixed and widely deployed. - * @constructor - */ -var GeoJSONCRSCode = function() {}; - - - -/** - * @constructor - */ -var GeoJSONCRSName = function() {}; - - -/** - * TODO: remove this when http://jira.codehaus.org/browse/GEOS-5996 is fixed - * and widely deployed. - * @type {string} - */ -GeoJSONCRSName.prototype.code; - - -/** - * @type {string} - */ -GeoJSONCRSName.prototype.name; - - - -/** - * @constructor - * @extends {GeoJSONObject} - */ -var GeoJSONGeometry = function() {}; - - -/** - * @type {!Array.<number>|!Array.<!Array.<number>>| - * !Array.<!Array.<!Array.<number>>>} - */ -GeoJSONGeometry.prototype.coordinates; - - - -/** - * @constructor - * @extends {GeoJSONObject} - */ -var GeoJSONGeometryCollection = function() {}; - - -/** - * @type {!Array.<GeoJSONGeometry>} - */ -GeoJSONGeometryCollection.prototype.geometries; - - - -/** - * @constructor - * @extends {GeoJSONObject} - */ -var GeoJSONFeature = function() {}; - - -/** - * @type {GeoJSONGeometry|GeoJSONGeometryCollection} - */ -GeoJSONFeature.prototype.geometry; - - -/** - * @type {number|string|undefined} - */ -GeoJSONFeature.prototype.id; - - -/** - * @type {Object.<string, *>} - */ -GeoJSONFeature.prototype.properties; - - - -/** - * @constructor - * @extends {GeoJSONObject} - */ -var GeoJSONFeatureCollection = function() {}; - - -/** - * @type {!Array.<GeoJSONFeature>} - */ -GeoJSONFeatureCollection.prototype.features; - - - -/** - * @constructor - */ -var GeoJSONLink = function() {}; - - -/** - * @type {string} - */ -GeoJSONLink.prototype.href; - -/** - * @type {string} - */ -GeoJSONLink.prototype.type; \ No newline at end of file diff --git a/src/closure/conf/externs/html2canvas.js b/src/closure/conf/externs/html2canvas.js deleted file mode 100755 index d12202e32f6fd2db7b14312b65d06e30b9e94c78..0000000000000000000000000000000000000000 --- a/src/closure/conf/externs/html2canvas.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * - * @param {type} arg1 - * @param {type} arg2 - * @returns {html2canvas} - */ -function html2canvas (arg1, arg2) {}; - diff --git a/src/closure/conf/externs/jquery-1.9.js b/src/closure/conf/externs/jquery-1.9.js deleted file mode 100755 index 72b80b31763c2810407a6faf2644d318d8c34a5b..0000000000000000000000000000000000000000 --- a/src/closure/conf/externs/jquery-1.9.js +++ /dev/null @@ -1,2166 +0,0 @@ -/* - * Copyright 2011 The Closure Compiler Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Externs for jQuery 1.9.1 - * - * Note that some functions use different return types depending on the number - * of parameters passed in. In these cases, you may need to annotate the type - * of the result in your code, so the JSCompiler understands which type you're - * expecting. For example: - * <code>var elt = /** @type {Element} * / (foo.get(0));</code> - * - * @see http://api.jquery.com/ - * @externs - */ - -/** - * @typedef {(Window|Document|Element|Array.<Element>|string|jQuery| - * NodeList)} - */ -var jQuerySelector; - -/** @typedef {function(...)|Array.<function(...)>} */ -var jQueryCallback; - -/** @typedef { - { - accepts: (Object.<string, string>|undefined), - async: (?boolean|undefined), - beforeSend: (function(jQuery.jqXHR, (jQueryAjaxSettings|Object.<string, *>))|undefined), - cache: (?boolean|undefined), - complete: (function(jQuery.jqXHR, string)|undefined), - contents: (Object.<string, RegExp>|undefined), - contentType: (?string|undefined), - context: (Object.<?, ?>|jQueryAjaxSettings|undefined), - converters: (Object.<string, Function>|undefined), - crossDomain: (?boolean|undefined), - data: (Object.<?, ?>|?string|Array.<?>|undefined), - dataFilter: (function(string, string):?|undefined), - dataType: (?string|undefined), - error: (function(jQuery.jqXHR, string, string)|undefined), - global: (?boolean|undefined), - headers: (Object.<?, ?>|undefined), - ifModified: (?boolean|undefined), - isLocal: (?boolean|undefined), - jsonp: (?string|undefined), - jsonpCallback: (?string|function()|undefined), - mimeType: (?string|undefined), - password: (?string|undefined), - processData: (?boolean|undefined), - scriptCharset: (?string|undefined), - statusCode: (Object.<number, function()>|undefined), - success: (function(?, string, jQuery.jqXHR)|undefined), - timeout: (?number|undefined), - traditional: (?boolean|undefined), - type: (?string|undefined), - url: (?string|undefined), - username: (?string|undefined), - xhr: (function():(ActiveXObject|XMLHttpRequest)|undefined), - xhrFields: (Object.<?, ?>|undefined) - }} */ -var jQueryAjaxSettings; - -/** - * @constructor - * @param {(jQuerySelector|Element|Object|Array.<Element>|jQuery|string| - * function())=} arg1 - * @param {(Element|jQuery|Document| - * Object.<string, (string|function(!jQuery.event=))>)=} arg2 - * @return {!jQuery} - */ -function jQuery(arg1, arg2) {} - -/** - * @constructor - * @extends {jQuery} - * @param {(jQuerySelector|Element|Object|Array.<Element>|jQuery|string| - * function())=} arg1 - * @param {(Element|jQuery|Document| - * Object.<string, (string|function(!jQuery.event=))>)=} arg2 - * @return {!jQuery} - */ -function $(arg1, arg2) {} - -/** - * @param {(jQuerySelector|Array.<Element>|string|jQuery)} arg1 - * @param {Element=} context - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.add = function(arg1, context) {}; - -/** - * @param {(jQuerySelector|Array.<Element>|string|jQuery)=} arg1 - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.addBack = function(arg1) {}; - -/** - * @param {(string|function(number,String))} arg1 - * @return {!jQuery} - */ -jQuery.prototype.addClass = function(arg1) {}; - -/** - * @param {(string|Element|jQuery|function(number))} arg1 - * @param {(string|Element|Array.<Element>|jQuery)=} content - * @return {!jQuery} - */ -jQuery.prototype.after = function(arg1, content) {}; - -/** - * @param {(string|jQueryAjaxSettings|Object.<string,*>)} arg1 - * @param {(jQueryAjaxSettings|Object.<string, *>)=} settings - * @return {jQuery.jqXHR} - */ -jQuery.ajax = function(arg1, settings) {}; - -/** - * @param {(string|jQueryAjaxSettings|Object.<string, *>)} arg1 - * @param {(jQueryAjaxSettings|Object.<string, *>)=} settings - * @return {jQuery.jqXHR} - */ -$.ajax = function(arg1, settings) {}; - -/** - * @param {function(!jQuery.event,XMLHttpRequest,(jQueryAjaxSettings|Object.<string, *>))} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxComplete = function(handler) {}; - -/** - * @param {function(!jQuery.event,jQuery.jqXHR,(jQueryAjaxSettings|Object.<string, *>),*)} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxError = function(handler) {}; - -/** - * @param {(string|function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR))} dataTypes - * @param {function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR)=} handler - */ -jQuery.ajaxPrefilter = function(dataTypes, handler) {}; - -/** - * @param {(string|function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR))} dataTypes - * @param {function((jQueryAjaxSettings|Object.<string, *>),(jQueryAjaxSettings|Object.<string, *>),jQuery.jqXHR)=} handler - */ -$.ajaxPrefilter = function(dataTypes, handler) {}; - -/** - * @param {function(!jQuery.event,jQuery.jqXHR,(jQueryAjaxSettings|Object.<string, *>))} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxSend = function(handler) {}; - -/** @const {jQueryAjaxSettings|Object.<string, *>} */ -jQuery.ajaxSettings; - -/** @const {jQueryAjaxSettings|Object.<string, *>} */ -$.ajaxSettings = {}; - -/** @type {Object.<string, boolean>} */ -jQuery.ajaxSettings.flatOptions = {}; - -/** @type {Object.<string, boolean>} */ -$.ajaxSettings.flatOptions = {}; - -/** @type {boolean} */ -jQuery.ajaxSettings.processData; - -/** @type {boolean} */ -$.ajaxSettings.processData; - -/** @type {Object.<string, string>} */ -jQuery.ajaxSettings.responseFields = {}; - -/** @type {Object.<string, string>} */ -$.ajaxSettings.responseFields = {}; - -/** @param {jQueryAjaxSettings|Object.<string, *>} options */ -jQuery.ajaxSetup = function(options) {}; - -/** @param {jQueryAjaxSettings|Object.<string, *>} options */ -$.ajaxSetup = function(options) {}; - -/** - * @param {function()} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxStart = function(handler) {}; - -/** - * @param {function()} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxStop = function(handler) {}; - -/** - * @param {function(!jQuery.event,XMLHttpRequest,(jQueryAjaxSettings|Object.<string, *>), ?)} handler - * @return {!jQuery} - */ -jQuery.prototype.ajaxSuccess = function(handler) {}; - -/** - * @deprecated Please use .addBack(selector) instead. - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.andSelf = function() {}; - -/** - * @param {Object.<string,*>} properties - * @param {(string|number|function()|Object.<string,*>)=} arg2 - * @param {(string|function())=} easing - * @param {function()=} complete - * @return {!jQuery} - */ -jQuery.prototype.animate = function(properties, arg2, easing, complete) {}; - -/** - * @param {(string|Element|Array.<Element>|jQuery|function(number,string))} arg1 - * @param {...(string|Element|Array.<Element>|jQuery)} content - * @return {!jQuery} - */ -jQuery.prototype.append = function(arg1, content) {}; - -/** - * @param {(jQuerySelector|Element|jQuery)} target - * @return {!jQuery} - */ -jQuery.prototype.appendTo = function(target) {}; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {(string|number|boolean|function(number,string))=} arg2 - * @return {(string|!jQuery)} - */ -jQuery.prototype.attr = function(arg1, arg2) {}; - -/** - * @param {(string|Element|jQuery|function())} arg1 - * @param {(string|Element|Array.<Element>|jQuery)=} content - * @return {!jQuery} - */ -jQuery.prototype.before = function(arg1, content) {}; - -/** - * @param {(string|Object.<string, function(!jQuery.event=)>)} arg1 - * @param {(Object.<string, *>|function(!jQuery.event=)|boolean)=} eventData - * @param {(function(!jQuery.event=)|boolean)=} arg3 - * @return {!jQuery} - */ -jQuery.prototype.bind = function(arg1, eventData, arg3) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.blur = function(arg1, handler) {}; - -/** - * @constructor - * @private - */ -jQuery.callbacks = function () {}; - -/** - * @param {string=} flags - * @return {jQuery.callbacks} - */ -jQuery.Callbacks = function (flags) {}; - -/** @param {function()} callbacks */ -jQuery.callbacks.prototype.add = function(callbacks) {}; - -/** @return {undefined} */ -jQuery.callbacks.prototype.disable = function() {}; - -/** @return {undefined} */ -jQuery.callbacks.prototype.empty = function() {}; - -/** @param {...*} var_args */ -jQuery.callbacks.prototype.fire = function(var_args) {}; - -/** @return {boolean} */ -jQuery.callbacks.prototype.fired = function() {}; - -/** @param {...*} var_args */ -jQuery.callbacks.prototype.fireWith = function(var_args) {}; - -/** - * @param {function()} callback - * @return {boolean} - * @nosideeffects - */ -jQuery.callbacks.prototype.has = function(callback) {}; - -/** @return {undefined} */ -jQuery.callbacks.prototype.lock = function() {}; - -/** @return {boolean} */ -jQuery.callbacks.prototype.locked = function() {}; - -/** @param {function()} callbacks */ -jQuery.callbacks.prototype.remove = function(callbacks) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.change = function(arg1, handler) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.children = function(selector) {}; - -/** - * @param {string=} queueName - * @return {!jQuery} - */ -jQuery.prototype.clearQueue = function(queueName) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.click = function(arg1, handler) {}; - -/** - * @param {boolean=} withDataAndEvents - * @param {boolean=} deepWithDataAndEvents - * @return {!jQuery} - * @suppress {checkTypes} see https://code.google.com/p/closure-compiler/issues/detail?id=583 - */ -jQuery.prototype.clone = function(withDataAndEvents, deepWithDataAndEvents) {}; - -/** - * @param {(jQuerySelector|jQuery|Element|string)} arg1 - * @param {Element=} context - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.closest = function(arg1, context) {}; - -/** - * @param {Element} container - * @param {Element} contained - * @return {boolean} - */ -jQuery.contains = function(container, contained) {}; - -/** - * @param {Element} container - * @param {Element} contained - * @return {boolean} - */ -$.contains = function(container, contained) {}; - -/** - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.contents = function() {}; - -/** @type {Element|Document} */ -jQuery.prototype.context; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {(string|number|function(number,*))=} arg2 - * @return {(string|!jQuery)} - */ -jQuery.prototype.css = function(arg1, arg2) {}; - -/** @type {Object.<string, *>} */ -jQuery.cssHooks; - -/** @type {Object.<string, *>} */ -$.cssHooks; - -/** - * @param {Element} elem - * @param {string=} key - * @param {*=} value - * @return {*} - */ -jQuery.data = function(elem, key, value) {}; - -/** - * @param {(string|Object.<string, *>)=} arg1 - * @param {*=} value - * @return {*} - */ -jQuery.prototype.data = function(arg1, value) {}; - -/** - * @param {Element} elem - * @param {string=} key - * @param {*=} value - * @return {*} - */ -$.data = function(elem, key, value) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.dblclick = function(arg1, handler) {}; - -/** - * @constructor - * @implements {jQuery.Promise} - * @param {function()=} opt_fn - * @see http://api.jquery.com/category/deferred-object/ - */ -jQuery.deferred = function(opt_fn) {}; - -/** - * @constructor - * @extends {jQuery.deferred} - * @param {function()=} opt_fn - * @return {jQuery.Deferred} - */ -jQuery.Deferred = function(opt_fn) {}; - -/** - * @constructor - * @extends {jQuery.deferred} - * @param {function()=} opt_fn - * @see http://api.jquery.com/category/deferred-object/ - */ -$.deferred = function(opt_fn) {}; - -/** - * @constructor - * @extends {jQuery.deferred} - * @param {function()=} opt_fn - * @return {jQuery.deferred} - */ -$.Deferred = function(opt_fn) {}; - -/** - * @override - * @param {jQueryCallback} alwaysCallbacks - * @param {jQueryCallback=} alwaysCallbacks2 - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.always - = function(alwaysCallbacks, alwaysCallbacks2) {}; - -/** - * @override - * @param {jQueryCallback} doneCallbacks - * @param {jQueryCallback=} doneCallbacks2 - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.done = function(doneCallbacks, doneCallbacks2) {}; - -/** - * @override - * @param {jQueryCallback} failCallbacks - * @param {jQueryCallback=} failCallbacks2 - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.fail = function(failCallbacks, failCallbacks2) {}; - -/** - * @param {...*} var_args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.notify = function(var_args) {}; - -/** - * @param {Object} context - * @param {...*} var_args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.notifyWith = function(context, var_args) {}; - -/** - * @deprecated Please use deferred.then() instead. - * @override - * @param {function()=} doneFilter - * @param {function()=} failFilter - * @param {function()=} progressFilter - * @return {jQuery.Promise} - */ -jQuery.deferred.prototype.pipe = - function(doneFilter, failFilter, progressFilter) {}; - -/** - * @param {jQueryCallback} progressCallbacks - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.progress = function(progressCallbacks) {}; - -/** - * @param {Object=} target - * @return {jQuery.Promise} - */ -jQuery.deferred.prototype.promise = function(target) {}; - -/** - * @param {...*} var_args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.reject = function(var_args) {}; - -/** - * @param {Object} context - * @param {Array.<*>=} args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.rejectWith = function(context, args) {}; - -/** - * @param {...*} var_args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.resolve = function(var_args) {}; - -/** - * @param {Object} context - * @param {Array.<*>=} args - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.resolveWith = function(context, args) {}; - -/** @return {string} */ -jQuery.deferred.prototype.state = function() {}; - -/** - * @override - * @param {jQueryCallback} doneCallbacks - * @param {jQueryCallback=} failCallbacks - * @param {jQueryCallback=} progressCallbacks - * @return {jQuery.deferred} - */ -jQuery.deferred.prototype.then - = function(doneCallbacks, failCallbacks, progressCallbacks) {}; - -/** - * @param {number} duration - * @param {string=} queueName - * @return {!jQuery} - */ -jQuery.prototype.delay = function(duration, queueName) {}; - -/** - * @param {string} selector - * @param {(string|Object.<string,*>)} arg2 - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg3 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.delegate = function(selector, arg2, arg3, handler) {}; - -/** - * @param {Element} elem - * @param {string=} queueName - */ -jQuery.dequeue = function(elem, queueName) {}; - -/** - * @param {string=} queueName - * @return {!jQuery} - */ -jQuery.prototype.dequeue = function(queueName) {}; - -/** - * @param {Element} elem - * @param {string=} queueName - */ -$.dequeue = function(elem, queueName) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - */ -jQuery.prototype.detach = function(selector) {}; - -/** - * @param {Object} collection - * @param {function((number|string),?)} callback - * @return {Object} - */ -jQuery.each = function(collection, callback) {}; - -/** - * @param {function(number,Element)} fnc - * @return {!jQuery} - */ -jQuery.prototype.each = function(fnc) {}; - -/** - * @param {Object} collection - * @param {function((number|string),?)} callback - * @return {Object} - */ -$.each = function(collection, callback) {}; - -/** @return {!jQuery} */ -jQuery.prototype.empty = function() {}; - -/** - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.end = function() {}; - -/** - * @param {number} arg1 - * @return {!jQuery} - */ -jQuery.prototype.eq = function(arg1) {}; - -/** @param {string} message */ -jQuery.error = function(message) {}; - -/** - * @deprecated Please use .on( "error", handler ) instead. - * @param {(function(!jQuery.event=)|Object.<string, *>)} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.error = function(arg1, handler) {}; - -/** @param {string} message */ -$.error = function(message) {}; - -/** - * @constructor - * @param {string} eventType - */ -jQuery.event = function(eventType) {}; - -/** - * @constructor - * @extends {jQuery.event} - * @param {string} eventType - * @param {Object=} properties - * @return {jQuery.Event} - */ -jQuery.Event = function(eventType, properties) {}; - -/** - * @constructor - * @extends {jQuery.event} - * @param {string} eventType - */ -$.event = function(eventType) {}; - -/** - * @constructor - * @extends {jQuery.event} - * @param {string} eventType - * @param {Object=} properties - * @return {$.Event} - */ -$.Event = function(eventType, properties) {}; - -/** @type {Element} */ -jQuery.event.prototype.currentTarget; - -/** @type {Object.<string, *>} */ -jQuery.event.prototype.data; - -/** @type {Element} */ -jQuery.event.prototype.delegateTarget; - -/** - * @return {boolean} - * @nosideeffects - */ -jQuery.event.prototype.isDefaultPrevented = function() {}; - -/** - * @return {boolean} - * @nosideeffects - */ -jQuery.event.prototype.isImmediatePropagationStopped = function() {}; - -/** - * @return {boolean} - * @nosideeffects - */ -jQuery.event.prototype.isPropagationStopped = function() {}; - -/** @type {string} */ -jQuery.event.prototype.namespace; - -/** @type {Event} */ -jQuery.event.prototype.originalEvent; - -/** @type {number} */ -jQuery.event.prototype.pageX; - -/** @type {number} */ -jQuery.event.prototype.pageY; - -/** @return {undefined} */ -jQuery.event.prototype.preventDefault = function() {}; - -/** @type {Object.<string, *>} */ -jQuery.event.prototype.props; - -/** @type {Element} */ -jQuery.event.prototype.relatedTarget; - -/** @type {*} */ -jQuery.event.prototype.result; - -/** @return {undefined} */ -jQuery.event.prototype.stopImmediatePropagation = function() {}; - -/** @return {undefined} */ -jQuery.event.prototype.stopPropagation = function() {}; - -/** @type {Element} */ -jQuery.event.prototype.target; - -/** @type {number} */ -jQuery.event.prototype.timeStamp; - -/** @type {string} */ -jQuery.event.prototype.type; - -/** @type {number} */ -jQuery.event.prototype.which; - -/** - * @param {(Object|boolean)} arg1 - * @param {...*} var_args - * @return {Object} - */ -jQuery.extend = function(arg1, var_args) {}; - -/** - * @param {(Object|boolean)} arg1 - * @param {...*} var_args - * @return {Object} - */ -jQuery.prototype.extend = function(arg1, var_args) {}; - -/** - * @param {(Object|boolean)} arg1 - * @param {...*} var_args - * @return {Object} - */ -$.extend = function(arg1, var_args) {}; - -/** - * @param {(string|number|function())=} duration - * @param {(function()|string)=} arg2 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.fadeIn = function(duration, arg2, callback) {}; - -/** - * @param {(string|number|function())=} duration - * @param {(function()|string)=} arg2 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.fadeOut = function(duration, arg2, callback) {}; - -/** - * @param {(string|number)} duration - * @param {number} opacity - * @param {(function()|string)=} arg3 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.fadeTo = function(duration, opacity, arg3, callback) {}; - -/** - * @param {(string|number|function())=} duration - * @param {(string|function())=} easing - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.fadeToggle = function(duration, easing, callback) {}; - -/** - * @param {(jQuerySelector|function(number,Element)|Element|jQuery)} arg1 - * @return {!jQuery} - * @see http://api.jquery.com/filter/ - */ -jQuery.prototype.filter = function(arg1) {}; - -/** - * @param {(jQuerySelector|jQuery|Element)} arg1 - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.find = function(arg1) {}; - -/** @return {!jQuery} */ -jQuery.prototype.first = function() {}; - -/** @see http://docs.jquery.com/Plugins/Authoring */ -jQuery.fn = jQuery.prototype; - -/** @see http://docs.jquery.com/Plugins/Authoring */ -$.fn = $.prototype; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.focus = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.focusin = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.focusout = function(arg1, handler) {}; - -/** @const */ -jQuery.fx = {}; - -/** @const */ -$.fx = {}; - -/** @type {number} */ -jQuery.fx.interval; - -/** @type {number} */ -$.fx.interval; - -/** @type {boolean} */ -jQuery.fx.off; - -/** @type {boolean} */ -$.fx.off; - -/** - * @param {string} url - * @param {(Object.<string,*>|string| - * function(string,string,jQuery.jqXHR))=} data - * @param {(function(string,string,jQuery.jqXHR)|string)=} success - * @param {string=} dataType - * @return {jQuery.jqXHR} - */ -jQuery.get = function(url, data, success, dataType) {}; - -/** - * @param {number=} index - * @return {(Element|Array.<Element>)} - * @nosideeffects - */ -jQuery.prototype.get = function(index) {}; - -/** - * @param {string} url - * @param {(Object.<string,*>|string| - * function(string,string,jQuery.jqXHR))=} data - * @param {(function(string,string,jQuery.jqXHR)|string)=} success - * @param {string=} dataType - * @return {jQuery.jqXHR} - */ -$.get = function(url, data, success, dataType) {}; - -/** - * @param {string} url - * @param {(Object.<string,*>| - * function(Object.<string,*>,string,jQuery.jqXHR))=} data - * @param {function(Object.<string,*>,string,jQuery.jqXHR)=} success - * @return {jQuery.jqXHR} - * @see http://api.jquery.com/jquery.getjson/#jQuery-getJSON-url-data-success - */ -jQuery.getJSON = function(url, data, success) {}; - -/** - * @param {string} url - * @param {(Object.<string,*>| - * function(Object.<string,*>,string,jQuery.jqXHR))=} data - * @param {function(Object.<string,*>,string,jQuery.jqXHR)=} success - * @return {jQuery.jqXHR} - * @see http://api.jquery.com/jquery.getjson/#jQuery-getJSON-url-data-success - */ -$.getJSON = function(url, data, success) {}; - -/** - * @param {string} url - * @param {function(Node,string,jQuery.jqXHR)=} success - * @return {jQuery.jqXHR} - */ -jQuery.getScript = function(url, success) {}; - -/** - * @param {string} url - * @param {function(Node,string,jQuery.jqXHR)=} success - * @return {jQuery.jqXHR} - */ -$.getScript = function(url, success) {}; - -/** @param {string} code */ -jQuery.globalEval = function(code) {}; - -/** @param {string} code */ -$.globalEval = function(code) {}; - -/** - * @param {Array.<*>} arr - * @param {function(*,number)} fnc - * @param {boolean=} invert - * @return {Array.<*>} - */ -jQuery.grep = function(arr, fnc, invert) {}; - -/** - * @param {Array.<*>} arr - * @param {function(*,number)} fnc - * @param {boolean=} invert - * @return {Array.<*>} - */ -$.grep = function(arr, fnc, invert) {}; - -/** - * @param {(string|Element)} arg1 - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.has = function(arg1) {}; - -/** - * @param {string} className - * @return {boolean} - * @nosideeffects - */ -jQuery.prototype.hasClass = function(className) {}; - -/** - * @param {Element} elem - * @return {boolean} - * @nosideeffects - */ -jQuery.hasData = function(elem) {}; - -/** - * @param {Element} elem - * @return {boolean} - * @nosideeffects - */ -$.hasData = function(elem) {}; - -/** - * @param {(string|number|function(number,number))=} arg1 - * @return {(number|!jQuery)} - */ -jQuery.prototype.height = function(arg1) {}; - -/** - * @param {(string|number|function())=} duration - * @param {(function()|string)=} arg2 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.hide = function(duration, arg2, callback) {}; - -/** @param {boolean} hold */ -jQuery.holdReady = function(hold) {}; - -/** @param {boolean} hold */ -$.holdReady = function(hold) {}; - -/** - * @param {function(!jQuery.event=)} arg1 - * @param {function(!jQuery.event=)=} handlerOut - * @return {!jQuery} - */ -jQuery.prototype.hover = function(arg1, handlerOut) {}; - -/** - * @param {(string|function(number,string))=} arg1 - * @return {(string|!jQuery)} - */ -jQuery.prototype.html = function(arg1) {}; - -/** - * @param {*} value - * @param {Array.<*>} arr - * @param {number=} fromIndex - * @return {number} - * @nosideeffects - */ -jQuery.inArray = function(value, arr, fromIndex) {}; - -/** - * @param {*} value - * @param {Array.<*>} arr - * @param {number=} fromIndex - * @return {number} - * @nosideeffects - */ -$.inArray = function(value, arr, fromIndex) {}; - -/** - * @param {(jQuerySelector|Element|jQuery)=} arg1 - * @return {number} - */ -jQuery.prototype.index = function(arg1) {}; - -/** - * @return {number} - * @nosideeffects - */ -jQuery.prototype.innerHeight = function() {}; - -/** - * @return {number} - * @nosideeffects - */ -jQuery.prototype.innerWidth = function() {}; - -/** - * @param {(jQuerySelector|Element|jQuery)} target - * @return {!jQuery} - */ -jQuery.prototype.insertAfter = function(target) {}; - -/** - * @param {(jQuerySelector|Element|jQuery)} target - * @return {!jQuery} - */ -jQuery.prototype.insertBefore = function(target) {}; - -/** - * @param {(jQuerySelector|function(number)|jQuery|Element)} arg1 - * @return {boolean} - */ -jQuery.prototype.is = function(arg1) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isArray = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -$.isArray = function(obj) {}; - -/** - * @param {Object} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isEmptyObject = function(obj) {}; - -/** - * @param {Object} obj - * @return {boolean} - * @nosideeffects - */ -$.isEmptyObject = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isFunction = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -$.isFunction = function(obj) {}; - -/** - * @param {*} value - * @return {boolean} - * @nosideeffects - */ -jQuery.isNumeric = function(value) {}; - -/** - * @param {*} value - * @return {boolean} - * @nosideeffects - */ -$.isNumeric = function(value) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isPlainObject = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -$.isPlainObject = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -jQuery.isWindow = function(obj) {}; - -/** - * @param {*} obj - * @return {boolean} - * @nosideeffects - */ -$.isWindow = function(obj) {}; - -/** - * @param {Element} node - * @return {boolean} - * @nosideeffects - */ -jQuery.isXMLDoc = function(node) {}; - -/** - * @param {Element} node - * @return {boolean} - * @nosideeffects - */ -$.isXMLDoc = function(node) {}; - -/** @type {string} */ -jQuery.prototype.jquery; - -/** - * @constructor - * @extends {XMLHttpRequest} - * @implements {jQuery.Promise} - * @private - * @see http://api.jquery.com/jQuery.ajax/#jqXHR - */ -jQuery.jqXHR = function () {}; - -/** - * @override - * @param {jQueryCallback} alwaysCallbacks - * @param {jQueryCallback=} alwaysCallbacks2 - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.always = - function(alwaysCallbacks, alwaysCallbacks2) {}; - -/** - * @deprecated - * @param {function()} callback - * @return {jQuery.jqXHR} -*/ -jQuery.jqXHR.prototype.complete = function (callback) {}; - -/** - * @override - * @param {jQueryCallback} doneCallbacks - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.done = function(doneCallbacks) {}; - -/** - * @deprecated - * @param {function()} callback - * @return {jQuery.jqXHR} -*/ -jQuery.jqXHR.prototype.error = function (callback) {}; - -/** - * @override - * @param {jQueryCallback} failCallbacks - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.fail = function(failCallbacks) {}; - -/** - * @deprecated - * @override - */ -jQuery.jqXHR.prototype.onreadystatechange = function (callback) {}; - -/** - * @override - * @param {function()=} doneFilter - * @param {function()=} failFilter - * @param {function()=} progressFilter - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.pipe = - function(doneFilter, failFilter, progressFilter) {}; - -/** - * @deprecated - * @param {function()} callback - * @return {jQuery.jqXHR} -*/ -jQuery.jqXHR.prototype.success = function (callback) {}; - -/** - * @override - * @param {jQueryCallback} doneCallbacks - * @param {jQueryCallback=} failCallbacks - * @param {jQueryCallback=} progressCallbacks - * @return {jQuery.jqXHR} - */ -jQuery.jqXHR.prototype.then = - function(doneCallbacks, failCallbacks, progressCallbacks) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.keydown = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.keypress = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.keyup = function(arg1, handler) {}; - -/** @return {!jQuery} */ -jQuery.prototype.last = function() {}; - -/** @type {number} */ -jQuery.prototype.length; - -/** - * @deprecated Please avoid the document loading Event invocation of - * .load() and use .on( "load", handler ) instead. (The AJAX - * module invocation signature is OK.) - * @param {(function(!jQuery.event=)|Object.<string, *>|string)} arg1 - * @param {(function(!jQuery.event=)|Object.<string,*>|string)=} arg2 - * @param {function(string,string,XMLHttpRequest)=} complete - * @return {!jQuery} - */ -jQuery.prototype.load = function(arg1, arg2, complete) {}; - -/** - * @param {*} obj - * @return {Array.<*>} - */ -jQuery.makeArray = function(obj) {}; - -/** - * @param {*} obj - * @return {Array.<*>} - */ -$.makeArray = function(obj) {}; - -/** - * @param {(Array.<*>|Object.<string, *>)} arg1 - * @param {(function(*,number)|function(*,(string|number)))} callback - * @return {Array.<*>} - */ -jQuery.map = function(arg1, callback) {}; - -/** - * @param {function(number,Element)} callback - * @return {!jQuery} - */ -jQuery.prototype.map = function(callback) {}; - -/** - * @param {(Array.<*>|Object.<string, *>)} arg1 - * @param {(function(*,number)|function(*,(string|number)))} callback - * @return {Array.<*>} - */ -$.map = function(arg1, callback) {}; - -/** - * @param {Array.<*>} first - * @param {Array.<*>} second - * @return {Array.<*>} - */ -jQuery.merge = function(first, second) {}; - -/** - * @param {Array.<*>} first - * @param {Array.<*>} second - * @return {Array.<*>} - */ -$.merge = function(first, second) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mousedown = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseenter = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseleave = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mousemove = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseout = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseover = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.mouseup = function(arg1, handler) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.next = function(selector) {}; - -/** - * @param {string=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.nextAll = function(selector) {}; - -/** - * @param {(jQuerySelector|Element)=} arg1 - * @param {jQuerySelector=} filter - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.nextUntil = function(arg1, filter) {}; - -/** - * @param {boolean=} removeAll - * @return {Object} - */ -jQuery.noConflict = function(removeAll) {}; - -/** - * @param {boolean=} removeAll - * @return {Object} - */ -$.noConflict = function(removeAll) {}; - -/** - * @return {function()} - * @nosideeffects - */ -jQuery.noop = function() {}; - -/** - * @return {function()} - * @nosideeffects - */ -$.noop = function() {}; - -/** - * @param {(jQuerySelector|Array.<Element>|function(number)|jQuery)} arg1 - * @return {!jQuery} - */ -jQuery.prototype.not = function(arg1) {}; - -/** - * @return {number} - * @nosideeffects - */ -jQuery.now = function() {}; - -/** - * @return {number} - * @nosideeffects - */ -$.now = function() {}; - -/** - * @param {(string|Object.<string,*>)=} arg1 - * @param {(string|function(!jQuery.event=))=} selector - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.off = function(arg1, selector, handler) {}; - -/** - * @param {({left:number,top:number}| - * function(number,{top:number,left:number}))=} arg1 - * @return {({left:number,top:number}|!jQuery)} - */ -jQuery.prototype.offset = function(arg1) {}; - -/** - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.offsetParent = function() {}; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {*=} selector - * @param {*=} data - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.on = function(arg1, selector, data, handler) {}; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {*=} arg2 - * @param {*=} arg3 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.one = function(arg1, arg2, arg3, handler) {}; - -/** - * @param {boolean=} includeMargin - * @return {number} - * @nosideeffects - */ -jQuery.prototype.outerHeight = function(includeMargin) {}; - -/** - * @param {boolean=} includeMargin - * @return {number} - * @nosideeffects - */ -jQuery.prototype.outerWidth = function(includeMargin) {}; - -/** - * @param {(Object.<string, *>|Array.<Object.<string, *>>)} obj - * @param {boolean=} traditional - * @return {string} - */ -jQuery.param = function(obj, traditional) {}; - -/** - * @param {(Object.<string, *>|Array.<Object.<string, *>>)} obj - * @param {boolean=} traditional - * @return {string} - */ -$.param = function(obj, traditional) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.parent = function(selector) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.parents = function(selector) {}; - -/** - * @param {(jQuerySelector|Element)=} arg1 - * @param {jQuerySelector=} filter - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.parentsUntil = function(arg1, filter) {}; - -/** - * @param {string} data - * @param {(Element|boolean)=} context - * @param {boolean=} keepScripts - * @return {Array.<Element>} - */ -jQuery.parseHTML = function(data, context, keepScripts) {}; - -/** - * @param {string} data - * @param {(Element|boolean)=} context - * @param {boolean=} keepScripts - * @return {Array.<Element>} - */ -$.parseHTML = function(data, context, keepScripts) {}; - -/** - * @param {string} json - * @return {string|number|Object.<string, *>|Array.<?>|boolean} - */ -jQuery.parseJSON = function(json) {}; - -/** - * @param {string} json - * @return {Object.<string, *>} - */ -$.parseJSON = function(json) {}; - -/** - * @param {string} data - * @return {Document} - */ -jQuery.parseXML = function(data) {}; - -/** - * @param {string} data - * @return {Document} - */ -$.parseXML = function(data) {}; - -/** - * @return {{left:number,top:number}} - * @nosideeffects - */ -jQuery.prototype.position = function() {}; - -/** - * @param {string} url - * @param {(Object.<string,*>|string| - * function(string,string,jQuery.jqXHR))=} data - * @param {(function(string,string,jQuery.jqXHR)|string|null)=} success - * @param {string=} dataType - * @return {jQuery.jqXHR} - */ -jQuery.post = function(url, data, success, dataType) {}; - -/** - * @param {string} url - * @param {(Object.<string,*>|string| - * function(string,string,jQuery.jqXHR))=} data - * @param {(function(string,string,jQuery.jqXHR)|string|null)=} success - * @param {string=} dataType - * @return {jQuery.jqXHR} - */ -$.post = function(url, data, success, dataType) {}; - -/** - * @param {(string|Element|jQuery|function(number,string))} arg1 - * @param {(string|Element|jQuery)=} content - * @return {!jQuery} - */ -jQuery.prototype.prepend = function(arg1, content) {}; - -/** - * @param {(jQuerySelector|Element|jQuery)} target - * @return {!jQuery} - */ -jQuery.prototype.prependTo = function(target) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.prev = function(selector) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.prevAll = function(selector) {}; - -/** - * @param {(jQuerySelector|Element)=} arg1 - * @param {jQuerySelector=} filter - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.prevUntil = function(arg1, filter) {}; - -/** - * @param {(string|Object)=} type - * @param {Object=} target - * @return {jQuery.Promise} - */ -jQuery.prototype.promise = function(type, target) {}; - -/** - * @interface - * @private - * @see http://api.jquery.com/Types/#Promise - */ -jQuery.Promise = function () {}; - -/** - * @param {jQueryCallback} alwaysCallbacks - * @param {jQueryCallback=} alwaysCallbacks2 - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.always = - function(alwaysCallbacks, alwaysCallbacks2) {}; - -/** - * @param {jQueryCallback} doneCallbacks - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.done = function(doneCallbacks) {}; - -/** - * @param {jQueryCallback} failCallbacks - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.fail = function(failCallbacks) {}; - -/** - * @param {function()=} doneFilter - * @param {function()=} failFilter - * @param {function()=} progressFilter - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.pipe = - function(doneFilter, failFilter, progressFilter) {}; - -/** - * @param {jQueryCallback} doneCallbacks - * @param {jQueryCallback=} failCallbacks - * @param {jQueryCallback=} progressCallbacks - * @return {jQuery.Promise} - */ -jQuery.Promise.prototype.then = - function(doneCallbacks, failCallbacks, progressCallbacks) {}; - -/** - * @param {(string|Object.<string,*>)} arg1 - * @param {(string|number|boolean|function(number,String))=} arg2 - * @return {(string|boolean|!jQuery)} - */ -jQuery.prototype.prop = function(arg1, arg2) {}; - -/** - * @param {...*} var_args - * @return {function()} - */ -jQuery.proxy = function(var_args) {}; - -/** - * @param {...*} var_args - * @return {function()} - */ -$.proxy = function(var_args) {}; - -/** - * @param {Array.<Element>} elements - * @param {string=} name - * @param {Array.<*>=} args - * @return {!jQuery} - */ -jQuery.prototype.pushStack = function(elements, name, args) {}; - -/** - * @param {(string|Array.<function()>|function(function()))=} queueName - * @param {(Array.<function()>|function(function()))=} arg2 - * @return {(Array.<Element>|!jQuery)} - */ -jQuery.prototype.queue = function(queueName, arg2) {}; - -/** - * @param {Element} elem - * @param {string=} queueName - * @param {(Array.<function()>|function())=} arg3 - * @return {(Array.<Element>|!jQuery)} - */ -jQuery.queue = function(elem, queueName, arg3) {}; - -/** - * @param {Element} elem - * @param {string=} queueName - * @param {(Array.<function()>|function())=} arg3 - * @return {(Array.<Element>|!jQuery)} - */ -$.queue = function(elem, queueName, arg3) {}; - -/** - * @param {function()} handler - * @return {!jQuery} - */ -jQuery.prototype.ready = function(handler) {}; - -/** - * @param {string=} selector - * @return {!jQuery} - */ -jQuery.prototype.remove = function(selector) {}; - -/** - * @param {string} attributeName - * @return {!jQuery} - */ -jQuery.prototype.removeAttr = function(attributeName) {}; - -/** - * @param {(string|function(number,string))=} arg1 - * @return {!jQuery} - */ -jQuery.prototype.removeClass = function(arg1) {}; - -/** - * @param {(string|Array.<string>)=} arg1 - * @return {!jQuery} - */ -jQuery.prototype.removeData = function(arg1) {}; - -/** - * @param {Element} elem - * @param {string=} name - * @return {!jQuery} - */ -jQuery.removeData = function(elem, name) {}; - -/** - * @param {Element} elem - * @param {string=} name - * @return {!jQuery} - */ -$.removeData = function(elem, name) {}; - -/** - * @param {string} propertyName - * @return {!jQuery} - */ -jQuery.prototype.removeProp = function(propertyName) {}; - -/** - * @param {jQuerySelector} target - * @return {!jQuery} - */ -jQuery.prototype.replaceAll = function(target) {}; - -/** - * @param {(string|Element|jQuery|function())} arg1 - * @return {!jQuery} - */ -jQuery.prototype.replaceWith = function(arg1) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.resize = function(arg1, handler) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.scroll = function(arg1, handler) {}; - -/** - * @param {number=} value - * @return {(number|!jQuery)} - */ -jQuery.prototype.scrollLeft = function(value) {}; - -/** - * @param {number=} value - * @return {(number|!jQuery)} - */ -jQuery.prototype.scrollTop = function(value) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.select = function(arg1, handler) {}; - -/** - * @return {string} - * @nosideeffects - */ -jQuery.prototype.serialize = function() {}; - -/** - * @return {Array.<Object.<string, *>>} - * @nosideeffects - */ -jQuery.prototype.serializeArray = function() {}; - -/** - * @param {(string|number|function())=} duration - * @param {(function()|string)=} arg2 - * @param {function()=} callback - * @return {!jQuery} - */ -jQuery.prototype.show = function(duration, arg2, callback) {}; - -/** - * @param {jQuerySelector=} selector - * @return {!jQuery} - * @nosideeffects - */ -jQuery.prototype.siblings = function(selector) {}; - -/** - * @deprecated Please use the .length property instead. - * @return {number} - * @nosideeffects - */ -jQuery.prototype.size = function() {}; - -/** - * @param {number} start - * @param {number=} end - * @return {!jQuery} - */ -jQuery.prototype.slice = function(start, end) {}; - -/** - * @param {(Object.<string,*>|string|number)=} optionsOrDuration - * @param {(function()|string)=} completeOrEasing - * @param {function()=} complete - * @return {!jQuery} - */ -jQuery.prototype.slideDown = - function(optionsOrDuration, completeOrEasing, complete) {}; - -/** - * @param {(Object.<string,*>|string|number)=} optionsOrDuration - * @param {(function()|string)=} completeOrEasing - * @param {function()=} complete - * @return {!jQuery} - */ -jQuery.prototype.slideToggle = - function(optionsOrDuration, completeOrEasing, complete) {}; - -/** - * @param {(Object.<string,*>|string|number)=} optionsOrDuration - * @param {(function()|string)=} completeOrEasing - * @param {function()=} complete - * @return {!jQuery} - */ -jQuery.prototype.slideUp = - function(optionsOrDuration, completeOrEasing, complete) {}; - -/** - * @param {(boolean|string)=} arg1 - * @param {boolean=} arg2 - * @param {boolean=} jumpToEnd - * @return {!jQuery} - */ -jQuery.prototype.stop = function(arg1, arg2, jumpToEnd) {}; - -/** - * @param {(function(!jQuery.event=)|Object.<string, *>)=} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.submit = function(arg1, handler) {}; - -/** @type {Object.<string, *>} - * @deprecated Please try to use feature detection instead. - */ -jQuery.support; - -/** @type {Object.<string, *>} - * @deprecated Please try to use feature detection instead. - */ -$.support; - -/** - * @deprecated Please try to use feature detection instead. - * @type {boolean} - */ -jQuery.support.boxModel; - -/** - * @deprecated Please try to use feature detection instead. - * @type {boolean} - */ -$.support.boxModel; - -/** @type {boolean} */ -jQuery.support.changeBubbles; - -/** @type {boolean} */ -$.support.changeBubbles; - -/** @type {boolean} */ -jQuery.support.cors; - -/** @type {boolean} */ -$.support.cors; - -/** @type {boolean} */ -jQuery.support.cssFloat; - -/** @type {boolean} */ -$.support.cssFloat; - -/** @type {boolean} */ -jQuery.support.hrefNormalized; - -/** @type {boolean} */ -$.support.hrefNormalized; - -/** @type {boolean} */ -jQuery.support.htmlSerialize; - -/** @type {boolean} */ -$.support.htmlSerialize; - -/** @type {boolean} */ -jQuery.support.leadingWhitespace; - -/** @type {boolean} */ -$.support.leadingWhitespace; - -/** @type {boolean} */ -jQuery.support.noCloneEvent; - -/** @type {boolean} */ -$.support.noCloneEvent; - -/** @type {boolean} */ -jQuery.support.opacity; - -/** @type {boolean} */ -$.support.opacity; - -/** @type {boolean} */ -jQuery.support.style; - -/** @type {boolean} */ -$.support.style; - -/** @type {boolean} */ -jQuery.support.submitBubbles; - -/** @type {boolean} */ -$.support.submitBubbles; - -/** @type {boolean} */ -jQuery.support.tbody; - -/** @type {boolean} */ -$.support.tbody; - -/** - * @param {(string|number|boolean|function(number,string))=} arg1 - * @return {(string|!jQuery)} - */ -jQuery.prototype.text = function(arg1) {}; - -/** - * @return {Array.<Element>} - * @nosideeffects - */ -jQuery.prototype.toArray = function() {}; - -/** - * Refers to the method from the Effects category. There used to be a toggle - * method on the Events category which was removed starting version 1.9. - * @param {(number|string|Object.<string,*>|boolean)=} arg1 - * @param {(function()|string)=} arg2 - * @param {function()=} arg3 - * @return {!jQuery} - */ -jQuery.prototype.toggle = function(arg1, arg2, arg3) {}; - -/** - * @param {(string|boolean|function(number,string,boolean))=} arg1 - * @param {boolean=} flag - * @return {!jQuery} - */ -jQuery.prototype.toggleClass = function(arg1, flag) {}; - -/** - * @param {(string|jQuery.event)} arg1 - * @param {...*} var_args - * @return {!jQuery} - */ -jQuery.prototype.trigger = function(arg1, var_args) {}; - -/** - * @param {string|jQuery.event} eventType - * @param {Array.<*>=} extraParameters - * @return {*} - */ -jQuery.prototype.triggerHandler = function(eventType, extraParameters) {}; - -/** - * @param {string} str - * @return {string} - * @nosideeffects - */ -jQuery.trim = function(str) {}; - -/** - * @param {string} str - * @return {string} - * @nosideeffects - */ -$.trim = function(str) {}; - -/** - * @param {*} obj - * @return {string} - * @nosideeffects - */ -jQuery.type = function(obj) {}; - -/** - * @param {*} obj - * @return {string} - * @nosideeffects - */ -$.type = function(obj) {}; - -/** - * @param {(string|function(!jQuery.event=)|jQuery.event)=} arg1 - * @param {(function(!jQuery.event=)|boolean)=} arg2 - * @return {!jQuery} - */ -jQuery.prototype.unbind = function(arg1, arg2) {}; - -/** - * @param {string=} arg1 - * @param {(string|Object.<string,*>)=} arg2 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.undelegate = function(arg1, arg2, handler) {}; - -/** - * @param {Array.<Element>} arr - * @return {Array.<Element>} - */ -jQuery.unique = function(arr) {}; - -/** - * @param {Array.<Element>} arr - * @return {Array.<Element>} - */ -$.unique = function(arr) {}; - -/** - * @deprecated Please use .on( "unload", handler ) instead. - * @param {(function(!jQuery.event=)|Object.<string, *>)} arg1 - * @param {function(!jQuery.event=)=} handler - * @return {!jQuery} - */ -jQuery.prototype.unload = function(arg1, handler) {}; - -/** @return {!jQuery} */ -jQuery.prototype.unwrap = function() {}; - -/** - * @param {(string|Array.<string>|function(number,*))=} arg1 - * @return {(string|number|Array.<string>|!jQuery)} - */ -jQuery.prototype.val = function(arg1) {}; - -/** - * Note: The official documentation (https://api.jquery.com/jQuery.when/) says - * jQuery.when accepts deferreds, but it actually accepts any type, e.g.: - * - * jQuery.when(jQuery.ready, jQuery.ajax(''), jQuery('#my-element'), 1) - * - * If an argument is not an "observable" (a promise-like object) it is wrapped - * into a promise. - * @param {*} deferred - * @param {...*} deferreds - * @return {jQuery.Promise} - */ -jQuery.when = function(deferred, deferreds) {}; - -/** - * Note: See jQuery.when(). - * @param {*} deferred - * @param {...*} deferreds - * @return {jQuery.Promise} - */ -$.when = function(deferred, deferreds) {}; - -/** - * @param {(string|number|function(number,number))=} arg1 - * @return {(number|!jQuery)} - */ -jQuery.prototype.width = function(arg1) {}; - -/** - * @param {(string|jQuerySelector|Element|jQuery|function(number))} arg1 - * @return {!jQuery} - */ -jQuery.prototype.wrap = function(arg1) {}; - -/** - * @param {(string|jQuerySelector|Element|jQuery)} wrappingElement - * @return {!jQuery} - */ -jQuery.prototype.wrapAll = function(wrappingElement) {}; - -/** - * @param {(string|jQuerySelector|Element|jQuery|function(number))} arg1 - * @return {!jQuery} - */ -jQuery.prototype.wrapInner = function(arg1) {}; - -/** - * @param {(string|number|function(number,number))=} arg1 - * @return {(number|!jQuery)} - */ -jQuery.prototype.tooltip = function(arg1) {}; \ No newline at end of file diff --git a/src/closure/conf/externs/jspdf.js b/src/closure/conf/externs/jspdf.js deleted file mode 100755 index 2b5ba6f00f45b775de5e4d9bd0666149dadbc650..0000000000000000000000000000000000000000 --- a/src/closure/conf/externs/jspdf.js +++ /dev/null @@ -1,51 +0,0 @@ -/** - * - * @param {type} arg1 - * @returns {jsPDF} - */ -function jsPDF (arg1) {}; - -/** - * - * @param {type} arg1 - * @param {type} arg2 - * @param {type} arg3 - * @param {type} arg4 - * @returns {undefined} - */ -jsPDF.prototype.fromHTML = function (arg1, arg2, arg3, arg4) {}; - -/** - * - * @param {type} arg1 - * @param {type} arg2 - * @param {type} arg3 - * @param {type} arg4 - * @param {type} arg5 - * @param {type} arg6 - * @returns {undefined} - */ -jsPDF.prototype.addImage = function (arg1, arg2, arg3, arg4, arg5, arg6) {}; - -/** - * - * @param {type} arg1 - * @returns {undefined} - */ -jsPDF.prototype.save = function (arg1) {}; - -/** - * - * @param {type} arg1 - * @returns {undefined} - */ -jsPDF.prototype.setPage = function (arg1) {}; - -/** - * - * @param {type} arg1 - * @param {type} arg2 - * @returns {undefined} - */ -jsPDF.prototype.addHTML = function (arg1, arg2) {}; - diff --git a/src/closure/conf/externs/vmap.js b/src/closure/conf/externs/vmap.js deleted file mode 100755 index b799165a0202a74c3d1fe51fe8ad666558122205..0000000000000000000000000000000000000000 --- a/src/closure/conf/externs/vmap.js +++ /dev/null @@ -1,75 +0,0 @@ -/** - * @author: Armand Bahi - * @Description: Fichier contenant les externs: fonctions à ne pas renommer durant la compilation - * @externs - */ - -/** - * Function for initialise the bootstrap toggle switch checkbox plugin - * @constructor - * @param {object} arg1 - */ -function bootstrapToggle(arg1) {} - -/** - * Function for initialise the bootstrap colorpicker plugin - * @constructor - * @param {object} arg1 - */ -function colorpicker(arg1) {} - -/** - * Function for initialise the bootstrap table plugin - * @constructor - * @param {object} arg1 - */ -function bootstrapTable(arg1) {} - -/** - * @param {object} arg1 - * @return {!jQuery} - */ -function sortable(arg1) {} - -/** - * - * @param {string} key - * @returns {undefined} - */ -ol.Object.prototype.get = function (key) {} - -/** - * Get the collection of layers associated with this map. - * @return {!ol.Collection.<ol.layer.Base>} Layers. - * @api stable - */ -ol.Map.prototype.getLayers = function () {} - -/** - * Return the visibility of the layer (`true` or `false`). - * @return {boolean} The visibility of the layer. - * @observable - * @api stable - */ -ol.layer.Base.prototype.getVisible = function () {} - -/** - * Set the visibility of the layer (`true` or `false`). - * @param {boolean} visible The visibility of the layer. - * @observable - * @api stable - */ -ol.layer.Base.prototype.setVisible = function (visible) {} - -/** - * The tile related to the event. - * @type {ol.Tile} - * @api - */ -ol.source.TileEvent.tile - -/** - * @type {string} - * @see http://www.w3.org/TR/pointerevents/#the-touch-action-css-property - */ -CSSProperties.prototype.touchAction; \ No newline at end of file diff --git a/src/module_extraction/README.md b/src/module_extraction/README.md deleted file mode 100644 index 2bf5eb5277169ad7162e37165eaf8313088b0882..0000000000000000000000000000000000000000 --- a/src/module_extraction/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# module_extraction - -Module extraction for Vitis \ No newline at end of file diff --git a/src/module_extraction/_install/dependency.xml b/src/module_extraction/_install/dependency.xml deleted file mode 100755 index f8953c391d61601d251acb3624b2f30f5a0eb83d..0000000000000000000000000000000000000000 --- a/src/module_extraction/_install/dependency.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<installer> - <schema> - <name>s_extraction</name> - <dependenciesCollection> - <dependency> - <nature>schema</nature> - <name>s_vitis</name> - <object>vitis</object> - </dependency> - </dependenciesCollection> - </schema> - <dependenciesCollection> - <dependency> - <nature>framework</nature> - <name>vitis</name> - </dependency> - </dependenciesCollection> -</installer> diff --git a/src/module_extraction/_install/fileToDelete.txt b/src/module_extraction/_install/fileToDelete.txt deleted file mode 100755 index 0f43fe95ffffa53fcfefcacba2c2e5215d7b6a89..0000000000000000000000000000000000000000 --- a/src/module_extraction/_install/fileToDelete.txt +++ /dev/null @@ -1,6 +0,0 @@ -javascript/deps.js -javascript/script_module.js -javascript/statistics.js -javascript/widget/script_widget.js -javascript/widget/widgetMod.js -javascript/widget/deps.js \ No newline at end of file diff --git a/src/module_extraction/_install/folderToDelete.txt b/src/module_extraction/_install/folderToDelete.txt deleted file mode 100755 index b92d8976db30897968846102e68520be453b8313..0000000000000000000000000000000000000000 --- a/src/module_extraction/_install/folderToDelete.txt +++ /dev/null @@ -1,2 +0,0 @@ -javascript/controllers -javascript/directives \ No newline at end of file diff --git a/src/module_extraction/module/forms/configuration/configuration_vitis_configuration_extractionConfig.json b/src/module_extraction/module/forms/configuration/configuration_vitis_configuration_extractionConfig.json deleted file mode 100644 index f25d20c9b7b577b5afc23a8b5b42b768efc9d7cd..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/forms/configuration/configuration_vitis_configuration_extractionConfig.json +++ /dev/null @@ -1 +0,0 @@ -{"insert":{"rows":[],"tabs":{"position":"top","list":[{"label":"Tab 0","elements":[]}]}},"search":{"rows":[]},"display":{"rows":[]},"update":{"name":"configuration_extraction_module-form","title":"","input_size":"xxs","nb_cols":7,"javascript":false,"rows":[{"fields":[{"name":"color_mutualized","type":"text","label":"CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_COLOR_MUTUALIZED","nb_cols":12,"id":"color_mutualized","default_value":"green"}]},{"fields":[{"name":"color_no_mutualized","type":"text","label":"CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_COLOR_NO_MUTUALIZED","nb_cols":12,"id":"color_no_mutualized","default_value":"red"}]},{"fields":[{"name":"sig","type":"text","label":"CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_SIG","nb_cols":12,"id":"sig","default_value":"*.shp|*.*"}]},{"fields":[{"name":"dao","type":"text","label":"CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_DAO","nb_cols":12,"id":"dao","default_value":"*.dao"}]},{"fields":[{"type":"button","name":"form_submit","class":"btn-ungroup btn-group-sm","nb_cols":12,"buttons":[{"type":"submit","name":"form_submit","label":"FORM_UPDATE","class":"btn-primary"}],"id":"form_submit_6_1"}]}],"event":"updateProperties('extraction')","afterEvent":"editSectionForm()","tabs":{"position":"top","list":[{"label":"Tab 0","elements":["color_mutualized","color_no_mutualized","sig","dao","form_submit"]}]}},"datasources":{}} \ No newline at end of file diff --git a/src/module_extraction/module/forms/extraction/extraction_extraction_extraction.js b/src/module_extraction/module/forms/extraction/extraction_extraction_extraction.js deleted file mode 100755 index 2589e36082a4f0a4e83c27a9229e84018294ecc8..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/forms/extraction/extraction_extraction_extraction.js +++ /dev/null @@ -1,500 +0,0 @@ -/* global angular, goog, vitisApp, bootbox */ - -//bloque les delete du destructeur à éviter -//'use strict'; - -console.info("Generateur_wab_generator_1 loaded --> your functions are ready"); -/*********************************************************************************** - Signaletique_Recap_0 Javascript - ***********************************************************************************/ - -var oFormRequired = { - "sUrl": "", - "scope_": {}, - "toDestructor": [] -}; -/** - * constructor_form - * Fonction appelé à l'initialisation du formulaire si dans la structure json javascript vaut "true" - * @param {type} scope - * @param {type} s_url - * @returns {undefined} - */ -var constructor_form = function (scope, s_url) { - ////////////////////////////////////////////////////////// - //Ne pas toucher - console.log("Constructor"); - - oFormRequired.sUrl = s_url; - oFormRequired.scope_ = scope; - //console.log(scope); - ////////////////////////////////////////////////////////// - // Permet de recharge le javascript d'une section à une autre - var envSrvc = angular.element(vitisApp.appWorkspaceListDrtv).injector().get(["envSrvc"]); - var formSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["formSrvc"]); - // - var oElemDefCt = formSrvc["getFormElementDefinition"]("id_conseil", envSrvc["sFormDefinitionName"], envSrvc["oFormDefinition"]); - var oElemDefCom = formSrvc["getFormElementDefinition"]("id_com", envSrvc["sFormDefinitionName"], envSrvc["oFormDefinition"]); - var oElemDefExtent = formSrvc["getFormElementDefinition"]("extent", envSrvc["sFormDefinitionName"], envSrvc["oFormDefinition"]); - - - //Comportements différents selon le mode (insert, update, search, display) (GTF : accés uniquement au mode insert) - //if (oFormRequired.scope_.sFormDefinitionName.indexOf("insert") > -1 || (oFormRequired.scope_.sFormDefinitionName.indexOf("update") > -1)) { - oFormRequired.toDestructor.push(oFormRequired.scope_.$watch("oFormValues." + oFormRequired.scope_.sFormDefinitionName + ".extent_method.selectedOption", function (value) { - //console.log(value); - if (value) { - if (value["value"]) { - //oFormRequired.scope_.oFormValues[oFormRequired.scope_.sFormDefinitionName]["name"] = value["value"] + "_"; - if (value["value"] == "id_conseil") - { - oElemDefCt["visible"] = true; - oElemDefCom["visible"] = false; - oElemDefExtent["visible"] = false; - } - else if (value["value"] == "id_com") - { - oElemDefCt["visible"] = false; - oElemDefCom["visible"] = true; - oElemDefExtent["visible"] = false; - } - else - { - oElemDefCt["visible"] = false; - oElemDefCom["visible"] = false; - oElemDefExtent["visible"] = true; - } - } - else - { - oElemDefCt["visible"] = false; - oElemDefCom["visible"] = false; - } - - } - })); - //Evènement lorsqu'on choisie un CT - oFormRequired.toDestructor.push(oFormRequired.scope_.$watch("oFormValues." + oFormRequired.scope_.sFormDefinitionName + ".id_conseil.selectedOption", function (value) { - if (value && typeof(oFormRequired) !== "undefined") - { - getLayerTree(oFormRequired.scope_.oFormValues[oFormRequired.scope_.sFormDefinitionName]).then( function(aNodes){ - var oTreeview = $("#layers_9_1_treeview")["treeview"](true); - $("layers_9_1_treeview")["treeview"](true); - //On recréer un arbre - oTreeview["init"]({"data": aNodes, - "onNodeChecked": oTreeview.options.onNodeChecked, - "onNodeUnchecked": oTreeview.options.onNodeUnchecked, - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true}); - scope.$applyAsync(); - }); - - getStatsTree(oFormRequired.scope_.oFormValues[oFormRequired.scope_.sFormDefinitionName]).then( function(aNodes){ - var oTreeview = $("#statistique_9_1_treeview")["treeview"](true); - $("statistique_9_1_treeview")["treeview"](true); - //On recréer un arbre - oTreeview["init"]({"data": aNodes, - "onNodeChecked": oTreeview.options.onNodeChecked, - "onNodeUnchecked": oTreeview.options.onNodeUnchecked, - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true}); - scope.$applyAsync(); - }); - } - - })); - //Evènement lorsqu'on choisie une commune - oFormRequired.toDestructor.push(oFormRequired.scope_.$watch("oFormValues." + oFormRequired.scope_.sFormDefinitionName + ".id_com.selectedOption", function (value) { - if (value && typeof(oFormRequired) !== "undefined") - { - getLayerTree(oFormRequired.scope_.oFormValues[oFormRequired.scope_.sFormDefinitionName]).then( function(aNodes){ - var oTreeview = $("#layers_9_1_treeview")["treeview"](true); - $("layers_9_1_treeview")["treeview"]({"data":aNodes}); - //On recréer un arbre - oTreeview["init"]({"data": aNodes, - "onNodeChecked": oTreeview.options.onNodeChecked, - "onNodeUnchecked": oTreeview.options.onNodeUnchecked, - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true}); - scope.$applyAsync(); - - }); - - getStatsTree(oFormRequired.scope_.oFormValues[oFormRequired.scope_.sFormDefinitionName]).then( function(aNodes){ - var oTreeview = $("#statistique_9_1_treeview")["treeview"](true); - $("statistique_9_1_treeview")["treeview"](true); - //On recréer un arbre - oTreeview["init"]({"data": aNodes, - "onNodeChecked": oTreeview.options.onNodeChecked, - "onNodeUnchecked": oTreeview.options.onNodeUnchecked, - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true}); - scope.$applyAsync(); - }); - } - })); - //Evenement lorsqu'on saisie un nouveau polygone - oFormRequired.toDestructor.push(oFormRequired.scope_.$watch("oFormValues." + oFormRequired.scope_.sFormDefinitionName + ".extent", function (value) { - if (value && typeof(oFormRequired) !== "undefined") - { - //getLayerTree(value, "geom"); - getLayerTree(oFormRequired.scope_.oFormValues[oFormRequired.scope_.sFormDefinitionName]).then( function(aNodes){ - //console.log(aNodes); - //layers_9_1_treeview - var oTreeview = $("#layers_9_1_treeview")["treeview"](true); - //$("layers_9_1_treeview")["treeview"]({"data":aNodes}); - //On recréer un arbre - oTreeview["init"]({"data": aNodes, - "onNodeChecked": oTreeview.options.onNodeChecked, - "onNodeUnchecked": oTreeview.options.onNodeUnchecked, - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true}); - scope.$applyAsync(); - - }); - - getStatsTree(oFormRequired.scope_.oFormValues[oFormRequired.scope_.sFormDefinitionName]).then( function(aNodes){ - var oTreeview = $("#statistique_9_1_treeview")["treeview"](true); - $("statistique_9_1_treeview")["treeview"](true); - //On recréer un arbre - oTreeview["init"]({"data": aNodes, - "onNodeChecked": oTreeview.options.onNodeChecked, - "onNodeUnchecked": oTreeview.options.onNodeUnchecked, - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true}); - scope.$applyAsync(); - }); - - - } - })); -}; - -/** - * Fonction appelée lorsqu'on choisit la CT ou la commune ou si on saisit un polygone dans le formulaire - * @return undefined - */ -function getLayerTree(oFormValues) { - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["envSrvc"]); - var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["propertiesSrvc"]); - var $q = angular.element(vitisApp.appHtmlFormDrtv).injector().get(["$q"]); - // - $log.info("getLayerTree"); - // Charge la liste des couches. - - var deferred = $q.defer(); - var promise = deferred.promise; - if (oFormValues.extent_method.selectedOption["value"] != "") { - ajaxRequest({ - "method": "GET", - "url": propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + "/extraction/extractions/Layers", - "params": getUrlParams(), - "scope": angular.element("form[name='" + envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"] + "']").scope(), - "success": function(response) { - if (response["data"]["status"] == 1) { - console.log(response["data"]); - var scope = angular.element("form[name='" + envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"] + "']").scope(); - // Création de l'arborescence des couches pour le champ "treeview". - var aLayers = response["data"]["layers"]; - var aNodes = []; - var stats = true; - - if (typeof(aLayers) != "undefined") { - var aCategories = Object.keys(aLayers); - for (var i in aCategories) { - var aNode = {"text": aCategories[i], "nodes": []} - for (var j in aLayers[aCategories[i]]) { - if (aLayers[aCategories[i]][j]["statistique"] !== true) - { - stats = false; - aNode["nodes"].push({"text": aLayers[aCategories[i]][j]["text"], "value": aLayers[aCategories[i]][j]["value"], "mutualized": aLayers[aCategories[i]][j]["mutualized"]}); - } - } - if (stats !== true) - { - aNodes.push(aNode); - } - stats = true; - } - } - - this["setTreeviewNodesState"] = function (aNodes) { - for (var i in aNodes) { - if (typeof (aNodes[i]["nodes"]) != "undefined") - this["setTreeviewNodesState"](aNodes[i]["nodes"]); - else { - if (typeof (aNodes[i]["state"]) == "undefined") - { - aNodes[i]["state"] = {}; - } - var aCheckedItem = []; - var sValue = scope["oFormValues"][envSrvc["sFormDefinitionName"]]["layers"]; - if (typeof (sValue) == "string" && sValue != "") - { - aCheckedItem = sValue.split("|"); - } - if (aCheckedItem.indexOf(String(aNodes[i]["value"])) != -1) - { - aNodes[i]["state"]["checked"] = true; - } - //Si la couche est mutualisée - if (aNodes[i]['mutualized'] == true) - { - console.log(propertiesSrvc["color_mutualized"]); - aNodes[i]["color"] = propertiesSrvc["color_mutualized"]; - } else if (aNodes[i]['mutualized'] == false) { - aNodes[i]["color"] = propertiesSrvc["color_no_mutualized"]; - } - } - } - } - this["setTreeviewNodesState"](aNodes); - deferred.resolve(aNodes); - } else { - // - var oOptions = { - "className": "modal-danger" - }; - // Message d'erreur ? - if (response["data"]["errorMessage"] != null) - oOptions["message"] = response["data"]["errorMessage"]; - scope.$root["modalWindow"]("alert", "REQUEST_ERROR", oOptions); - } - } - }); - } - return promise; -} - -/** - * Fonction appelée lorsqu'on choisit la CT ou la commune ou si on saisit un polygone dans le formulaire - * @return undefined - */ -function getStatsTree(oFormValues) { - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["envSrvc"]); - var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["propertiesSrvc"]); - var $q = angular.element(vitisApp.appHtmlFormDrtv).injector().get(["$q"]); - // - $log.info("getLayerTree"); - // Charge la liste des couches. - - var deferred = $q.defer(); - var promise = deferred.promise; - if (oFormValues.extent_method.selectedOption["value"] != "") { - ajaxRequest({ - "method": "GET", - "url": propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + "/extraction/extractions/Layers", - "params": getUrlParams(), - "scope": angular.element("form[name='" + envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"] + "']").scope(), - "success": function(response) { - if (response["data"]["status"] == 1) { - console.log(response["data"]); - var scope = angular.element("form[name='" + envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"] + "']").scope(); - // Création de l'arborescence des statistiques pour le champ "treeview". - var aLayers = response["data"]["layers"]; - var aNodes = []; - var stats = false; - - if (typeof(aLayers) != "undefined") { - var aCategories = Object.keys(aLayers); - for (var i in aCategories) { - var aNode = {"text": aCategories[i], "nodes": []} - for (var j in aLayers[aCategories[i]]) { - if (aLayers[aCategories[i]][j]["statistique"] === true) - { - stats = true; - aNode["nodes"].push({"text": aLayers[aCategories[i]][j]["text"], "value": aLayers[aCategories[i]][j]["value"], "mutualized": aLayers[aCategories[i]][j]["mutualized"]}); - } - } - if (stats === true) - { - aNodes.push(aNode); - } - stats = false; - } - } - - this["setTreeviewNodesState"] = function (aNodes) { - for (var i in aNodes) { - if (typeof (aNodes[i]["nodes"]) != "undefined") - this["setTreeviewNodesState"](aNodes[i]["nodes"]); - else { - if (typeof (aNodes[i]["state"]) == "undefined") - { - aNodes[i]["state"] = {}; - } - var aCheckedItem = []; - var sValue = scope["oFormValues"][envSrvc["sFormDefinitionName"]]["statistique"]; - if (typeof (sValue) == "string" && sValue != "") - { - aCheckedItem = sValue.split("|"); - } - if (aCheckedItem.indexOf(String(aNodes[i]["value"])) != -1) - { - aNodes[i]["state"]["checked"] = true; - } - //Si la couche est mutualisée - if (aNodes[i]['mutualized'] == true) - { - aNodes[i]["color"] = propertiesSrvc["color_mutualized"]; - } else if (aNodes[i]['mutualized'] == false) { - aNodes[i]["color"] = propertiesSrvc["color_no_mutualized"]; - } - } - } - } - this["setTreeviewNodesState"](aNodes); - deferred.resolve(aNodes); - } else { - // - var oOptions = { - "className": "modal-danger" - }; - // Message d'erreur ? - if (response["data"]["errorMessage"] != null) - oOptions["message"] = response["data"]["errorMessage"]; - scope.$root["modalWindow"]("alert", "REQUEST_ERROR", oOptions); - } - } - }); - } - return promise; -} - -/** - * Fonction qui renvoie les paramètres pour effectuer la requête AJAX - * @returns {getUrlParams.oUrlParams} - */ -function getUrlParams() { - var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["propertiesSrvc"]); - var sTable = ""; - var sCompare_operator = ""; - var sColumn = ""; - var aValue = []; - var aValeur = []; - - if (oFormValues.extent_method.selectedOption["value"] == "id_conseil") - { - sTable = "ct"; - sColumn = "ct_id"; - sCompare_operator = "IN"; - aValue = oFormValues.id_conseil.selectedOption; - } - else if (oFormValues.extent_method.selectedOption["value"] == "id_com") - { - sTable = "commune"; - sColumn = "commune_id"; - sCompare_operator = "IN"; - aValue = oFormValues.id_com.selectedOption; - } - - if (oFormValues.extent_method.selectedOption["value"] == "extent") - { - sTable = "ct"; - sColumn = "geom"; - sCompare_operator = "INTERSECT"; - aValeur = "SRID=2154;"+ oFormValues.extent; - //console.log('Compare_operator ' + compare_operator + ' valeur ' + valeur ); - } - else - { - if(aValue) - { - for (var i = 0; i < aValue.length; i++) - { - //Si c'est une sélection vide - if(aValue[i]["value"] == "") - { - //On remplace la valeur vide par un id négatif - aValeur[i] = "-1"; - } - else if (oFormValues.extent_method.selectedOption["value"] == "id_conseil") - { - aValeur[i] = aValue[i]["value"]; - } - else if (oFormValues.extent_method.selectedOption["value"] == "id_com") - { - aValeur[i] = aValue[i]["value"]; - } - else if (oFormValues.extent_method.selectedOption["value"] == "id_conseil") - { - aValeur[i] = aValue[i]["value"]; - } - } - } - else - { - aValeur[0] = "-1"; - } - } - - var oUrlParams = { - "schema": propertiesSrvc["schema_extraction"], - "table": sTable, - "distinct": true, - "filter": { - "column": sColumn, - "compare_operator": sCompare_operator, - "value": aValeur - } - } - return oUrlParams; -} - -/** - * destructor_form - * Fonction appelé quand on quitte le formulaire nettoie toute les fonctions pour les rendres inutilisable en dehors du formulaire - * @returns {undefined} - */ -var destructor_form = function () { - console.log("Destructor"); - - for (var i = 0; i < oFormRequired.toDestructor.length; i++) { - oFormRequired.toDestructor[i] = undefined; - delete oFormRequired.toDestructor[i]; - } - - //supprimer la balise script du js pour pouvoir le recharger si on reviens sur le formulaire plus tard - angular.element('[src="' + oFormRequired.sUrl + '?version=' + oFormRequired.scope_["oProperties"]["build"] + '"]').remove(); - - oFormRequired = undefined; - delete oFormRequired; - - constructor_form = undefined; - delete constructor_form; - destructor_form = undefined; - delete destructor_form; -}; - -/**********************************************************************************/ \ No newline at end of file diff --git a/src/module_extraction/module/forms/extraction/extraction_extraction_extraction.json b/src/module_extraction/module/forms/extraction/extraction_extraction_extraction.json deleted file mode 100755 index 7cd9f2928d152472153680eeb50e4059f471fa71..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/forms/extraction/extraction_extraction_extraction.json +++ /dev/null @@ -1,4838 +0,0 @@ -{ - "display": { - "name": "extraction_extraction_extraction-form", - "title": "EXTRACTION_EXTRACTION_EXTRACTION_TITLE", - "input_size": "xxs", - "initEvent": "initExtractionExtractionForm()", - "nb_cols": 12, - "javascript": true, - "rows": [ - { - "fields": [ - { - "type": "label", - "name": "bo_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_BO_ID", - "required": false, - "nb_cols": 12, - "id": "bo_id_1_1" - } - ] - }, - { - "fields": [ - { - "type": "checkbox", - "name": "preco_tech", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_TECHNIQUE", - "nb_cols": 4, - "id": "Element_6_2_1" - }, - { - "type": "checkbox", - "name": "chart_graph", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CARTOGRAPHIQUE", - "nb_cols": 4, - "id": "Element_6_2_2" - }, - { - "type": "checkbox", - "name": "metadonnees", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ISOGEO", - "nb_cols": 4, - "id": "Element_6_2_3" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "status", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_STATUS", - "required": false, - "nb_cols": 4, - "id": "status_2_1" - }, - { - "type": "label", - "name": "creation_date", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CREATION_DATE", - "required": false, - "nb_cols": 6, - "id": "creation_date_4_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "email", - "label": "FORM_EMAIL_USERS_USER", - "required": false, - "nb_cols": 4, - "id": "email_3_1" - }, - { - "type": "label", - "name": "company", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMPANY", - "required": false, - "nb_cols": 4, - "id": "company_8_1" - }, - { - "type": "label", - "name": "requestor", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_REQUESTOR", - "required": false, - "nb_cols": 4, - "id": "requestor_5_1" - } - ] - }, - { - "fields": [ - { - "type": "linkurl", - "name": "ae", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_AE", - "required": false, - "nb_cols": 12, - "id": "ae_6_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "layers", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_LAYERS", - "required": false, - "nb_cols": 12, - "id": "layers_9_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "coordsys_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COORDSYS_ID", - "required": false, - "nb_cols": 4, - "id": "coordsys_id_11_1" - }, - { - "type": "label", - "name": "vector_format_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_VECTOR_FORMAT_ID", - "required": false, - "nb_cols": 4, - "id": "vector_format_id_10_1" - }, - { - "type": "label", - "name": "raster_format_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_RASTER_FORMAT_ID", - "required": false, - "nb_cols": 4, - "id": "raster_format_id_14_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "extent_method", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT_METHOD", - "required": false, - "nb_cols": 12, - "id": "extent_method_15_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "id_com", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_COM", - "required": false, - "nb_cols": 12, - "id": "id_com_22_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "id_conseil", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_CONSEIL", - "required": false, - "nb_cols": 12, - "id": "id_conseil_23_1" - } - ] - }, - { - "fields": [ - { - "type": "map_vmap", - "name": "extent", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT", - "required": false, - "nb_cols": 12, - "id": "extent_7_1", - "style": { - "height": "250px" - }, - "map_options": { - "proj": "EPSG:2154", - "type": "vmap", - "center": { - "extent": [ - 4510838297753.592, - 313452152357706.75, - 4510842604414.408, - 313452153911336.25 - ], - "coord": [ - 4510840451084, - 313452153134521.5 - ], - "scale": 23468294 - }, - "controls": { - "MP": true, - "ZO": true, - "SL": true, - "CP": true - }, - "layers": [], - "interactions": { - "multi_geometry": false, - "full_screen": true, - "RA": true, - "RO": true, - "ED": true, - "DP": false, - "DL": false, - "DPol": true, - "SE": true - }, - "draw_color": "rgba(54,184,255,0.6)", - "contour_color": "rgba(0,0,0,0.4)", - "contour_size": 2, - "circle_radius": 6, - "features": [], - "coord_accuracy": 8, - "tree": { - "name": "Tree", - "children": [ - { - "view": { - "center": [ - "902168", - "6269043" - ], - "zoom": 7, - "maxZoom": 28, - "minZoom": 0, - "projection": "EPSG:2154", - "extent": [ - 4510835482577.04, - 313452150322452.2, - 4510845419590.96, - 313452155946590.8 - ] - } - }, - { - "name": "extraction", - "children": [ - { - "name": "REF_ortho2011", - "layerType": "tilewms", - "url": "http://SCPA441.cpa.fr:8399/arcgis/services/REF_ortho2011/MapServer/WMSServer", - "index": -1, - "visible": true, - "opacity": 1, - "is_dynamic": false, - "is_filtered": false, - "version": "1.3.0", - "params": { - "LAYERS": "0", - "VERSION": "1.3.0", - "STYLES": "" - }, - "bo_queryable": false, - "layer_id": 1, - "select": true - }, - { - "name": "REF_CPA_LIMITE_COMMUNE", - "layerType": "tilewms", - "url": "http://SCPA441.cpa.fr:8399/arcgis/services/REF_CPA_LIMITE_COMMUNE/MapServer/WMSServer", - "index": -1, - "visible": true, - "opacity": 1, - "is_dynamic": false, - "is_filtered": false, - "version": "1.3.0", - "params": { - "LAYERS": "0,1", - "VERSION": "1.3.0", - "STYLES": "" - }, - "bo_queryable": false, - "layer_id": 2, - "select": true - } - ], - "visible": true - } - ] - } - } - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "history", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_HISTORY", - "required": false, - "nb_cols": 12, - "id": "history_3_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "note", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE", - "required": false, - "nb_cols": 12, - "id": "note_12_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "note_line", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE_LINE", - "required": false, - "nb_cols": 12, - "id": "note_line_13_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "options": { - "choices": [ - { - "label": "oui", - "value": true - }, - { - "label": "non", - "value": false - } - ] - }, - "name": "signed", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_SIGNED", - "required": false, - "nb_cols": 3, - "id": "signed_16_1" - }, - { - "type": "label", - "options": { - "choices": [ - { - "label": "oui", - "value": true - }, - { - "label": "non", - "value": false - } - ] - }, - "name": "accepted_by_cpa", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ACCEPTED_BY_CPA", - "required": false, - "nb_cols": 3, - "id": "accepted_by_cpa_17_1" - }, - { - "type": "label", - "options": { - "choices": [ - { - "label": "oui", - "value": true - }, - { - "label": "non", - "value": false - } - ] - }, - "name": "identification_complete", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_IDENTIFICATION_COMPLETE", - "required": false, - "nb_cols": 3, - "id": "identification_complete_18_1" - }, - { - "type": "label", - "options": { - "choices": [ - { - "label": "oui", - "value": true - }, - { - "label": "non", - "value": false - } - ] - }, - "name": "definition_complete", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_DEFINITION_COMPLETE", - "required": false, - "nb_cols": 3, - "id": "definition_complete_19_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "comment", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMMENT", - "required": false, - "nb_cols": 12, - "id": "comment_20_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "priority_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_PRIORITY_ID", - "required": false, - "nb_cols": 12, - "id": "priority_id_21_1" - } - ] - }, - { - "fields": [ - { - "type": "hidden", - "name": "status_name", - "nb_cols": 6, - "id": "Element_0_25_1" - }, - { - "type": "hidden", - "name": "tr_status_method", - "nb_cols": 6, - "id": "Element_0_25_2" - } - ] - }, - { - "class": "wab-method-button", - "fields": [ - { - "type": "button", - "class": "btn-ungroup btn-group-sm", - "nb_cols": 1, - "name": "display_button", - "id": "display_button", - "buttons": [ - { - "type": "button", - "name": "return_list", - "label": "FORM_RETURN_LIST", - "class": "btn-primary", - "event": "setMode(\"search\")", - "disabled": false - } - ] - }, - { - "type": "button", - "name": "Element_0", - "nb_cols": 1, - "id": "Element_0_25_2", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "form_submit", - "label": "Autoriser l'extraction", - "class": "btn-primary", - "event": "setWabStatusMethod('trAutoriser')" - } - ] - }, - { - "type": "button", - "name": "Element_1", - "nb_cols": 1, - "id": "Element_1_25_3", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "form_submit", - "label": "Demander l'AE", - "class": "btn-primary", - "event": "setWabStatusMethod('trDemander')", - "disabled": false - } - ] - }, - { - "type": "button", - "name": "Element_2", - "nb_cols": 1, - "id": "Element_2_25_4", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "form_submit", - "label": "Générer l'AE", - "class": "btn-primary", - "event": "setWabStatusMethod('trGenerer')" - } - ] - }, - { - "type": "button", - "name": "Element_3", - "nb_cols": 1, - "id": "Element_3_25_5", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "form_submit", - "label": "Créer", - "class": "btn-primary", - "event": "setWabStatusMethod('trNouveau')" - } - ] - }, - { - "type": "button", - "name": "Element_4", - "nb_cols": 1, - "id": "Element_4_25_6", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "form_submit", - "label": "Refuser l'extraction", - "class": "btn-primary", - "event": "setWabStatusMethod('trRefuser')", - "disabled": false - } - ] - }, - { - "type": "button", - "name": "Element_5", - "nb_cols": 1, - "id": "Element_5_25_7", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "form_submit", - "label": "Recharger l'acte d'engagement", - "class": "btn-primary", - "event": "setWabStatusMethod('trResoumettre')" - } - ] - }, - { - "type": "button", - "name": "Element_7", - "nb_cols": 1, - "id": "Element_7_25_9", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "form_submit", - "label": "Soumettre l'AE", - "class": "btn-primary", - "event": "setWabStatusMethod('trSoumettre')" - } - ] - }, - { - "type": "button", - "name": "Element_8", - "nb_cols": 1, - "id": "Element_8_25_10", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "form_submit", - "label": "Terminer", - "class": "btn-primary", - "event": "setWabStatusMethod('trTerminer')" - } - ] - } - ] - } - ], - "wab": { - "START": { - "controleur": { - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "Element_1": "", - "statistique": "" - }, - "demandeur": { - "email": "rw", - "company": "rw", - "layers": "rw", - "coordsys_id": "rw", - "vector_format_id": "rw", - "raster_format_id": "rw", - "extent_method": "rw", - "id_com": "rw", - "id_conseil": "rw", - "extent": "rw", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "Element_1": "", - "statistique": "" - } - }, - "Nouveau": { - "controleur": { - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "Element_1": "", - "statistique": "" - }, - "demandeur": { - "email": "rw", - "company": "rw", - "layers": "rw", - "coordsys_id": "rw", - "vector_format_id": "rw", - "raster_format_id": "rw", - "extent_method": "rw", - "id_com": "rw", - "id_conseil": "rw", - "extent": "rw", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "rw", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "Element_1": "", - "statistique": "" - } - }, - "AE Demandé": { - "controleur": { - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "Element_1": "", - "statistique": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "Element_1": "", - "statistique": "" - } - }, - "AE Généré": { - "controleur": { - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "Element_1": "", - "statistique": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "rw", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "Element_1": "", - "statistique": "" - } - }, - "AE Soumis": { - "controleur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "rw", - "accepted_by_cpa": "rw", - "identification_complete": "rw", - "definition_complete": "rw", - "comment": "rw", - "priority_id": "r", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "Element_1": "", - "statistique": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "r", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "Element_1": "", - "statistique": "" - } - }, - "Autorisée": { - "controleur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "r", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "rw", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "Element_1": "", - "statistique": "" - }, - "demandeur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "Element_1": "", - "statistique": "" - } - }, - "Refusée": { - "controleur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "r", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "Element_1": "", - "statistique": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "r", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "Element_1": "", - "statistique": "" - } - }, - "Terminée": { - "controleur": { - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "", - "raster_format_id": "r", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "r", - "status": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "r", - "priority_id": "", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "email": "", - "Element_1": "", - "statistique": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "", - "raster_format_id": "r", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "r", - "status": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "r", - "priority_id": "", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "display_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "Element_1": "", - "statistique": "" - } - } - }, - "tabs": { - "position": "top", - "list": [ - { - "label": "Tab 0", - "elements": [ - "bo_id", - "status", - "history", - "creation_date", - "requestor", - "ae", - "extent", - "email", - "company", - "layers", - "vector_format_id", - "coordsys_id", - "note", - "note_line", - "raster_format_id", - "extent_method", - "signed", - "accepted_by_cpa", - "identification_complete", - "definition_complete", - "comment", - "priority_id", - "id_com", - "id_conseil", - "display_button", - "status_name", - "ct_list", - "statistique", - "Element_3", - "Element_4", - "Element_5", - "Element_7", - "Element_8", - "tr_status_method", - "format", - "preco_tech", - "chart_graph", - "metadonnees" - ] - } - ] - } - }, - "search": { - "name": "extraction_extraction_extraction-form", - "title": "EXTRACTION_EXTRACTION_EXTRACTION_TITLE", - "input_size": "xxs", - "nb_cols": 12, - "javascript": false, - "rows": [ - { - "fields": [ - { - "type": "text", - "name": "company", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMPANY", - "nb_cols": 12, - "id": "company_8_1" - } - ] - }, - { - "fields": [ - { - "type": "button", - "class": "btn-ungroup btn-group-xs", - "nb_cols": 12, - "name": "search_button", - "id": "search_button", - "buttons": [ - { - "type": "button", - "name": "search", - "label": "FORM_SEARCH_BUTTON", - "class": "btn-primary", - "event": "setGridFilter()" - }, - { - "type": "reset", - "name": "reset", - "label": "FORM_RESET_BUTTON", - "class": "btn-primary", - "event": "resetGridFilter()" - } - ] - } - ] - } - ], - "tabs": { - "position": "top", - "list": [ - { - "label": "Tab 0", - "elements": [ - "company", - "search_button" - ] - } - ] - } - }, - "insert": { - "name": "extraction_extraction_extraction-form", - "title": "EXTRACTION_EXTRACTION_EXTRACTION_TITLE_INSERT", - "input_size": "xxs", - "nb_cols": 12, - "javascript": true, - "rows": [ - { - "fields": [ - { - "type": "label", - "name": "bo_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_TECHNIQUE", - "nb_cols": 12, - "id": "Element_0_2_1" - } - ] - }, - { - "fields": [ - { - "type": "checkbox", - "name": "preco_tech", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_TECHNIQUE", - "required": false, - "nb_cols": 4, - "id": "checkbox_tech_2_1" - }, - { - "type": "checkbox", - "name": "chart_graph", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CARTOGRAPHIQUE", - "required": false, - "nb_cols": 4, - "id": "checkbox_carto" - }, - { - "type": "checkbox", - "name": "metadonnees", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ISOGEO", - "required": false, - "nb_cols": 4, - "id": "checkbox_iso" - } - ] - }, - { - "fields": [ - { - "type": "email", - "name": "email", - "label": "FORM_EMAIL_USERS_USER", - "required": true, - "nb_cols": 6, - "id": "email_3_1", - "pattern": "^(([a-zA-Z]|[0-9])|([-]|[_]|[.]))+[@](([a-zA-Z]|[0-9])|([-]|[_]|[.])){2,63}[.](([a-zA-Z0-9]){2,63})+$" - }, - { - "type": "text", - "name": "company", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMPANY", - "required": true, - "nb_cols": 6, - "id": "company_8_1" - } - ] - }, - { - "fields": [ - { - "type": "select", - "name": "extent_method", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT_METHOD", - "required": true, - "nb_cols": 12, - "id": "extent_method_15_1", - "options": [ - "Commmunes|id_com", - "Conseils de Territoire|id_conseil", - "Etendue libre|extent" - ], - "id_from": "extent_method_15_1_from" - } - ] - }, - { - "fields": [ - { - "type": "list", - "name": "id_com", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_COM", - "required": false, - "nb_cols": 12, - "datasource": { - "datasource_id": "datasource_9", - "sort_order": "ASC", - "distinct": "true", - "label_key": "name", - "order_by": "name", - "id_key": "commune_id", - "attributs": "commune_id|name" - }, - "id": "id_com_22_1", - "id_from": "id_com_22_1_from", - "size": 10 - } - ] - }, - { - "fields": [ - { - "type": "list", - "name": "id_conseil", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_CONSEIL", - "required": false, - "nb_cols": 12, - "datasource": { - "datasource_id": "datasource_8", - "sort_order": "ASC", - "distinct": "true", - "label_key": "name", - "order_by": "name", - "id_key": "ct_id", - "attributs": "ct_id|name" - }, - "id": "id_conseil_23_1", - "id_from": "id_conseil_23_1_from", - "size": 10 - } - ] - }, - { - "fields": [ - { - "type": "map_vmap", - "name": "extent", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT", - "required": false, - "nb_cols": 12, - "id": "extent_7_1", - "style": { - "height": "250px" - }, - "map_options": { - "proj": "EPSG:2154", - "type": "vmap", - "center": { - "extent": [ - -1736177.943496094, - 5863277.723320313, - 2570482.873496094, - 7416907.166679688 - ], - "coord": [ - 417152.46499999985, - 6640092.445 - ], - "scale": 23468294 - }, - "controls": { - "MP": true, - "ZO": true, - "SL": true, - "CP": true - }, - "layers": [], - "interactions": { - "multi_geometry": false, - "full_screen": true, - "RA": true, - "RO": true, - "ED": true, - "DP": false, - "DL": false, - "DPol": true, - "SE": true - }, - "draw_color": "rgba(54,184,255,0.6)", - "contour_color": "rgba(0,0,0,0.4)", - "contour_size": 2, - "circle_radius": 6, - "features": [], - "coord_accuracy": 8, - "tree": { - "name": "Tree", - "children": [ - { - "view": { - "center": [ - "902168", - "6269043" - ], - "zoom": 7, - "maxZoom": 28, - "minZoom": 0, - "projection": "EPSG:2154", - "extent": [ - 4510835482577.04, - 313452150322452.2, - 4510845419590.96, - 313452155946590.8 - ] - } - }, - { - "name": "extraction", - "children": [ - { - "name": "REF_ortho2011", - "layerType": "tilewms", - "url": "http://SCPA441.cpa.fr:8399/arcgis/services/REF_ortho2011/MapServer/WMSServer", - "index": -1, - "visible": true, - "opacity": 1, - "is_dynamic": false, - "is_filtered": false, - "version": "1.3.0", - "params": { - "LAYERS": "0", - "VERSION": "1.3.0", - "STYLES": "" - }, - "bo_queryable": false, - "layer_id": 1, - "select": true - }, - { - "name": "REF_CPA_LIMITE_COMMUNE", - "layerType": "tilewms", - "url": "http://SCPA441.cpa.fr:8399/arcgis/services/REF_CPA_LIMITE_COMMUNE/MapServer/WMSServer", - "index": -1, - "visible": true, - "opacity": 1, - "is_dynamic": false, - "is_filtered": false, - "version": "1.3.0", - "params": { - "LAYERS": "0,1", - "VERSION": "1.3.0", - "STYLES": "" - }, - "bo_queryable": false, - "layer_id": 2, - "select": true - } - ], - "visible": true - } - ] - } - } - } - ] - }, - { - "class": "extraction-treeview", - "fields": [ - { - "type": "treeview", - "name": "layers", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_LAYERS", - "required": false, - "nb_cols": 12, - "id": "layers_9_1", - "size": 20, - "options": { - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true, - "data": "getExtractionLayersTree()" - } - } - ] - }, - { - "fields": [ - { - "type": "treeview", - "name": "statistique", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_STATISTIQUE", - "required": false, - "pattern": "", - "nb_cols": 12, - "id": "statistique_9_1", - "options": { - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true, - "data": "getExtractionStatsTree()" - } - } - ] - }, - { - "fields": [ - { - "type": "select", - "name": "coordsys_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COORDSYS_ID", - "required": false, - "nb_cols": 4, - "id": "coordsys_id_11_1", - "datasource": { - "datasource_id": "datasource_1", - "sort_order": "ASC", - "distinct": "true", - "label_key": "coordsys", - "order_by": "coordsys", - "id_key": "coordsys_id", - "attributs": "coordsys_id|coordsys" - }, - "default_value": "Lambert93", - "id_from": "coordsys_id_11_1_from" - }, - { - "type": "select", - "name": "vector_format_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_VECTOR_FORMAT_ID", - "required": false, - "nb_cols": 4, - "id": "vector_format_id_10_1", - "datasource": { - "datasource_id": "datasource_2", - "sort_order": "ASC", - "distinct": "true", - "label_key": "format", - "order_by": "format", - "id_key": "format_id", - "attributs": "format_id|format" - }, - "default_value": "SHAPE", - "id_from": "vector_format_id_10_1_from" - }, - { - "type": "select", - "name": "raster_format_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_RASTER_FORMAT_ID", - "required": false, - "nb_cols": 4, - "id": "raster_format_id_14_1", - "datasource": { - "datasource_id": "datasource_3", - "sort_order": "ASC", - "distinct": "true", - "label_key": "format", - "order_by": "format", - "id_key": "format_id", - "attributs": "format_id|format" - }, - "default_value": "ECW", - "id_from": "raster_format_id_14_1_from" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "status", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_STATUS", - "required": false, - "nb_cols": 12, - "id": "status_2_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "history", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_HISTORY", - "required": false, - "nb_cols": 12, - "id": "history_3_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "creation_date", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CREATION_DATE", - "required": false, - "nb_cols": 12, - "id": "creation_date_4_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "requestor", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_REQUESTOR", - "required": false, - "nb_cols": 12, - "id": "requestor_5_1" - } - ] - }, - { - "fields": [ - { - "type": "file_wsdata", - "name": "ae", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_AE", - "required": false, - "nb_cols": 12, - "id": "ae_6_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "note", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE", - "required": false, - "nb_cols": 12, - "id": "note_12_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "note_line", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE_LINE", - "required": false, - "nb_cols": 12, - "id": "note_line_13_1" - } - ] - }, - { - "fields": [ - { - "type": "radio", - "options": { - "choices": [ - { - "label": "oui", - "value": true - }, - { - "label": "non", - "value": false - } - ] - }, - "name": "signed", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_SIGNED", - "required": false, - "nb_cols": 12, - "id": "signed_16_1" - } - ] - }, - { - "fields": [ - { - "type": "radio", - "options": { - "choices": [ - { - "label": "oui", - "value": true - }, - { - "label": "non", - "value": false - } - ] - }, - "name": "accepted_by_cpa", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ACCEPTED_BY_CPA", - "required": false, - "nb_cols": 12, - "id": "accepted_by_cpa_17_1" - } - ] - }, - { - "fields": [ - { - "type": "radio", - "options": { - "choices": [ - { - "label": "oui", - "value": true - }, - { - "label": "non", - "value": false - } - ] - }, - "name": "identification_complete", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_IDENTIFICATION_COMPLETE", - "required": false, - "nb_cols": 12, - "id": "identification_complete_18_1" - } - ] - }, - { - "fields": [ - { - "type": "radio", - "options": { - "choices": [ - { - "label": "oui", - "value": true - }, - { - "label": "non", - "value": false - } - ] - }, - "name": "definition_complete", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_DEFINITION_COMPLETE", - "required": false, - "nb_cols": 12, - "id": "definition_complete_19_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "comment", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMMENT", - "required": false, - "nb_cols": 12, - "id": "comment_20_1" - } - ] - }, - { - "fields": [ - { - "type": "integer", - "name": "priority_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_PRIORITY_ID", - "required": false, - "nb_cols": 12, - "id": "priority_id_21_1" - } - ] - }, - { - "fields": [ - { - "type": "hidden", - "name": "status_name", - "nb_cols": 6, - "id": "Element_0_26_1", - "default_value": "START" - }, - { - "type": "hidden", - "name": "tr_status_method", - "nb_cols": 6, - "id": "Element_0_25_2" - } - ] - }, - { - "class": "wab-method-button", - "fields": [ - { - "type": "button", - "class": "btn-ungroup btn-group-sm", - "nb_cols": 6, - "name": "insert_button", - "id": "insert_button", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "FORM_CREATE", - "class": "btn-primary" - } - ] - }, - { - "type": "button", - "name": "return_list_button", - "nb_cols": 6, - "id": "return_list_button", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "return_list", - "label": "FORM_RETURN_LIST", - "class": "btn-primary", - "event": "setMode(\"search\")" - } - ] - } - ] - } - ], - "initEvent": "initExtractionExtractionForm()", - "beforeEvent": "setWabStatusMethod('trNouveau')", - "event": "sendSimpleForm()", - "afterEvent": "editSectionForm()", - "tabs": { - "position": "top", - "list": [ - { - "label": "Tab 0", - "elements": [ - "bo_id", - "status", - "history", - "creation_date", - "requestor", - "ae", - "email", - "extent", - "company", - "layers", - "vector_format_id", - "coordsys_id", - "note", - "note_line", - "raster_format_id", - "extent_method", - "signed", - "accepted_by_cpa", - "identification_complete", - "definition_complete", - "comment", - "priority_id", - "id_com", - "id_conseil", - "insert_button", - "bo_id", - "status_name", - "tr_status_method", - "return_list_button", - "statistique" - ] - } - ] - }, - "wab": { - "START": { - "controleur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "insert_button": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "return_list_button": "rw", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "statistique": "" - }, - "demandeur": { - "email": "rw", - "company": "rw", - "layers": "rw", - "coordsys_id": "rw", - "vector_format_id": "rw", - "raster_format_id": "rw", - "extent_method": "rw", - "id_com": "rw", - "id_conseil": "rw", - "extent": "rw", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "insert_button": "rw", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "return_list_button": "rw", - "chart_graph": "rw", - "metadonnees": "rw", - "preco_tech": "rw", - "statistique": "rw" - } - }, - "Nouveau": { - "controleur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "insert_button": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "return_list_button": "rw", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "statistique": "" - }, - "demandeur": { - "email": "rw", - "company": "rw", - "layers": "rw", - "coordsys_id": "rw", - "vector_format_id": "rw", - "raster_format_id": "rw", - "extent_method": "rw", - "id_com": "rw", - "id_conseil": "rw", - "extent": "rw", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "insert_button": "", - "bo_id": "r", - "status_name": "", - "tr_status_method": "", - "return_list_button": "rw", - "chart_graph": "rw", - "metadonnees": "rw", - "preco_tech": "rw", - "statistique": "rw" - } - }, - "AE Demandé": { - "controleur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "insert_button": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "return_list_button": "", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "statistique": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "insert_button": "", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "return_list_button": "rw", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "r", - "statistique": "r" - } - }, - "AE Généré": { - "controleur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "insert_button": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "return_list_button": "", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "statistique": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "rw", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "insert_button": "", - "bo_id": "r", - "status_name": "r", - "tr_status_method": "r", - "return_list_button": "rw", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "r", - "statistique": "r" - } - }, - "AE Soumis": { - "controleur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "rw", - "accepted_by_cpa": "rw", - "identification_complete": "rw", - "definition_complete": "rw", - "comment": "rw", - "priority_id": "r", - "insert_button": "", - "bo_id": "r", - "status_name": "r", - "tr_status_method": "r", - "return_list_button": "rw", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "statistique": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "r", - "insert_button": "", - "bo_id": "r", - "status_name": "r", - "tr_status_method": "r", - "return_list_button": "rw", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "r", - "statistique": "r" - } - }, - "Autorisée": { - "controleur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "r", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "r", - "insert_button": "", - "bo_id": "r", - "status_name": "r", - "tr_status_method": "r", - "return_list_button": "rw", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "statistique": "" - }, - "demandeur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "insert_button": "", - "bo_id": "", - "status_name": "", - "tr_status_method": "", - "return_list_button": "rw", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "statistique": "" - } - }, - "Refusée": { - "controleur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "r", - "insert_button": "", - "bo_id": "r", - "status_name": "r", - "tr_status_method": "r", - "return_list_button": "rw", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "statistique": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "status": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "r", - "insert_button": "", - "bo_id": "r", - "status_name": "rw", - "tr_status_method": "rw", - "return_list_button": "rw", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "r", - "statistique": "r" - } - }, - "Extraction terminée": { - "controleur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - }, - "demandeur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - } - }, - "Fichier invalidé": { - "controleur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - }, - "demandeur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - } - }, - "Fichier déposé": { - "controleur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - }, - "demandeur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - } - }, - "Fichier accepté": { - "controleur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - }, - "demandeur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - } - }, - "Dépôt terminé": { - "controleur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - }, - "demandeur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "email": "", - "company": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "status": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "tr_status_method": "", - "insert_button": "", - "return_list_button": "", - "statistique": "" - } - } - } - }, - "update": { - "name": "extraction_extraction_extraction-form", - "title": "EXTRACTION_EXTRACTION_EXTRACTION_TITLE", - "input_size": "xxs", - "nb_cols": 12, - "javascript": true, - "rows": [ - { - "fields": [ - { - "type": "label", - "name": "bo_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_BO_ID", - "required": false, - "nb_cols": 12, - "id": "bo_id_1_1" - } - ] - }, - { - "fields": [ - { - "type": "label", - "name": "status_name", - "nb_cols": 12, - "id": "Element_6_25_1" - }, - { - "type": "checkbox", - "name": "preco_tech", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_TECHNIQUE", - "required": false, - "nb_cols": 4, - "id": "checkbox_tech_2_1" - }, - { - "type": "checkbox", - "name": "chart_graph", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CARTOGRAPHIQUE", - "required": false, - "nb_cols": 4, - "id": "checkbox_carto" - }, - { - "type": "checkbox", - "name": "metadonnees", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ISOGEO", - "required": false, - "nb_cols": 4, - "id": "checkbox_iso" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "creation_date", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CREATION_DATE", - "required": false, - "nb_cols": 12, - "id": "creation_date_4_1" - } - ] - }, - { - "fields": [ - { - "type": "email", - "name": "email", - "label": "FORM_EMAIL_USERS_USER", - "required": false, - "nb_cols": 4, - "id": "email_3_1", - "pattern": "^(([a-zA-Z]|[0-9])|([-]|[_]|[.]))+[@](([a-zA-Z]|[0-9])|([-]|[_]|[.])){2,63}[.](([a-zA-Z0-9]){2,63})+$" - }, - { - "type": "text", - "name": "company", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMPANY", - "required": true, - "nb_cols": 4, - "id": "company_8_1" - }, - { - "type": "text", - "name": "requestor", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_REQUESTOR", - "required": false, - "nb_cols": 4, - "id": "requestor_5_1" - } - ] - }, - { - "fields": [ - { - "type": "select", - "name": "extent_method", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT_METHOD", - "required": true, - "nb_cols": 12, - "id": "extent_method_15_1", - "options": [ - "Commmunes|id_com", - "Conseils de Territoire|id_conseil", - "Etendue libre|extent" - ], - "id_from": "extent_method_15_1_from" - } - ] - }, - { - "fields": [ - { - "type": "list", - "name": "id_com", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_COM", - "required": false, - "nb_cols": 12, - "datasource": { - "datasource_id": "datasource_9", - "sort_order": "ASC", - "distinct": "true", - "label_key": "name", - "order_by": "name", - "id_key": "commune_id", - "attributs": "commune_id|name" - }, - "id": "id_com_22_1", - "id_from": "id_com_22_1_from", - "size": 10 - } - ] - }, - { - "fields": [ - { - "type": "list", - "name": "id_conseil", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_CONSEIL", - "required": false, - "nb_cols": 12, - "datasource": { - "datasource_id": "datasource_8", - "sort_order": "ASC", - "distinct": "true", - "label_key": "name", - "order_by": "name", - "id_key": "ct_id", - "attributs": "ct_id|name" - }, - "id": "id_conseil_23_1", - "id_from": "id_conseil_23_1_from", - "size": 10 - } - ] - }, - { - "fields": [ - { - "type": "map_vmap", - "name": "extent", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT", - "required": false, - "nb_cols": 12, - "id": "extent_7_1", - "style": { - "height": "250px" - }, - "map_options": { - "proj": "EPSG:2154", - "type": "vmap", - "center": { - "extent": [ - 4510838297753.592, - 313452152357706.75, - 4510842604414.408, - 313452153911336.25 - ], - "coord": [ - 4510840451084, - 313452153134521.5 - ], - "scale": 23468294 - }, - "controls": { - "MP": true, - "ZO": true, - "SL": true, - "CP": true - }, - "layers": [], - "interactions": { - "multi_geometry": false, - "full_screen": true, - "RA": true, - "RO": true, - "ED": true, - "DP": false, - "DL": false, - "DPol": true, - "SE": true - }, - "draw_color": "rgba(54,184,255,0.6)", - "contour_color": "rgba(0,0,0,0.4)", - "contour_size": 2, - "circle_radius": 6, - "features": [], - "coord_accuracy": 8, - "tree": { - "name": "Tree", - "children": [ - { - "view": { - "center": [ - "902168", - "6269043" - ], - "zoom": 7, - "maxZoom": 28, - "minZoom": 0, - "projection": "EPSG:2154", - "extent": [ - 4510835482577.04, - 313452150322452.2, - 4510845419590.96, - 313452155946590.8 - ] - } - }, - { - "name": "extraction", - "children": [ - { - "name": "REF_ortho2011", - "layerType": "tilewms", - "url": "http://SCPA441.cpa.fr:8399/arcgis/services/REF_ortho2011/MapServer/WMSServer", - "index": -1, - "visible": true, - "opacity": 1, - "is_dynamic": false, - "is_filtered": false, - "version": "1.3.0", - "params": { - "LAYERS": "0", - "VERSION": "1.3.0", - "STYLES": "" - }, - "bo_queryable": false, - "layer_id": 1, - "select": true - }, - { - "name": "REF_CPA_LIMITE_COMMUNE", - "layerType": "tilewms", - "url": "http://SCPA441.cpa.fr:8399/arcgis/services/REF_CPA_LIMITE_COMMUNE/MapServer/WMSServer", - "index": -1, - "visible": true, - "opacity": 1, - "is_dynamic": false, - "is_filtered": false, - "version": "1.3.0", - "params": { - "LAYERS": "0,1", - "VERSION": "1.3.0", - "STYLES": "" - }, - "bo_queryable": false, - "layer_id": 2, - "select": true - } - ], - "visible": true - } - ] - } - } - } - ] - }, - { - "class": "extraction-treeview", - "fields": [ - { - "type": "treeview", - "name": "layers", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_LAYERS", - "required": false, - "nb_cols": 12, - "id": "layers_9_1", - "size": 20, - "options": { - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true, - "data": "getExtractionLayersTree()" - } - } - ] - }, - { - "fields": [ - { - "type": "treeview", - "name": "statistique", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_STATISTIQUE", - "required": false, - "pattern": "", - "nb_cols": 12, - "id": "statistique_9_1", - "options": { - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true, - "data": "getExtractionStatsTree()" - } - } - ] - }, - { - "fields": [ - { - "type": "file_wsdata", - "name": "ae", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_AE", - "required": false, - "nb_cols": 12, - "id": "ae_6_1" - } - ] - }, - { - "fields": [ - { - "type": "select", - "name": "coordsys_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COORDSYS_ID", - "required": false, - "nb_cols": 4, - "id": "coordsys_id_11_1", - "datasource": { - "datasource_id": "datasource_1", - "sort_order": "ASC", - "distinct": "true", - "label_key": "coordsys", - "order_by": "coordsys", - "id_key": "coordsys_id", - "attributs": "coordsys_id|coordsys" - }, - "id_from": "coordsys_id_11_1_from" - }, - { - "type": "select", - "name": "vector_format_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_VECTOR_FORMAT_ID", - "required": false, - "nb_cols": 4, - "id": "vector_format_id_10_1", - "datasource": { - "datasource_id": "datasource_2", - "sort_order": "ASC", - "distinct": "true", - "label_key": "format", - "order_by": "format", - "id_key": "format_id", - "attributs": "format_id|format" - }, - "id_from": "vector_format_id_10_1_from" - }, - { - "type": "select", - "name": "raster_format_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_RASTER_FORMAT_ID", - "required": false, - "nb_cols": 4, - "id": "raster_format_id_14_1", - "datasource": { - "datasource_id": "datasource_3", - "sort_order": "ASC", - "distinct": "true", - "label_key": "format", - "order_by": "format", - "id_key": "format_id", - "attributs": "format_id|format" - }, - "id_from": "raster_format_id_14_1_from" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "history", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_HISTORY", - "required": false, - "nb_cols": 12, - "id": "history_3_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "note", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE", - "required": false, - "nb_cols": 12, - "id": "note_12_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "note_line", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE_LINE", - "required": false, - "nb_cols": 12, - "id": "note_line_13_1" - } - ] - }, - { - "fields": [ - { - "type": "radio", - "options": { - "choices": [ - { - "label": "oui", - "value": true, - "$$hashKey": "object:2269" - }, - { - "label": "non", - "value": false, - "$$hashKey": "object:2270" - } - ] - }, - "name": "signed", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_SIGNED", - "required": false, - "nb_cols": 3, - "id": "signed_16_1" - }, - { - "type": "radio", - "options": { - "choices": [ - { - "label": "oui", - "value": true, - "$$hashKey": "object:2277" - }, - { - "label": "non", - "value": false, - "$$hashKey": "object:2278" - } - ] - }, - "name": "accepted_by_cpa", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ACCEPTED_BY_CPA", - "required": false, - "nb_cols": 3, - "id": "accepted_by_cpa_17_1" - }, - { - "type": "radio", - "options": { - "choices": [ - { - "label": "oui", - "value": true, - "$$hashKey": "object:2285" - }, - { - "label": "non", - "value": false, - "$$hashKey": "object:2286" - } - ] - }, - "name": "identification_complete", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_IDENTIFICATION_COMPLETE", - "required": false, - "nb_cols": 3, - "id": "identification_complete_18_1" - }, - { - "type": "radio", - "options": { - "choices": [ - { - "label": "oui", - "value": true, - "$$hashKey": "object:2293" - }, - { - "label": "non", - "value": false, - "$$hashKey": "object:2294" - } - ] - }, - "name": "definition_complete", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_DEFINITION_COMPLETE", - "required": false, - "nb_cols": 3, - "id": "definition_complete_19_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "comment", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMMENT", - "required": false, - "nb_cols": 12, - "id": "comment_20_1" - } - ] - }, - { - "fields": [ - { - "type": "select", - "name": "priority_id", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_PRIORITY_ID", - "required": false, - "nb_cols": 12, - "id": "priority_id_21_1", - "options": [ - "Heures Pleines|1", - "Heures creuses|0" - ], - "id_from": "priority_id_21_1_from" - } - ] - }, - { - "fields": [ - { - "type": "file_wsdata", - "name": "input_deposit", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_INPUT_DEPOSIT", - "required": false, - "pattern": "", - "nb_cols": 12, - "id": "Element_6_19_1" - } - ] - }, - { - "class": "wab-method-button", - "fields": [ - { - "type": "button", - "class": "btn-ungroup btn-group-sm", - "nb_cols": 1, - "name": "update_button", - "id": "update_button", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "FORM_UPDATE", - "class": "btn-primary" - } - ] - }, - { - "type": "button", - "name": "return_list_button", - "nb_cols": 1, - "id": "return_list_button", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "button", - "name": "return_list", - "label": "FORM_RETURN_LIST", - "class": "btn-primary", - "event": "setMode(\"search\")" - } - ] - }, - { - "type": "button", - "name": "Element_2", - "nb_cols": 1, - "id": "Element_2_20_1", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_DEPOSIT", - "class": "btn-primary", - "event": "callBoMethod('trDeposer')" - } - ] - }, - { - "type": "button", - "name": "Element_0", - "nb_cols": 1, - "id": "Element_0_25_2", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ALLOW_EXTRACTION", - "class": "btn-primary", - "event": "callBoMethod('trAutoriser')" - } - ] - }, - { - "type": "button", - "name": "Element_1", - "nb_cols": 1, - "id": "Element_1_25_3", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ASK_AE", - "class": "btn-primary", - "event": "callBoMethod('trDemander')", - "disabled": false - } - ] - }, - { - "type": "button", - "name": "Element_3", - "nb_cols": 1, - "id": "Element_3_25_5", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CREATE", - "class": "btn-primary", - "event": "callBoMethod('trNouveau')" - } - ] - }, - { - "type": "button", - "name": "Element_4", - "nb_cols": 1, - "id": "Element_4_25_6", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_REJECT_EXTRACTION", - "class": "btn-primary", - "event": "callBoMethod('trRefuser')" - } - ] - }, - { - "type": "button", - "name": "Element_5", - "nb_cols": 1, - "id": "Element_5_25_7", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_RELOAD_AE", - "class": "btn-primary", - "event": "callBoMethod('trResoumettre')" - } - ] - }, - { - "type": "button", - "name": "Element_7", - "nb_cols": 1, - "id": "Element_7_25_9", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_SEND_AE", - "class": "btn-primary", - "event": "callBoMethod('trSoumettre')" - } - ] - }, - { - "type": "button", - "name": "Element_8", - "nb_cols": 1, - "id": "Element_8_25_10", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "EXTRACTION_EXTRACTION_EXTRACTION_FORM_TERMINATE", - "class": "btn-primary", - "event": "callBoMethod('trTerminer')" - } - ] - } - ] - } - ], - "initEvent": "initExtractionExtractionForm()", - "event": "sendSimpleForm()", - "afterEvent": "editSectionForm()", - "tabs": { - "position": "top", - "list": [ - { - "label": "Tab 0", - "elements": [ - "bo_id", - "history", - "creation_date", - "requestor", - "ae", - "extent", - "company", - "layers", - "vector_format_id", - "coordsys_id", - "note", - "note_line", - "raster_format_id", - "extent_method", - "signed", - "accepted_by_cpa", - "identification_complete", - "definition_complete", - "comment", - "priority_id", - "id_com", - "id_conseil", - "update_button", - "status_name", - "Element_3", - "Element_4", - "Element_5", - "Element_7", - "Element_8", - "status_name", - "return_list_button", - "preco_tech", - "chart_graph", - "metadonnees", - "statistique", - "Element_2", - "input_deposit" - ] - } - ] - }, - "wab": { - "START": { - "controleur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "update_button": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "" - }, - "demandeur": { - "email": "rw", - "company": "rw", - "layers": "rw", - "coordsys_id": "rw", - "vector_format_id": "rw", - "raster_format_id": "rw", - "extent_method": "rw", - "id_com": "rw", - "id_conseil": "rw", - "extent": "rw", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "update_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "Element_0": "", - "statistique": "rw", - "Element_2": "", - "input_deposit": "" - } - }, - "Nouveau": { - "controleur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "update_button": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "" - }, - "demandeur": { - "email": "rw", - "company": "rw", - "layers": "rw", - "coordsys_id": "rw", - "vector_format_id": "rw", - "raster_format_id": "rw", - "extent_method": "rw", - "id_com": "rw", - "id_conseil": "rw", - "extent": "rw", - "history": "", - "creation_date": "r", - "requestor": "rw", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "r", - "status_name": "", - "update_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "rw", - "chart_graph": "rw", - "metadonnees": "rw", - "preco_tech": "rw", - "Element_0": "", - "statistique": "rw", - "Element_2": "", - "input_deposit": "" - } - }, - "AE Demandé": { - "controleur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "update_button": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "r", - "status_name": "", - "update_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "r", - "Element_0": "", - "statistique": "r", - "Element_2": "", - "input_deposit": "" - } - }, - "AE Généré": { - "controleur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "update_button": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "rw", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "r", - "status_name": "", - "update_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "rw", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "r", - "Element_0": "", - "statistique": "r", - "Element_2": "", - "input_deposit": "" - } - }, - "AE Soumis": { - "controleur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "r", - "note": "", - "note_line": "", - "signed": "rw", - "accepted_by_cpa": "rw", - "identification_complete": "rw", - "definition_complete": "rw", - "comment": "rw", - "priority_id": "r", - "bo_id": "r", - "status_name": "", - "update_button": "rw", - "Element_3": "", - "Element_4": "rw", - "Element_5": "rw", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "r", - "Element_0": "rw", - "statistique": "r", - "Element_2": "", - "input_deposit": "" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "r", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "r", - "bo_id": "r", - "status_name": "", - "update_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "", - "Element_0": "", - "statistique": "r", - "Element_2": "", - "input_deposit": "" - } - }, - "Autorisée": { - "controleur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "r", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "rw", - "bo_id": "r", - "status_name": "", - "update_button": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "r", - "Element_0": "", - "statistique": "r", - "Element_2": "", - "input_deposit": "" - }, - "demandeur": { - "email": "", - "company": "", - "layers": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "history": "", - "creation_date": "", - "requestor": "", - "ae": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "bo_id": "", - "status_name": "", - "update_button": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "" - } - }, - "Refusée": { - "controleur": { - "email": "", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "history": "r", - "creation_date": "r", - "requestor": "r", - "ae": "", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "r", - "bo_id": "r", - "status_name": "", - "update_button": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "r", - "metadonnees": "r", - "preco_tech": "r", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "r" - }, - "demandeur": { - "email": "r", - "company": "r", - "layers": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "history": "", - "creation_date": "r", - "requestor": "r", - "ae": "rw", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "r", - "bo_id": "r", - "status_name": "", - "update_button": "rw", - "Element_3": "", - "Element_4": "", - "Element_5": "rw", - "Element_7": "", - "Element_8": "", - "return_list_button": "rw", - "Element_1": "", - "chart_graph": "", - "metadonnees": "", - "preco_tech": "", - "Element_0": "", - "statistique": "r", - "Element_2": "", - "input_deposit": "r" - } - }, - "Fichier invalidé": { - "controleur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "creation_date": "", - "email": "", - "company": "", - "requestor": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "ae": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "history": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "update_button": "", - "return_list_button": "", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "r" - }, - "demandeur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "creation_date": "", - "email": "", - "company": "", - "requestor": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "ae": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "history": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "update_button": "", - "return_list_button": "", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "r" - } - }, - "Fichier déposé": { - "controleur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "creation_date": "", - "email": "", - "company": "", - "requestor": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "ae": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "history": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "update_button": "", - "return_list_button": "", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "r" - }, - "demandeur": { - "bo_id": "r", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "creation_date": "r", - "email": "r", - "company": "r", - "requestor": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "layers": "r", - "ae": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "history": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "update_button": "", - "return_list_button": "rw", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "r", - "Element_2": "", - "input_deposit": "r" - } - }, - "Fichier accepté": { - "controleur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "creation_date": "", - "email": "", - "company": "", - "requestor": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "ae": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "history": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "update_button": "", - "return_list_button": "", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "r" - }, - "demandeur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "creation_date": "", - "email": "", - "company": "", - "requestor": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "ae": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "history": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "update_button": "", - "return_list_button": "", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "r" - } - }, - "Dépôt terminé": { - "controleur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "creation_date": "", - "email": "", - "company": "", - "requestor": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "ae": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "history": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "update_button": "", - "return_list_button": "", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "r" - }, - "demandeur": { - "bo_id": "", - "preco_tech": "", - "chart_graph": "", - "metadonnees": "", - "creation_date": "", - "email": "", - "company": "", - "requestor": "", - "extent_method": "", - "id_com": "", - "id_conseil": "", - "extent": "", - "layers": "", - "ae": "", - "coordsys_id": "", - "vector_format_id": "", - "raster_format_id": "", - "history": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "update_button": "", - "return_list_button": "", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "", - "Element_2": "", - "input_deposit": "r" - } - }, - "Extraction terminée": { - "controleur": { - "bo_id": "r", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "creation_date": "r", - "email": "r", - "company": "r", - "requestor": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "layers": "r", - "ae": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "history": "r", - "note": "", - "note_line": "", - "signed": "r", - "accepted_by_cpa": "r", - "identification_complete": "r", - "definition_complete": "r", - "comment": "r", - "priority_id": "r", - "status_name": "", - "update_button": "", - "return_list_button": "rw", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "r", - "Element_2": "", - "input_deposit": "r" - }, - "demandeur": { - "bo_id": "r", - "preco_tech": "r", - "chart_graph": "r", - "metadonnees": "r", - "creation_date": "r", - "email": "r", - "company": "r", - "requestor": "r", - "extent_method": "r", - "id_com": "r", - "id_conseil": "r", - "extent": "r", - "layers": "r", - "ae": "r", - "coordsys_id": "r", - "vector_format_id": "r", - "raster_format_id": "r", - "history": "", - "note": "", - "note_line": "", - "signed": "", - "accepted_by_cpa": "", - "identification_complete": "", - "definition_complete": "", - "comment": "", - "priority_id": "", - "status_name": "", - "update_button": "", - "return_list_button": "rw", - "Element_1": "", - "Element_3": "", - "Element_4": "", - "Element_5": "", - "Element_7": "", - "Element_8": "", - "Element_0": "", - "statistique": "r", - "Element_2": "rw", - "input_deposit": "rw" - } - } - } - }, - "datasources": { - "datasource_1": { - "type": "web_service", - "dataType": "tableValue", - "name": "datasource_coordsys", - "description": "", - "parameters": { - "schema": "s_extraction", - "table": "rt_coordsys" - }, - "ressource_id": "vitis/genericquerys", - "id": "datasource_1" - }, - "datasource_2": { - "type": "web_service", - "dataType": "tableValue", - "name": "datasource_vector_format", - "description": "", - "parameters": { - "schema": "s_extraction", - "table": "rt_format", - "filter": { - "use_for_vector": true - } - }, - "ressource_id": "vitis/genericquerys", - "id": "datasource_2" - }, - "datasource_3": { - "type": "web_service", - "dataType": "tableValue", - "name": "datasource_raster_format", - "description": "", - "parameters": { - "schema": "s_extraction", - "table": "rt_format", - "filter": { - "use_for_raster": true - } - }, - "ressource_id": "vitis/genericquerys", - "id": "datasource_3" - }, - "datasource_4": { - "type": "web_service", - "dataType": "externalDatabase", - "name": "datasource_commune", - "description": "", - "parameters": { - "server": "scpa7717", - "port": "5432", - "sgbd": "pgsql", - "login": "sigl", - "password": "sigl28sig", - "database": "sig", - "schema": "cad93", - "table": "commune" - }, - "ressource_id": "vitis/genericquerys", - "id": "datasource_4" - }, - "datasource_5": { - "type": "web_service", - "dataType": "externalDatabase", - "name": "datasource_commune", - "description": "", - "parameters": { - "server": "scpa7717", - "port": "5432", - "sgbd": "pgsql", - "login": "sigl", - "password": "sigl28sig", - "database": "sig", - "schema": "ref93", - "table": "ref_amp_lim_ct" - }, - "ressource_id": "vitis/genericquerys", - "id": "datasource_5" - }, - "datasource_6": { - "type": "web_service", - "dataType": "externalDatabase", - "name": "datasource_ct", - "description": "", - "parameters": { - "filter": { - "relation": "AND", - "operators": [] - }, - "server": "scpa7717", - "port": "5432", - "sgbd": "pgsql", - "login": "sigl", - "password": "sigl28sig", - "database": "sig", - "schema": "ref93", - "table": "ct" - }, - "ressource_id": "vitis/genericquerys/ct", - "id": "datasource_6" - }, - "datasource_7": { - "type": "web_service", - "dataType": "externalDatabase", - "name": "datasource_com", - "description": "", - "parameters": { - "filter": { - "relation": "AND", - "operators": [] - }, - "server": "GEWURZTRAMINER", - "port": "5432", - "sgbd": "pgsql", - "login": "postgres", - "password": "postgres", - "database": "vitis_gtf", - "schema": "s_extraction", - "table": "commune" - }, - "ressource_id": "vitis/genericquerys/commune", - "id": "datasource_7" - }, - "datasource_8": { - "type": "web_service", - "dataType": "tableValue", - "name": "datasource_8", - "description": "", - "parameters": { - "filter": { - "relation": "AND", - "operators": [] - }, - "schema": "s_extraction", - "table": "ct" - }, - "ressource_id": "vitis/genericquerys", - "id": "datasource_8" - }, - "datasource_9": { - "type": "web_service", - "dataType": "tableValue", - "name": "datasource_9", - "description": "", - "parameters": { - "filter": { - "relation": "AND", - "operators": [] - }, - "schema": "s_extraction", - "table": "commune" - }, - "ressource_id": "vitis/genericquerys", - "id": "datasource_9" - }, - "datasource_10": { - "type": "object", - "dataType": "text", - "name": "datasource_format", - "description": "", - "options": [ - "Vecteur|vector", - "Raster|raster" - ], - "id": "datasource_10" - } - } -} \ No newline at end of file diff --git a/src/module_extraction/module/forms/extraction_depot/extraction_depot_extraction_extraction_depot.js b/src/module_extraction/module/forms/extraction_depot/extraction_depot_extraction_extraction_depot.js deleted file mode 100755 index b0b587e3d9efe94d43508b605c639499751b96ac..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/forms/extraction_depot/extraction_depot_extraction_extraction_depot.js +++ /dev/null @@ -1,253 +0,0 @@ -/* global angular, goog, vitisApp, bootbox */ - -//bloque les delete du destructeur à éviter -//'use strict'; - -console.info("Generateur_wab_generator_1 loaded --> your functions are ready"); -/*********************************************************************************** - Signaletique_Recap_0 Javascript - ***********************************************************************************/ - -var oFormRequired = { - "sUrl": "", - "scope_": {}, - "toDestructor": [] -}; -/** - * constructor_form - * Fonction appelé à l'initialisation du formulaire si dans la structure json javascript vaut "true" - * @param {type} scope - * @param {type} s_url - * @returns {undefined} - */ -var constructor_form = function (scope, s_url) { - ////////////////////////////////////////////////////////// - //Ne pas toucher - console.log("Constructor"); - - oFormRequired.sUrl = s_url; - oFormRequired.scope_ = scope; - //console.log(scope); - ////////////////////////////////////////////////////////// - // Permet de recharge le javascript d'une section à une autre - var envSrvc = angular.element(vitisApp.appWorkspaceListDrtv).injector().get(["envSrvc"]); - var formSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["formSrvc"]); - var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["propertiesSrvc"]); - - /*oFormRequired.toDestructor.push(oFormRequired.scope_.$watch("oFormValues." + oFormRequired.scope_.sFormDefinitionName + ".btn_refresh_treeview", function (value) { - console.log("DJFHVHJCHSJCJH"); - }*/ - - /** - * loadTreeview function. - * Crée le treeview des fichiers du projet fme. - **/ - scope["loadTreeviewDepot"] = function() { - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - // - $log.info("loadTreeviewDepot"); - - // Charge l'arborescence des logs. - ajaxRequest({ - "method": "GET", - "url": propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + "/extraction/extraction_depots/Tree", - "scope": scope, - "success": function(response) { - if (response["data"]["status"] == 1) { - var aNodes = []; - data = response["data"]["tree"]; - scope["aSelectedWorkspaceFile"] = []; - scope["aTreeviewLogs"] = data; - // Crée l'arborescence dans l'élément. - - for (var i in response["data"]["content"]) { - var aNode = {"text": response["data"]["content"][i]["filename"].split("/").pop(), "nodes": []} - for (var j in response["data"]["content"][i]["content"]) { - aNode["nodes"].push({"text": response["data"]["content"][i]["content"][j]["filename"].split("/").pop(), "tags": response["data"]["content"][i]["content"][j]["lastModification"].split(),}); - } - aNodes.push(aNode); - } - - $("#Element_0_2_1_treeview")["treeview"]({ - "showBorder": false, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": true, - "multiSelect": false, - "showTags": true, - "data": aNodes - }); - } - } - }); - }; - - scope["deleteFileDepot"] = function () { - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - // - $log.info("deleteFileDepot"); - - var aSelectedNode = $("#Element_0_2_1_treeview")["treeview"]('getSelected') - - if (aSelectedNode.length > 0) - { - var aNodeParent = $("#Element_0_2_1_treeview")["treeview"]('getNode', aSelectedNode[0]["parentId"]); - ajaxRequest({ - "method": "DELETES", - "params": { - "file_name": aNodeParent["text"] + "/" + aSelectedNode[0]["text"] - }, - "url": propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + "/extraction/extraction_depots", - "scope": scope, - "success": function(response) { - if (response["data"]["status"] == 1) { - } - } - }); - scope["loadTreeviewDepot"](); - } - else - { - var sErrorMessage = "EXTRACTION_DEPOT_DELETE_SELECT_A_FILE"; - var oOptions = { - "className": "modal-danger", - "message": sErrorMessage - }; - //$('#myModal').modal('toggle'); - scope.$root["modalWindow"]("dialog", "EXTRACTION_DEPORT_DELETE_NO_SELECTED", oOptions); - //$('#myModal').modal('hide'); - } - - } - scope["loadTreeviewDepot"](); - - scope["downloadFileDepot"] = function () { - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - // - $log.info("downloadFileDepot"); - - var aSelectedNode = $("#Element_0_2_1_treeview")["treeview"]('getSelected'); - var sFileName = aSelectedNode[0]["text"]; - var aNodeParent = $("#Element_0_2_1_treeview")["treeview"]('getNode', aSelectedNode[0]["parentId"]); - if (aSelectedNode[0]["parentId"] == "") - { - if (sFileName != "") - { - ajaxRequest({ - "method": "GET", - "url": propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + "/extraction/extraction_depots/File", - "scope": scope, - "params": { - "file_name": aNodeParent["text"] + "/" + aSelectedNode[0]["text"] - }, - "responseType": 'blob', - "success": function(response) { - if (typeof(window.navigator.msSaveOrOpenBlob) == "undefined") { - // Crée un lien et simule un click dessus. - var link = document.createElement('a'); - link.href = window.URL.createObjectURL(response["data"]); - link.download = sFileName; - link.style.display = 'none'; - document.body.appendChild(link); - link.click(); - document.body.removeChild(link); - } - else { - // Pour Edge et IE. - window.navigator.msSaveOrOpenBlob(response["data"], sFileName); - } - } - }); - } - } - } - //var iMaxUploadFileSize = parseInt(propertiesSrvc["max_upload_file_size"]); - - /** - * beforeProjectDirectory function. - * Traitement avant l'envoi du formulaire de la section "Répertoire Projet" (publication > Projet FME). - */ - angular.element(vitisApp.appMainDrtv).scope()["beforeDepositDirectory"] = function () { - // Injection des services. - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - var $q = angular.element(vitisApp.appHtmlFormDrtv).injector().get(["$q"]); - var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["envSrvc"]); - var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["propertiesSrvc"]); - // - $log.info("beforeDepositDirectory"); - envSrvc.sMode = "update"; - var scope = this; - var deferred = $q.defer(); - var promise = deferred.promise; - // - var oFile = envSrvc["oFormValues"][envSrvc["sFormDefinitionName"]]["control_file"]; - var iMaxUploadFileSize = parseInt(propertiesSrvc["max_upload_file_size"]); - var sErrorMessage; - - // Vérification du fichier .fmw. - if (typeof (oFile) === "object" && typeof (oFile["aFiles"]) !== "undefined" && oFile["aFiles"].length > 0) { - // Taille maxi du fichier. - if (oFile["aFiles"][0]["size"] > iMaxUploadFileSize) - sErrorMessage = "ERROR_FILE_SIZE_EXTRACTION_LOAD_DEPOSIT_DIRECTORY"; - } - // Validation du formulaire. - if (typeof (sErrorMessage) === "undefined") - deferred.resolve(); - - // Affichage de la fenêtre modale d'erreur. - if (typeof (sErrorMessage) !== "undefined") { - var oOptions = { - "className": "modal-danger", - "message": sErrorMessage - }; - scope.$root["modalWindow"]("dialog", "FORM_VALIDATION_ERROR", oOptions); - } - // - return promise; - }; - - /** - * afterProjectDirectory function. - * Actions à effectuer après l'upload d'un fichier dans le répertoire d'un projet fme. - */ - angular.element(vitisApp.appMainDrtv).scope()["afterDepositDirectory"] = function () { - // Injection des services. - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - // - $log.info("afterDepositDirectory"); - // Remise à zéro du formulaire. - this["resetForm"](); - angular.element("input[type=file]")["fileinput"]("clear"); - // Recharge la liste des fichiers. - this["loadTreeviewDepot"](); - } - // -}; - - -/** - * destructor_form - * Fonction appelé quand on quitte le formulaire nettoie toute les fonctions pour les rendres inutilisable en dehors du formulaire - * @returns {undefined} - */ -var destructor_form = function () { - console.log("Destructor"); - - for (var i = 0; i < oFormRequired.toDestructor.length; i++) { - oFormRequired.toDestructor[i] = undefined; - delete oFormRequired.toDestructor[i]; - } - - //supprimer la balise script du js pour pouvoir le recharger si on reviens sur le formulaire plus tard - angular.element('[src="' + oFormRequired.sUrl + '?version=' + oFormRequired.scope_["oProperties"]["build"] + '"]').remove(); - - oFormRequired = undefined; - delete oFormRequired; - - constructor_form = undefined; - delete constructor_form; - destructor_form = undefined; - delete destructor_form; -}; - -/**********************************************************************************/ \ No newline at end of file diff --git a/src/module_extraction/module/forms/extraction_depot/extraction_depot_extraction_extraction_depot.json b/src/module_extraction/module/forms/extraction_depot/extraction_depot_extraction_extraction_depot.json deleted file mode 100755 index 6a36d947ec8e590d2577149e2020be105b55b46a..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/forms/extraction_depot/extraction_depot_extraction_extraction_depot.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "search": { - "name": "extraction_deposit_directory_update_form", - "title": "EXTRACTION_DEPOT_TITLE", - "beforeEvent": "beforeDepositDirectory()", - "event": "sendSimpleForm()", - "afterEvent": "afterDepositDirectory()", - "input_size": "xs", - "nb_cols": 12, - "class": "project-directory-upload-form", - "javascript": true, - "rows": [ - { - "fields": [ - { - "type": "treeview", - "name": "FileTreeView", - "label": "", - "required": false, - "pattern": "", - "nb_cols": 12, - "id": "Element_0_2_1", - "options": { - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true, - "data": "", - "dataLoadingEvent": "" - } - } - ] - }, - { - "fields": [ - { - "type": "button", - "class": "btn-ungroup btn-group-xs", - "name": "group-button", - "nb_cols": 12, - "buttons": [ - { - "type": "button", - "name": "btn_download_file", - "glyphicon": "download", - "class": "btn-primary btn-xs", - "event": "downloadFileDepot()", - "tooltip": { - "title": "FORM_DOWNLOAD_FILE_PUBLICATION_WORKSPACE_LOAD_PROJECT_DIRECTORY", - "placement": "bottom", - "trigger": "hover", - "container": "body" - } - }, - { - "type": "button", - "name": "btn_refresh_treeview", - "glyphicon": "refresh", - "class": "btn-primary btn-xs", - "event": "loadTreeviewDepot()", - "tooltip": { - "title": "FORM_RELOAD_DIRECTORY_PUBLICATION_WORKSPACE_LOAD_PROJECT_DIRECTORY", - "placement": "bottom", - "trigger": "hover", - "container": "body" - } - }, - { - "type": "button", - "name": "btn_delete_file", - "glyphicon": "trash", - "class": "btn-primary btn-xs", - "event": "deleteFileDepot()", - "tooltip": { - "title": "FORM_DELETE_FILE_PUBLICATION_WORKSPACE_LOAD_PROJECT_DIRECTORY", - "placement": "bottom", - "trigger": "hover" - } - } - ], - "id": "undefined_1_1" - } - ] - }, - { - "class": "form-field-inline", - "fields": [ - { - "type": "upload", - "name": "control_file", - "label": "EXTRACTION_DEPOT_FILE_UPLOAD", - "nb_cols": 6, - "id": "fmw_file_2_1" - } - ] - }, - { - "fields": [ - { - "type": "button", - "name": "Element_0", - "nb_cols": 12, - "id": "Element_0_5_1", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "EXTRACTION_DEPOT_FILE_UPDATE", - "class": "btn-primary" - } - ] - } - ] - } - ], - "tabs": { - "position": "top", - "list": [ - { - "label": "Tab 0", - "elements": [ - "btn_download_file", - "btn_refresh_treeview", - "btn_delete_file", - "control_file", - "btn_upload_fmw_file", - "FileTreeView", - "Element_0" - ] - } - ] - } - }, - "update": { - "name": "extraction_deposit_directory_update_form", - "title": "EXTRACTION_DEPOT_TITLE", - "beforeEvent": "beforeProjectDirectory()", - "event": "sendSimpleForm()", - "afterEvent": "afterProjectDirectory()", - "input_size": "xs", - "nb_cols": 12, - "class": "project-directory-upload-form", - "rows": [ - { - "fields": [ - { - "type": "treeview", - "name": "FileTreeView", - "label": "", - "required": false, - "pattern": "", - "nb_cols": 12, - "id": "Element_0_2_1", - "options": { - "showBorder": false, - "levels": 0, - "showCheckbox": true, - "expandIcon": "glyphicon glyphicon-folder-close", - "collapseIcon": "glyphicon glyphicon-folder-open", - "highlightSelected": false, - "multiSelect": true, - "data": "", - "dataLoadingEvent": "" - } - } - ] - }, - { - "fields": [ - { - "type": "button", - "class": "btn-ungroup btn-group-xs", - "name": "group-button", - "nb_cols": 12, - "buttons": [ - { - "type": "button", - "name": "btn_download_file", - "glyphicon": "download", - "class": "btn-primary btn-xs", - "event": "downloadFile()", - "tooltip": { - "title": "FORM_DOWNLOAD_FILE_PUBLICATION_WORKSPACE_LOAD_PROJECT_DIRECTORY", - "placement": "bottom", - "trigger": "hover", - "container": "body" - } - }, - { - "type": "button", - "name": "btn_refresh_treeview", - "glyphicon": "refresh", - "class": "btn-primary btn-xs", - "event": "loadTreeviewDepot()", - "tooltip": { - "title": "FORM_RELOAD_DIRECTORY_PUBLICATION_WORKSPACE_LOAD_PROJECT_DIRECTORY", - "placement": "bottom", - "trigger": "hover", - "container": "body" - } - }, - { - "type": "button", - "name": "btn_delete_file", - "glyphicon": "trash", - "class": "btn-primary btn-xs", - "event": "deleteFile()", - "tooltip": { - "title": "FORM_DELETE_FILE_PUBLICATION_WORKSPACE_LOAD_PROJECT_DIRECTORY", - "placement": "bottom", - "trigger": "hover" - } - } - ], - "id": "undefined_1_1" - } - ] - }, - { - "class": "form-field-inline", - "fields": [ - { - "type": "upload", - "name": "control_file", - "label": "EXTRACTION_DEPOT_FILE_UPLOAD", - "nb_cols": 6, - "id": "fmw_file_2_1" - } - ] - }, - { - "fields": [ - { - "type": "button", - "name": "Element_0", - "nb_cols": 12, - "id": "Element_0_5_1", - "class": "btn-ungroup btn-group-sm", - "buttons": [ - { - "type": "submit", - "name": "form_submit", - "label": "FORM_UPLOAD_FILE_DEPOSIT", - "class": "btn-primary" - } - ] - } - ] - } - ], - "tabs": { - "position": "top", - "list": [ - { - "label": "Tab 0", - "elements": [ - "btn_download_file", - "btn_refresh_treeview", - "btn_delete_file", - "control_file", - "btn_upload_fmw_file", - "FileTreeView", - "Element_0" - ] - } - ] - } - }, - "insert": {}, - "display": { - "name": "gtf_workspace_project_directory_display_form", - "title": "EXTRACTION_DEPOT_TITLE", - "input_size": "xs", - "nb_cols": 8, - "rows": [], - "tabs": { - "position": "top", - "list": [ - { - "label": "Tab 0", - "elements": [] - } - ] - } - }, - "datasources": {} -} \ No newline at end of file diff --git a/src/module_extraction/module/forms/extraction_ref/extraction_ref_extraction_coordsys.json b/src/module_extraction/module/forms/extraction_ref/extraction_ref_extraction_coordsys.json deleted file mode 100755 index 5aa5221df726feb7afc0c8c75288d33a75631585..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/forms/extraction_ref/extraction_ref_extraction_coordsys.json +++ /dev/null @@ -1,240 +0,0 @@ -{ - "display":{ - "name":"extraction_ref_extraction_coordsys-form", - "title":"EXTRACTION_REF_EXTRACTION_COORDSYS_TITLE", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"label", - "name":"coordsys_id", - "label":"EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS_ID", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"label", - "name":"coordsys", - "label":"EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-sm", - "nb_cols":12, - "name":"display_button", - "id":"display_button", - "buttons":[ - { - "type":"button", - "name":"return_list", - "label":"FORM_RETURN_LIST", - "class":"btn-primary", - "event":"setMode(\"search\")" - } - ] - } - ] - } - ] - }, - "search":{ - "name":"extraction_ref_extraction_coordsys-form", - "title":"EXTRACTION_REF_EXTRACTION_COORDSYS_TITLE", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"text", - "name":"coordsys", - "label":"EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS", - "disabled":false, - "required":false, - "nb_cols":4 - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-xs", - "nb_cols":12, - "name":"search_button", - "id":"search_button", - "buttons":[ - { - "type":"button", - "name":"search", - "label":"FORM_SEARCH_BUTTON", - "class":"btn-primary", - "event":"setGridFilter()" - }, - { - "type":"reset", - "name":"reset", - "label":"FORM_RESET_BUTTON", - "class":"btn-primary", - "event":"resetGridFilter()" - } - ] - } - ] - } - ] - }, - "insert":{ - "name":"extraction_ref_extraction_coordsys-form", - "title":"EXTRACTION_REF_EXTRACTION_COORDSYS_TITLE_INSERT", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"text", - "name":"coordsys_id", - "label":"EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS_ID", - "disabled":false, - "required":true, - "nb_cols":12, - "id":"coordsys_id_1_1" - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"coordsys", - "label":"EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS", - "disabled":false, - "required":false, - "nb_cols":12, - "id":"coordsys_2_1" - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-sm", - "nb_cols":12, - "name":"insert_button", - "id":"insert_button", - "buttons":[ - { - "type":"submit", - "name":"form_submit", - "label":"FORM_CREATE", - "class":"btn-primary" - }, - { - "type":"button", - "name":"return_list", - "label":"FORM_RETURN_LIST", - "class":"btn-primary", - "event":"setMode(\"search\")" - } - ] - } - ] - } - ], - "event":"sendSimpleForm()", - "afterEvent":"editSectionForm()", - "tabs":{ - "position":"top", - "list":[ - { - "label":"Tab 0", - "elements":[ - "coordsys_id", - "coordsys", - "insert_button" - ] - } - ] - } - }, - "update":{ - "name":"extraction_ref_extraction_coordsys-form", - "title":"EXTRACTION_REF_EXTRACTION_COORDSYS_TITLE", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"text", - "name":"coordsys_id", - "label":"EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS_ID", - "disabled":false, - "required":true, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"coordsys", - "label":"EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-sm", - "nb_cols":12, - "name":"update_button", - "id":"update_button", - "buttons":[ - { - "type":"submit", - "name":"form_submit", - "label":"FORM_UPDATE", - "class":"btn-primary" - }, - { - "type":"button", - "name":"return_list", - "label":"FORM_RETURN_LIST", - "class":"btn-primary", - "event":"setMode(\"search\")" - } - ] - } - ] - } - ], - "event":"sendSimpleForm()", - "afterEvent":"editSectionForm()" - } -} \ No newline at end of file diff --git a/src/module_extraction/module/forms/extraction_ref/extraction_ref_extraction_format.json b/src/module_extraction/module/forms/extraction_ref/extraction_ref_extraction_format.json deleted file mode 100755 index 115f79f1a2f83c0ddb5d0dcba014275b6f057f5d..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/forms/extraction_ref/extraction_ref_extraction_format.json +++ /dev/null @@ -1,393 +0,0 @@ -{ - "display":{ - "name":"extraction_ref_extraction_format-form", - "title":"EXTRACTION_REF_EXTRACTION_FORMAT_TITLE", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"label", - "name":"format_id", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT_ID", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"label", - "name":"format", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"label", - "options":{ - "choices":[ - { - "label":"oui", - "value":true - }, - { - "label":"non", - "value":false - } - ] - }, - "name":"use_for_raster", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_RASTER", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"label", - "options":{ - "choices":[ - { - "label":"oui", - "value":true - }, - { - "label":"non", - "value":false - } - ] - }, - "name":"use_for_vector", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_VECTOR", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-sm", - "nb_cols":12, - "name":"display_button", - "id":"display_button", - "buttons":[ - { - "type":"button", - "name":"return_list", - "label":"FORM_RETURN_LIST", - "class":"btn-primary", - "event":"setMode(\"search\")" - } - ] - } - ] - } - ] - }, - "search":{ - "name":"extraction_ref_extraction_format-form", - "title":"EXTRACTION_REF_EXTRACTION_FORMAT_TITLE", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"text", - "name":"format", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT", - "disabled":false, - "required":false, - "nb_cols":4, - "id":"format_2_1" - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-xs", - "nb_cols":12, - "name":"search_button", - "id":"search_button", - "buttons":[ - { - "type":"button", - "name":"search", - "label":"FORM_SEARCH_BUTTON", - "class":"btn-primary", - "event":"setGridFilter()" - }, - { - "type":"reset", - "name":"reset", - "label":"FORM_RESET_BUTTON", - "class":"btn-primary", - "event":"resetGridFilter()" - } - ] - } - ] - } - ] - }, - "insert":{ - "name":"extraction_ref_extraction_format-form", - "title":"EXTRACTION_REF_EXTRACTION_FORMAT_TITLE_INSERT", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"text", - "name":"format_id", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT_ID", - "disabled":false, - "required":true, - "nb_cols":12, - "id":"format_id_1_1" - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"format", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT", - "disabled":false, - "required":false, - "nb_cols":12, - "id":"format_2_1" - } - ] - }, - { - "fields":[ - { - "type":"radio", - "options":{ - "choices":[ - { - "label":"oui", - "value":true, - "$$hashKey":"object:1221" - }, - { - "label":"non", - "value":false, - "$$hashKey":"object:1222" - } - ] - }, - "name":"use_for_raster", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_RASTER", - "disabled":false, - "required":false, - "nb_cols":12, - "id":"use_for_raster_3_1" - } - ] - }, - { - "fields":[ - { - "type":"radio", - "options":{ - "choices":[ - { - "label":"oui", - "value":true, - "$$hashKey":"object:1234" - }, - { - "label":"non", - "value":false, - "$$hashKey":"object:1235" - } - ] - }, - "name":"use_for_vector", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_VECTOR", - "disabled":false, - "required":false, - "nb_cols":12, - "id":"use_for_vector_4_1" - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-sm", - "nb_cols":12, - "name":"insert_button", - "id":"insert_button", - "buttons":[ - { - "type":"submit", - "name":"form_submit", - "label":"FORM_CREATE", - "class":"btn-primary" - }, - { - "type":"button", - "name":"return_list", - "label":"FORM_RETURN_LIST", - "class":"btn-primary", - "event":"setMode(\"search\")" - } - ] - } - ] - } - ], - "event":"sendSimpleForm()", - "afterEvent":"editSectionForm()", - "tabs":{ - "position":"top", - "list":[ - { - "label":"Tab 0", - "elements":[ - "format_id", - "format", - "use_for_raster", - "use_for_vector", - "insert_button" - ] - } - ] - } - }, - "update":{ - "name":"extraction_ref_extraction_format-form", - "title":"EXTRACTION_REF_EXTRACTION_FORMAT_TITLE", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"text", - "name":"format_id", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT_ID", - "disabled":false, - "required":true, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"format", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"radio", - "options":{ - "choices":[ - { - "label":"oui", - "value":true - }, - { - "label":"non", - "value":false - } - ] - }, - "name":"use_for_raster", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_RASTER", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"radio", - "options":{ - "choices":[ - { - "label":"oui", - "value":true - }, - { - "label":"non", - "value":false - } - ] - }, - "name":"use_for_vector", - "label":"EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_VECTOR", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-sm", - "nb_cols":12, - "name":"update_button", - "id":"update_button", - "buttons":[ - { - "type":"submit", - "name":"form_submit", - "label":"FORM_UPDATE", - "class":"btn-primary" - }, - { - "type":"button", - "name":"return_list", - "label":"FORM_RETURN_LIST", - "class":"btn-primary", - "event":"setMode(\"search\")" - } - ] - } - ] - } - ], - "event":"sendSimpleForm()", - "afterEvent":"editSectionForm()" - } -} \ No newline at end of file diff --git a/src/module_extraction/module/forms/extraction_ref/extraction_ref_extraction_layer.json b/src/module_extraction/module/forms/extraction_ref/extraction_ref_extraction_layer.json deleted file mode 100755 index 0a47f292c15a1c2a35c13876c06025118848f201..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/forms/extraction_ref/extraction_ref_extraction_layer.json +++ /dev/null @@ -1,355 +0,0 @@ -{ - "display":{ - "name":"extraction_ref_extraction_layer-form", - "title":"EXTRACTION_REF_EXTRACTION_LAYER_TITLE", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"label", - "name":"layer_id", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER_ID", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"label", - "name":"layer", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"label", - "name":"category", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_CATEGORY", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"label", - "name":"restriction", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_RESTRICTION", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"label", - "name":"unused_attributes", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_UNUSED_ATTRIBUTES", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-sm", - "nb_cols":12, - "name":"display_button", - "id":"display_button", - "buttons":[ - { - "type":"button", - "name":"return_list", - "label":"FORM_RETURN_LIST", - "class":"btn-primary", - "event":"setMode(\"search\")" - } - ] - } - ] - } - ] - }, - "search":{ - "name":"extraction_ref_extraction_layer-form", - "title":"EXTRACTION_REF_EXTRACTION_LAYER_TITLE", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"text", - "name":"layer", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER", - "disabled":false, - "required":false, - "nb_cols":4, - "id":"layer_2_1" - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-xs", - "nb_cols":12, - "name":"search_button", - "id":"search_button", - "buttons":[ - { - "type":"button", - "name":"search", - "label":"FORM_SEARCH_BUTTON", - "class":"btn-primary", - "event":"setGridFilter()" - }, - { - "type":"reset", - "name":"reset", - "label":"FORM_RESET_BUTTON", - "class":"btn-primary", - "event":"resetGridFilter()" - } - ] - } - ] - } - ] - }, - "insert":{ - "name":"extraction_ref_extraction_layer-form", - "title":"EXTRACTION_REF_EXTRACTION_LAYER_TITLE_INSERT", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"text", - "name":"layer_id", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER_ID", - "disabled":false, - "required":true, - "nb_cols":12, - "id":"layer_id_1_1" - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"layer", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER", - "disabled":false, - "required":false, - "nb_cols":12, - "id":"layer_2_1" - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"category", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_CATEGORY", - "disabled":false, - "required":false, - "nb_cols":12, - "id":"category_3_1" - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"restriction", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_RESTRICTION", - "disabled":false, - "required":false, - "nb_cols":12, - "id":"restriction_4_1" - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"unused_attributes", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_UNUSED_ATTRIBUTES", - "disabled":false, - "required":false, - "nb_cols":12, - "id":"unused_attributes_5_1" - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-sm", - "nb_cols":12, - "name":"insert_button", - "id":"insert_button", - "buttons":[ - { - "type":"submit", - "name":"form_submit", - "label":"FORM_CREATE", - "class":"btn-primary" - }, - { - "type":"button", - "name":"return_list", - "label":"FORM_RETURN_LIST", - "class":"btn-primary", - "event":"setMode(\"search\")" - } - ] - } - ] - } - ], - "event":"sendSimpleForm()", - "afterEvent":"editSectionForm()", - "tabs":{ - "position":"top", - "list":[ - { - "label":"Tab 0", - "elements":[ - "layer_id", - "layer", - "category", - "restriction", - "unused_attributes", - "insert_button" - ] - } - ] - } - }, - "update":{ - "name":"extraction_ref_extraction_layer-form", - "title":"EXTRACTION_REF_EXTRACTION_LAYER_TITLE", - "input_size":"xxs", - "nb_cols":12, - "javascript":false, - "rows":[ - { - "fields":[ - { - "type":"text", - "name":"layer_id", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER_ID", - "disabled":false, - "required":true, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"layer", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"category", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_CATEGORY", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"restriction", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_RESTRICTION", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"text", - "name":"unused_attributes", - "label":"EXTRACTION_REF_EXTRACTION_LAYER_FORM_UNUSED_ATTRIBUTES", - "disabled":false, - "required":false, - "nb_cols":12 - } - ] - }, - { - "fields":[ - { - "type":"button", - "class":"btn-ungroup btn-group-sm", - "nb_cols":12, - "name":"update_button", - "id":"update_button", - "buttons":[ - { - "type":"submit", - "name":"form_submit", - "label":"FORM_UPDATE", - "class":"btn-primary" - }, - { - "type":"button", - "name":"return_list", - "label":"FORM_RETURN_LIST", - "class":"btn-primary", - "event":"setMode(\"search\")" - } - ] - } - ] - } - ], - "event":"sendSimpleForm()", - "afterEvent":"editSectionForm()" - } -} \ No newline at end of file diff --git a/src/module_extraction/module/forms/login/sign_up.json b/src/module_extraction/module/forms/login/sign_up.json deleted file mode 100755 index cc5bc1e559d8233dcbc5c1f679e74a23ba834094..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/forms/login/sign_up.json +++ /dev/null @@ -1,230 +0,0 @@ -{ - "search": { - "name": "login_form", - "input_size": "xs", - "event": "sendInscriptionRequest()", - "rows": [ - { - "fields": [ - { - "type": "text", - "name": "username", - "label": "SIGNUPUSERNAME", - "required": true, - "pattern": "^([a-zA-Z_0-9])+", - "nb_cols": 12, - "id": "Element_0_2_1" - } - ] - }, - { - "fields": [ - { - "type": "password", - "name": "password", - "label": "SIGNUPPASSWORD", - "required": true, - "pattern": "", - "nb_cols": 12, - "id": "Element_0_4_1" - } - ] - }, - { - "fields": [ - { - "type": "password", - "name": "signuppasswordconfirmation", - "label": "SIGNUPPASSWORDCONFIRMATION", - "required": true, - "pattern": "", - "nb_cols": 12, - "id": "Element_0_4_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "company", - "label": "SIGNUPORGANIZATION", - "required": true, - "pattern": "", - "nb_cols": 12, - "id": "Element_3_4_1", - "id_from": "Element_3_4_1_from" - } - ] - }, - { - "fields": [ - { - "type": "email", - "name": "mail", - "label": "SIGNUPMAIL", - "required": true, - "pattern": "^(([a-zA-Z]|[0-9])|([-]|[_]|[.]))+[@](([a-zA-Z]|[0-9])|([-]|[_]|[.])){2,63}[.](([a-zA-Z0-9]){2,63})+$", - "nb_cols": 12, - "id": "Element_2_3_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "phone", - "label": "SIGN_UP_PHONE", - "required": false, - "pattern": "^(\\+[0-9]{1,3})?([0-9]{8,15})$", - "nb_cols": 12, - "id": "Element_0_5_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "public_ip", - "label": "SIGN_UP_PUBLIC_IP", - "required": false, - "pattern": "^([0-9]{3}.[0-9]{3}.[0-9]{3})((/[0-9]+)?)$", - "nb_cols": 12, - "id": "Element_0_6_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "demandeur", - "label": "SIGN_UP_DEMANDEUR", - "required": false, - "pattern": "", - "nb_cols": 12, - "id": "Element_0_8_1" - } - ] - }, - { - "fields": [ - { - "type": "email", - "name": "mail_demandeur", - "label": "SIGN_UP_MAIL_DEMANDEUR", - "required": false, - "pattern": "^(([a-zA-Z]|[0-9])|([-]|[_]|[.]))+[@](([a-zA-Z]|[0-9])|([-]|[_]|[.])){2,63}[.](([a-zA-Z0-9]){2,63})+$", - "nb_cols": 12, - "id": "Element_0_9_1" - } - ] - }, - { - "fields": [ - { - "type": "text", - "name": "study_object", - "label": "SIGN_UP_STUDY_OBJECT", - "required": false, - "pattern": "", - "nb_cols": 12, - "id": "Element_0_7_1" - } - ] - }, - { - "fields": [ - { - "type": "date", - "name": "start_date", - "label": "SIGN_UP_START_DATE", - "nb_cols": 6, - "id": "Element_0_10_1" - }, - { - "type": "date", - "name": "end_date", - "label": "SIGN_UP_END_DATE", - "nb_cols": 6, - "id": "Element_0_10_1" - } - ] - }, - { - "fields": [ - { - "type": "checkbox", - "name": "signupcgu", - "label": "ACCEPT_CGU", - "required": true, - "nb_cols": 12, - "id": "Element_5_5_1" - } - ] - }, - { - "fields": [ - { - "type": "captcha", - "nb_cols": 12, - "name": "captcha", - "class": "center", - "id": "captcha", - "key": "6LdWLR8UAAAAAExA8zTXKFIsIwhacAJw1tdpuFw1" - } - ] - }, - { - "fields": [ - { - "type": "button", - "name": "btn_signup", - "nb_cols": 12, - "id": "Element_42_5_1", - "class": "btn-ungroup btn-group-sm login-connect-btn", - "buttons": [ - { - "type": "submit", - "name": "form_signup", - "label": "SIGNUP_BUTTON", - "class": "btn-primary" - } - ] - } - ] - } - ], - "tabs": { - "position": "top", - "list": [ - { - "label": "Tab 0", - "elements": [ - "username", - "password", - "signuppasswordconfirmation", - "mail", - "company", - "signupcgu", - "captcha", - "btn_signup", - "phone", - "public_ip", - "study_object", - "end_date", - "start_date", - "demandeur", - "mail_demandeur" - ] - } - ] - } - }, - "update": {}, - "insert": {}, - "display": {}, - "datasources": {} -} \ No newline at end of file diff --git a/src/module_extraction/module/javascript/script_module.js b/src/module_extraction/module/javascript/script_module.js deleted file mode 100755 index db7ca4c3c78f80cf00ae18e3f5255f805a0246e2..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/javascript/script_module.js +++ /dev/null @@ -1,412 +0,0 @@ -/* global vitisApp, goog, angular, bootbox, oVFB */ - -'use strict'; -goog.provide('extraction.script_module'); -vitisApp.on('appMainDrtvLoaded', function () { - /** - * setWabStatusMethod function. - * Définition de la méthode de transition. - * @param {string} sMethodName Nom de la méthode wab. - **/ - angular.element(vitisApp.appMainDrtv).scope()["setWabStatusMethod"] = function (sMethodName) { - // Injection des services. - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - //var $rootScope = angular.element(vitisApp.appMainDrtv).injector().get(["$rootScope"]); - var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["envSrvc"]); - // - $log.info("setWabStatusMethod", sMethodName); - envSrvc["oFormValues"][envSrvc["sFormDefinitionName"]]["tr_status_method"] = sMethodName; - // Envoi le formulaire. - if (envSrvc["sMode"] != "display") { - var sFormElementName = envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"]; - var formScope = angular.element("form[name='" + sFormElementName + "']").scope(); - if (envSrvc["sMode"] == "update") - formScope["sendForm"](); - } - }; - - /** - * loadExtractionConfig function. - * Chargement de la section "Configuration EXTRACTION" dans l''''onglet "Configuration". - * @expose - */ - angular.element(vitisApp.appMainDrtv).scope()["loadExtractionConfig"] = function () { - // Injection des services. - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - var envSrvc = angular.element(vitisApp.appWorkspaceListDrtv).injector().get(["envSrvc"]); - // - $log.info("loadExtractionConfig"); - // Paramètres des properties dans les valeurs du formulaire de config de Extraction. - angular.element(vitisApp.appMainDrtv).scope()["setPropertiesFormValues"](); - // Surcharge l''''url du formulaire des properties de Extraction. - var scope = this; - var sTable = envSrvc["oSelectedObject"]["name"]; - scope["oFormRequestParams"] = { - "sUrl": "modules/extraction/forms/" + envSrvc["oSelectedMode"]["mode_id"] + "/" + sTable + "_" + envSrvc["oSectionForm"][sTable]["sections"][envSrvc["oSectionForm"][sTable]["iSelectedSectionIndex"]]["name"] + ".json" - }; - }; - - /** - * initExtractionExtractionForm function. - * Traitements avant l'affichage du formulaire de l'onglet "Extraction". - **/ - angular.element(vitisApp.appMainDrtv).scope()["initExtractionExtractionForm"] = function () { - // Injection des services. - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - var $rootScope = angular.element(vitisApp.appMainDrtv).injector().get(["$rootScope"]); - var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["envSrvc"]); - var formSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["formSrvc"]); - // - $log.info("initExtractionExtractionForm"); - var oFormValues = envSrvc["oFormValues"][envSrvc["sFormDefinitionName"]]; - var oElemDef; - // Affiche le champ de form. correspondant au type de méthode choisie. - var aExtentMethod = ["id_com", "id_conseil", "extent"]; - for (var i in aExtentMethod) { - var oElemDef = formSrvc["getFormElementDefinition"](aExtentMethod[i], envSrvc["sFormDefinitionName"], envSrvc["oFormDefinition"]); - if (oFormValues["extent_method"] == aExtentMethod[i]) - oElemDef["visible"] = true; - else - oElemDef["visible"] = false; - } - // Libellé des champs "Commune" et "Bassin de vie". - if (envSrvc["sMode"] == "display") { - oFormValues["id_com"] = oFormValues["id_com_label"]; - oFormValues["id_conseil"] = oFormValues["id_conseil_label"]; - } - // Attends la fin du chargement de tous les champs du formulaire. - var clearListener = $rootScope.$on('formExtracted', function (event, sFormDefinitionName) { - // Supprime le "listener". - clearListener(); - // Evènement sur le <select> "méthode choisie" : affiche le champ de form. correspondant au choix. - var oExtentMethod = formSrvc["getFormElementDefinition"]("extent_method", envSrvc["sFormDefinitionName"], envSrvc["oFormDefinition"]); - if (oExtentMethod["type"] == "select" && document.getElementById(oExtentMethod["id"]) != null) { - document.getElementById(oExtentMethod["id"]).addEventListener("change", function () { - for (var i in aExtentMethod) { - var oElemDef = formSrvc["getFormElementDefinition"](aExtentMethod[i], envSrvc["sFormDefinitionName"], envSrvc["oFormDefinition"]); - if (this.value == aExtentMethod[i]) - oElemDef["visible"] = true; - else - oElemDef["visible"] = false; - } - var formScope = angular.element("form[name='" + envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"]).scope(); - formScope.$apply(); - }); - } - }); - }; - - /** - * getExtractionLayersTree function. - * Retourne l'arborescence pour le champ treeview "layers". - **/ - angular.element(vitisApp.appMainDrtv).scope()["getExtractionLayersTree"] = function () { - // Injection des services. - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["envSrvc"]); - var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["propertiesSrvc"]); - var $q = angular.element(vitisApp.appHtmlFormDrtv).injector().get(["$q"]); - // - $log.info("getExtractionLayersTree"); - var deferred = $q.defer(); - var promise = deferred.promise; - // Charge la liste des couches. - ajaxRequest({ - "method": "GET", - "url": propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + "/extraction/extractions/Layers", - "scope": angular.element("form[name='" + envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"] + "']").scope(), - "success": function(response) { - if (response["data"]["status"] == 1) { - // Création de l'arborescence des couches pour le champ "treeview". - var aLayers = response["data"]["layers"]; - var aNodes = []; - var stats = true; - if (typeof(aLayers) != "undefined") { - var aCategories = Object.keys(aLayers); - for (var i in aCategories) { - var aNode = {"text": aCategories[i], "nodes": []} - for (var j in aLayers[aCategories[i]]) { - if (aLayers[aCategories[i]][j]["statistique"] !== true) - { - stats = false; - aNode["nodes"].push({"text": aLayers[aCategories[i]][j]["text"], "value": aLayers[aCategories[i]][j]["value"], "mutualized": aLayers[aCategories[i]][j]["mutualized"]}); - } - } - if (stats !== true) - { - aNodes.push(aNode); - } - stats = true; - } - } - - this["setTreeviewNodesState"] = function (aNodes) { - for (var i in aNodes) { - if (typeof (aNodes[i]["nodes"]) != "undefined") - { - this["setTreeviewNodesState"](aNodes[i]["nodes"]); - } - else { - //Si la couche est mutualisée - if (aNodes[i]['mutualized'] == true) - { - aNodes[i]["color"] = propertiesSrvc["color_mutualized"]; - } else if (aNodes[i]['mutualized'] == false) { - aNodes[i]["color"] = propertiesSrvc["color_no_mutualized"]; - } - } - } - } - this["setTreeviewNodesState"](aNodes); - - deferred.resolve(aNodes); - } else { - // - var oOptions = { - "className": "modal-danger" - }; - // Message d'erreur ? - if (response["data"]["errorMessage"] != null) - oOptions["message"] = response["data"]["errorMessage"]; - scope.$root["modalWindow"]("alert", "REQUEST_ERROR", oOptions); - } - } - }); - return promise; - }; - - - /** - * getExtractionLayersTree function. - * Retourne l'arborescence pour le champ treeview "layers". - **/ - angular.element(vitisApp.appMainDrtv).scope()["getExtractionStatsTree"] = function () { - // Injection des services. - var $log = angular.element(vitisApp.appMainDrtv).injector().get(["$log"]); - var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["envSrvc"]); - var propertiesSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["propertiesSrvc"]); - var $q = angular.element(vitisApp.appHtmlFormDrtv).injector().get(["$q"]); - // - $log.info("getExtractionStatsTree"); - var deferred = $q.defer(); - var promise = deferred.promise; - // Charge la liste des couches. - ajaxRequest({ - "method": "GET", - "url": propertiesSrvc["web_server_name"] + "/" + propertiesSrvc["services_alias"] + "/extraction/extractions/Layers", - "scope": angular.element("form[name='" + envSrvc["oFormDefinition"][envSrvc["sFormDefinitionName"]]["name"] + "']").scope(), - "success": function(response) { - if (response["data"]["status"] == 1) { - // Création de l'arborescence des couches pour le champ "treeview". - var aLayers = response["data"]["layers"]; - var aNodes = []; - var stats = false; - if (typeof(aLayers) != "undefined") { - var aCategories = Object.keys(aLayers); - for (var i in aCategories) { - var aNode = {"text": aCategories[i], "nodes": []} - for (var j in aLayers[aCategories[i]]) { - if (aLayers[aCategories[i]][j]["statistique"] === true) - { - stats = true; - aNode["nodes"].push({"text": aLayers[aCategories[i]][j]["text"], "value": aLayers[aCategories[i]][j]["value"], "mutualized": aLayers[aCategories[i]][j]["mutualized"]}); - } - } - if (stats === true) - { - aNodes.push(aNode); - } - stats = false; - } - } - - this["setTreeviewNodesState"] = function (aNodes) { - for (var i in aNodes) { - if (typeof (aNodes[i]["nodes"]) != "undefined") - { - this["setTreeviewNodesState"](aNodes[i]["nodes"]); - } - else { - //Si la couche est mutualisée - if (aNodes[i]['mutualized'] == true) - { - aNodes[i]["color"] = propertiesSrvc["color_mutualized"]; - } else if (aNodes[i]['mutualized'] == false) { - aNodes[i]["color"] = propertiesSrvc["color_no_mutualized"]; - } - } - } - } - this["setTreeviewNodesState"](aNodes); - - deferred.resolve(aNodes); - } else { - // - var oOptions = { - "className": "modal-danger" - }; - // Message d'erreur ? - if (response["data"]["errorMessage"] != null) - oOptions["message"] = response["data"]["errorMessage"]; - scope.$root["modalWindow"]("alert", "REQUEST_ERROR", oOptions); - } - } - }); - return promise; - }; - - /** - * appExtractionLayersColumn directive. - * Mise en forme de la colonne "layers" dans la liste de l'onglet "Extraction". - * @param {service} $translate Translate service. - * @ngInject - **/ - vitisApp.appExtractionLayersColumnDrtv = function ($translate) { - return { - link: function (scope, element, attrs) { - // 1er affichage ou tri de la liste : maj de la mise en forme. - var clearObserver = attrs.$observe("appExtractionLayersColumn", function (value) { - // Si le champ est vide : supprime l'icône. - if (scope["row"]["entity"][scope["col"]["field"]] == null || scope["row"]["entity"][scope["col"]["field"]] == "") - element[0].className = ""; - else { - // Classes css (ui-grid + spécifiques). - element[0].className = "ui-grid-cell-contents info-icon"; - // Traduction du titre et du contenu. - $translate(["EXTRACTION_REF_EXTRACTION_LAYER_LAYERS_TOOLTIP_TITLE"]).then(function (translations) { - // Création du "tooltip". - $(element)["popover"]({ - "trigger": "hover", - "container": "body", - "title": function () { - return translations["EXTRACTION_REF_EXTRACTION_LAYER_LAYERS_TOOLTIP_TITLE"]; - }, - "content": function () { - var sValue = scope["row"]["entity"][scope["col"]["field"]]; - return sValue.replace(/\|/g, "<br>"); - }, - // Placement du tooltip à gauche ou à droite suivant la position horizontale de l'élément. - "placement": function (oPopoverNode, oElementNode) { - return scope.$root["workspaceTooltipPlacement"](oElementNode); - }, - "html": true - }); - }); - } - }); - // Attends la suppression du scope. - scope.$on("$destroy", function () { - // Supprime le tooltip. - $(element)["popover"]("destroy"); - // Supprime l'observateur. - clearObserver(); - }); - } - } - }; - vitisApp["compileProvider"].directive('appExtractionLayersColumn', vitisApp.appExtractionLayersColumnDrtv); - - /** - * appExtractionRefUnusedAttributesColumn directive. - * Mise en forme de la colonne "unused_attributes" dans la liste de l'onglet "Extraction". - * @param {service} $translate Translate service. - * @ngInject - **/ - vitisApp.appExtractionRefUnusedAttributesColumnDrtv = function ($translate) { - return { - link: function (scope, element, attrs) { - // 1er affichage ou tri de la liste : maj de la mise en forme. - var clearObserver = attrs.$observe("appExtractionRefUnusedAttributesColumn", function (value) { - // Si le champ est vide : supprime l'icône. - if (scope["row"]["entity"][scope["col"]["field"]] == null || scope["row"]["entity"][scope["col"]["field"]] == "") - element[0].className = ""; - else { - // Classes css (ui-grid + spécifiques). - element[0].className = "ui-grid-cell-contents info-icon"; - // Traduction du titre et du contenu. - $translate(["EXTRACTION_REF_EXTRACTION_LAYER_UNUSED_ATTRIBUTES_TOOLTIP_TITLE"]).then(function (translations) { - // Création du "tooltip". - $(element)["popover"]({ - "trigger": "hover", - "container": "body", - "title": function () { - return translations["EXTRACTION_REF_EXTRACTION_LAYER_UNUSED_ATTRIBUTES_TOOLTIP_TITLE"]; - }, - "content": function () { - var sValue = scope["row"]["entity"][scope["col"]["field"]]; - return sValue.replace(/;/g, "<br>"); - }, - // Placement du tooltip à gauche ou à droite suivant la position horizontale de l'élément. - "placement": function (oPopoverNode, oElementNode) { - return scope.$root["workspaceTooltipPlacement"](oElementNode); - }, - "html": true - }); - }); - } - }); - // Attends la suppression du scope. - scope.$on("$destroy", function () { - // Supprime le tooltip. - $(element)["popover"]("destroy"); - // Supprime l'observateur. - clearObserver(); - }); - } - } - }; - vitisApp["compileProvider"].directive('appExtractionRefUnusedAttributesColumn', vitisApp.appExtractionRefUnusedAttributesColumnDrtv); - - angular.element(vitisApp.appMainDrtv).scope()["showModalSignUp"] = function () { - $("#modal_sign_up").modal('open'); - - var oFormValues = {}; - oFormValues["search"] = {}; - ajaxRequest({ - 'method': 'GET', - 'url': propertiesSrvc["web_server_name"] + '/' + propertiesSrvc["application"] + "/modules/extraction/forms/sign_up.json", - 'success': function (response) { - hideAjaxLoader(); - - var oFormReaderScope = angular.element($("#modal_sign_up_form_container").children()).scope(); - oFormReaderScope.$evalAsync(function () { - oFormReaderScope['ctrl']['setDefinitionName']("search"); - oFormReaderScope['ctrl']['setFormValues'](oFormValues); - oFormReaderScope['ctrl']['setFormDefinition'](response["data"]); - oFormReaderScope['ctrl']['loadForm'](); - }); - - $this.$timeout_(function () { - //Materialize.updateTextFields(); - $(".checkbox").removeClass("checkbox checkbox-margin"); - - //$this.cssSelectFormDefinitionListener(oFormReaderScope); - }, 100); - }, - 'error': function (response) { - hideAjaxLoader(); - console.error("ERROR"); - } - }); - }; -}); - -vitisApp.on('appInitCtrlLoaded', function () { - var $rootScope = angular.element(vitisApp.appMainDrtv).injector().get(["$rootScope"]); - var envSrvc = angular.element(vitisApp.appMainDrtv).injector().get(["envSrvc"]); - var $translatePartialLoader = angular.element(vitisApp.appMainDrtv).injector().get(["$translatePartialLoader"]); - var $translate = angular.element(vitisApp.appMainDrtv).injector().get(["$translate"]); - // Chargement du template de login et des formulaires spécifiques à Extraction. - //envSrvc["sLoginTemplate"] = "modules/calimap/templates/loginTpl.html"; - //envSrvc["sLoginForm"] = "modules/extraction/forms/extraction/login.json"; - //envSrvc["sForgottenPasswordForm"] = "modules/calimap/forms/login/forgotten_password.json"; - envSrvc["sSignUpForm"] = "modules/extraction/forms/login/sign_up.json"; - // Chargement du fichier less pour le login. - //loadExternalCss(["modules/calimap/less/login.less"]); - // Chargement des fichiers de langues du module. - var clearListener = $rootScope.$on('endFormNgRepeat', function (event) { - clearListener(); - $translatePartialLoader["addPart"]("modules/extraction/lang"); - $translate["refresh"](); - }); -}); \ No newline at end of file diff --git a/src/module_extraction/module/lang/lang-en.json b/src/module_extraction/module/lang/lang-en.json deleted file mode 100755 index de3d253d26b49e3f25fd4bb66b0425d87bcb3a5c..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/lang/lang-en.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "TEXT_MODE_EXTRACTION" : "Gestion des extractions", - "TITLE_MODE_EXTRACTION" : "Extraction", - "TEXT_MODE_EXTRACTION_REF" : "Gestion références des extractions", - "TITLE_MODE_EXTRACTION_REF" : "extraction_ref", - "EXTRACTION_EXTRACTION_EXTRACTION_TITLE" : "Extraction", - "EXTRACTION_EXTRACTION_EXTRACTION_TITLE_INSERT" : "Extraction", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_BO_ID" : "Id métier", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_STATUS" : "Etat", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CREATION_DATE" : "Date de création", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_REQUESTOR" : "Demandeur", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_AE" : "Acte d'engagement", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT" : "Etendue", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMPANY" : "Organisme", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_LAYERS" : "Couches", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_STATISTIQUE" : "Données statistiques", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_VECTOR_FORMAT_ID" : "Format Vecteurs", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COORDSYS_ID" : "Système de coordonnées", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE" : "note", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE_LINE" : "note_line", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_RASTER_FORMAT_ID" : "Format Images", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT_METHOD" : "Méthode de saisie", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_SIGNED" : "Acte d'engagement signé", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ACCEPTED_BY_CPA" : "Validation de l'usage décrit pour les données", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_IDENTIFICATION_COMPLETE" : "Cadre d'identification complet", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_DEFINITION_COMPLETE" : "Définition des traitements non renseignée", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CREATE" : "Créer", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_REJECT_EXTRACTION" : "Refuser l'extraction", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_RELOAD_AE" : "Recharger l'acte d'engagement", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_SEND_AE" : "Soumettre l'AE", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_TERMINATE" : "Terminer", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ASK_AE" : "Demander l'AE", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_GENERATE_AE" : "Générer l'AE", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ALLOW_EXTRACTION" : "Autoriser l'extraction", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMMENT" : "Commentaires", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_PRIORITY_ID" : "Priorité", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_COM" : "Commune", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_CONSEIL" : "Conseil de Territoire", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_HISTORY" : "Historique", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_TECHNIQUE" : "Générer précaunisations techniques", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CARTOGRAPHIQUE" : "Générer charte cartographique", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_LISTE_TERRITOIRE" : "Liste des territoires", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_LISTE_COMMUNE" : "Liste des communes", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_FORMAT" : "Format", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ISOGEO" : "Générer métadonnées isogéo", - "EXTRACTION_REF_EXTRACTION_COORDSYS_TITLE" : "Système de coordonnées {{::coordsys_id}}", - "EXTRACTION_REF_EXTRACTION_COORDSYS_TITLE_INSERT" : "Système de coordonnées", - "EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS_ID" : "ID", - "EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS" : "Nom", - "EXTRACTION_REF_EXTRACTION_FORMAT_TITLE" : "Format {{::format_id}}", - "EXTRACTION_REF_EXTRACTION_FORMAT_TITLE_INSERT" : "Format", - "EXTRACTION_REF_EXTRACTION_FORMAT_SELECT" : "Sélectionner un format :", - "EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT_ID" : "ID", - "EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT" : "Nom", - "EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_RASTER" : "Raster", - "EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_VECTOR" : "Vecteur", - "EXTRACTION_REF_EXTRACTION_LAYER_TITLE" : "Couche {{::layer_id}}", - "EXTRACTION_REF_EXTRACTION_LAYER_TITLE_INSERT" : "Couche", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER_ID" : "ID", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER" : "Nom", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_CATEGORY" : "Catégorie", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_RESTRICTION" : "Restriction", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_UNUSED_ATTRIBUTES" : "Attributs inutilisés", - "EXTRACTION_REF_EXTRACTION_LAYER_LAYERS_TOOLTIP_TITLE" : "Couches", - "EXTRACTION_REF_EXTRACTION_LAYER_UNUSED_ATTRIBUTES_TOOLTIP_TITLE" : "Attributs inutilisés", - "CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_SCHEMA_EXTRACTION" : "", - "CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_COLOR_MUTUALIZED" : "", - "CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_COLOR_NO_MUTUALIZED" : "", - "TEXT_MODE_EXTRACTION_FORM" : "", - "TITLE_MODE_EXTRACTION_FORM" : "extraction_form", - "SIGN_UP_END_DATE" : "Date de fin de contrat", - "SIGN_UP_START_DATE" : "Date de début de contrat", - "SIGN_UP_STUDY_OBJECT" : "Objet de l'étude", - "SIGN_UP_PUBLIC_IP" : "IP publique fixe", - "SIGN_UP_PHONE" : "Téléphone", - "SIGN_UP_DEMANDEUR" : "Nom du demandeur", - "SIGN_UP_MAIL_DEMANDEUR" : "Adresse mail du demandeur", - "TEXT_MODE_EXTRACTION_DEPOT" : "", - "TITLE_MODE_EXTRACTION_DEPOT" : "extraction_depot", - "EXTRACTION_EXTRACTION_CP_TITLE_INSERT" : "Extraction", - "EXTRACTION_EXTRACTION_CP_FORM_TECHNIQUE" : "Générer précaunisations techniques", - "EXTRACTION_EXTRACTION_CP_FORM_CARTOGRAPHIQUE" : "Générer charte cartographique", - "EXTRACTION_EXTRACTION_CP_FORM_ISOGEO" : "Générer métadonnées isogéo", - "EXTRACTION_EXTRACTION_CP_FORM_COMPANY" : "Organisme", - "EXTRACTION_EXTRACTION_CP_FORM_EXTENT_METHOD" : "Méthode de saisie", - "EXTRACTION_EXTRACTION_CP_FORM_ID_COM" : "Commune", - "EXTRACTION_EXTRACTION_CP_FORM_ID_CONSEIL" : "Conseil de Territoire", - "EXTRACTION_EXTRACTION_CP_FORM_EXTENT" : "Etendue", - "EXTRACTION_EXTRACTION_CP_FORM_LAYERS" : "Couches", - "EXTRACTION_EXTRACTION_CP_FORM_STATISTIQUE" : "Données statistiques", - "EXTRACTION_EXTRACTION_CP_FORM_COORDSYS_ID" : "Système de coordonnées", - "EXTRACTION_EXTRACTION_CP_FORM_VECTOR_FORMAT_ID" : "Format Vecteurs", - "EXTRACTION_EXTRACTION_CP_FORM_RASTER_FORMAT_ID" : "Format Images", - "EXTRACTION_EXTRACTION_CP_FORM_STATUS" : "Etat", - "EXTRACTION_EXTRACTION_CP_FORM_HISTORY" : "Historique", - "EXTRACTION_EXTRACTION_CP_FORM_CREATION_DATE" : "Date de création", - "EXTRACTION_EXTRACTION_CP_FORM_REQUESTOR" : "Demandeur", - "EXTRACTION_EXTRACTION_CP_FORM_AE" : "Acte d'engagement", - "EXTRACTION_EXTRACTION_CP_FORM_NOTE" : "note", - "EXTRACTION_EXTRACTION_CP_FORM_NOTE_LINE" : "note_line", - "EXTRACTION_EXTRACTION_CP_FORM_SIGNED" : "Acte d'engagement signé", - "EXTRACTION_EXTRACTION_CP_FORM_ACCEPTED_BY_CPA" : "Validation de l'usage décrit pour les données", - "EXTRACTION_EXTRACTION_CP_FORM_IDENTIFICATION_COMPLETE" : "Cadre d'identification complet", - "EXTRACTION_EXTRACTION_CP_FORM_DEFINITION_COMPLETE" : "Définition des traitements non renseignée", - "EXTRACTION_EXTRACTION_CP_FORM_COMMENT" : "Commentaires", - "EXTRACTION_EXTRACTION_CP_FORM_PRIORITY_ID" : "Priorité", - "EXTRACTION_EXTRACTION_CP_TITLE" : "Extraction", - "EXTRACTION_EXTRACTION_CP_FORM_BO_ID" : "Id métier", - "EXTRACTION_DEPOT_EXTRACTION_EXTRACTION_DEPOT_TITLE" : "", - "EXTRACTION_DEPOT_EXTRACTION_EXTRACTION_DEPOT_TITLE_INSERT" : "" -} \ No newline at end of file diff --git a/src/module_extraction/module/lang/lang-fr.json b/src/module_extraction/module/lang/lang-fr.json deleted file mode 100755 index 883753687e6651af63d7cce0c7dfbbf188fa1a91..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/lang/lang-fr.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "TEXT_MODE_EXTRACTION" : "Gestion des extractions", - "TITLE_MODE_EXTRACTION" : "Extraction", - "TEXT_MODE_EXTRACTION_REF" : "Gestion références des extractions", - "TITLE_MODE_EXTRACTION_REF" : "extraction_ref", - "EXTRACTION_EXTRACTION_EXTRACTION_TITLE" : "Extraction", - "EXTRACTION_EXTRACTION_EXTRACTION_TITLE_INSERT" : "Extraction", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_BO_ID" : "Id métier", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_STATUS" : "Etat", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CREATION_DATE" : "Date de création", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_REQUESTOR" : "Demandeur", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_AE" : "Acte d'engagement", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT" : "Etendue", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMPANY" : "Organisme", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_LAYERS" : "Couches", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_STATISTIQUE" : "Données statistiques", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_VECTOR_FORMAT_ID" : "Format Vecteurs", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COORDSYS_ID" : "Système de coordonnées", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE" : "note", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_NOTE_LINE" : "note_line", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_RASTER_FORMAT_ID" : "Format Images", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_EXTENT_METHOD" : "Méthode de saisie", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_SIGNED" : "Acte d'engagement signé", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ACCEPTED_BY_CPA" : "Validation de l'usage décrit pour les données", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_IDENTIFICATION_COMPLETE" : "Cadre d'identification complet", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_DEFINITION_COMPLETE" : "Définition des traitements non renseignée", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CREATE" : "Créer", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_REJECT_EXTRACTION" : "Refuser l'extraction", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_RELOAD_AE" : "Recharger l'acte d'engagement", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_SEND_AE" : "Soumettre l'AE", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_TERMINATE" : "Terminer", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ASK_AE" : "Demander l'AE", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_GENERATE_AE" : "Générer l'AE", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ALLOW_EXTRACTION" : "Autoriser l'extraction", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_COMMENT" : "Commentaires", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_PRIORITY_ID" : "Priorité", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_COM" : "Commune", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ID_CONSEIL" : "Conseil de Territoire", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_HISTORY" : "Historique", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_TECHNIQUE" : "Générer précaunisations techniques", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_CARTOGRAPHIQUE" : "Générer charte cartographique", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_LISTE_TERRITOIRE" : "Liste des territoires", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_LISTE_COMMUNE" : "Liste des communes", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_FORMAT" : "Format", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_ISOGEO" : "Générer métadonnées isogéo", - "EXTRACTION_REF_EXTRACTION_COORDSYS_TITLE" : "Système de coordonnées {{::coordsys_id}}", - "EXTRACTION_REF_EXTRACTION_COORDSYS_TITLE_INSERT" : "Système de coordonnées", - "EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS_ID" : "ID", - "EXTRACTION_REF_EXTRACTION_COORDSYS_FORM_COORDSYS" : "Nom", - "EXTRACTION_REF_EXTRACTION_FORMAT_TITLE" : "Format {{::format_id}}", - "EXTRACTION_REF_EXTRACTION_FORMAT_TITLE_INSERT" : "Format", - "EXTRACTION_REF_EXTRACTION_FORMAT_SELECT" : "Sélectionner un format :", - "EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT_ID" : "ID", - "EXTRACTION_REF_EXTRACTION_FORMAT_FORM_FORMAT" : "Nom", - "EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_RASTER" : "Raster", - "EXTRACTION_REF_EXTRACTION_FORMAT_FORM_USE_FOR_VECTOR" : "Vecteur", - "EXTRACTION_REF_EXTRACTION_LAYER_TITLE" : "Couche {{::layer_id}}", - "EXTRACTION_REF_EXTRACTION_LAYER_TITLE_INSERT" : "Couche", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER_ID" : "ID", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_LAYER" : "Nom", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_CATEGORY" : "Catégorie", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_RESTRICTION" : "Restriction", - "EXTRACTION_REF_EXTRACTION_LAYER_FORM_UNUSED_ATTRIBUTES" : "Attributs inutilisés", - "EXTRACTION_REF_EXTRACTION_LAYER_LAYERS_TOOLTIP_TITLE" : "Couches", - "EXTRACTION_REF_EXTRACTION_LAYER_UNUSED_ATTRIBUTES_TOOLTIP_TITLE" : "Attributs inutilisés", - "CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_SCHEMA_EXTRACTION" : "", - "CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_COLOR_MUTUALIZED" : "Couleur des couches mutualisées", - "CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_COLOR_NO_MUTUALIZED" : "Couleur des couches non mutualisées", - "TEXT_MODE_EXTRACTION_FORM" : "", - "TITLE_MODE_EXTRACTION_FORM" : "extraction_form", - "SIGN_UP_END_DATE" : "Date de fin de contrat", - "SIGN_UP_START_DATE" : "Date de début de contrat", - "SIGN_UP_STUDY_OBJECT" : "Objet de l'étude", - "SIGN_UP_PUBLIC_IP" : "IP publique fixe", - "SIGN_UP_PHONE" : "Téléphone", - "SIGN_UP_DEMANDEUR" : "Nom du demandeur", - "SIGN_UP_MAIL_DEMANDEUR" : "Adresse mail du demandeur", - "TEXT_MODE_EXTRACTION_DEPOT" : "", - "TITLE_MODE_EXTRACTION_DEPOT" : "extraction_depot", - "EXTRACTION_EXTRACTION_CP_TITLE_INSERT" : "Extraction", - "EXTRACTION_EXTRACTION_CP_FORM_TECHNIQUE" : "Générer précaunisations techniques", - "EXTRACTION_EXTRACTION_CP_FORM_CARTOGRAPHIQUE" : "Générer charte cartographique", - "EXTRACTION_EXTRACTION_CP_FORM_ISOGEO" : "Générer métadonnées isogéo", - "EXTRACTION_EXTRACTION_CP_FORM_COMPANY" : "Organisme", - "EXTRACTION_EXTRACTION_CP_FORM_EXTENT_METHOD" : "Méthode de saisie", - "EXTRACTION_EXTRACTION_CP_FORM_ID_COM" : "Commune", - "EXTRACTION_EXTRACTION_CP_FORM_ID_CONSEIL" : "Conseil de Territoire", - "EXTRACTION_EXTRACTION_CP_FORM_EXTENT" : "Etendue", - "EXTRACTION_EXTRACTION_CP_FORM_LAYERS" : "Couches", - "EXTRACTION_EXTRACTION_CP_FORM_STATISTIQUE" : "Données statistiques", - "EXTRACTION_EXTRACTION_CP_FORM_COORDSYS_ID" : "Système de coordonnées", - "EXTRACTION_EXTRACTION_CP_FORM_VECTOR_FORMAT_ID" : "Format Vecteurs", - "EXTRACTION_EXTRACTION_CP_FORM_RASTER_FORMAT_ID" : "Format Images", - "EXTRACTION_EXTRACTION_CP_FORM_STATUS" : "Etat", - "EXTRACTION_EXTRACTION_CP_FORM_HISTORY" : "Historique", - "EXTRACTION_EXTRACTION_CP_FORM_CREATION_DATE" : "Date de création", - "EXTRACTION_EXTRACTION_CP_FORM_REQUESTOR" : "Demandeur", - "EXTRACTION_EXTRACTION_CP_FORM_AE" : "Acte d'engagement", - "EXTRACTION_EXTRACTION_CP_FORM_NOTE" : "note", - "EXTRACTION_EXTRACTION_CP_FORM_NOTE_LINE" : "note_line", - "EXTRACTION_EXTRACTION_CP_FORM_SIGNED" : "Acte d'engagement signé", - "EXTRACTION_EXTRACTION_CP_FORM_ACCEPTED_BY_CPA" : "Validation de l'usage décrit pour les données", - "EXTRACTION_EXTRACTION_CP_FORM_IDENTIFICATION_COMPLETE" : "Cadre d'identification complet", - "EXTRACTION_EXTRACTION_CP_FORM_DEFINITION_COMPLETE" : "Définition des traitements non renseignée", - "EXTRACTION_EXTRACTION_CP_FORM_COMMENT" : "Commentaires", - "EXTRACTION_EXTRACTION_CP_FORM_PRIORITY_ID" : "Priorité", - "EXTRACTION_EXTRACTION_CP_TITLE" : "Extraction", - "EXTRACTION_EXTRACTION_CP_FORM_BO_ID" : "Id métier", - "EXTRACTION_DEPOT_EXTRACTION_EXTRACTION_DEPOT_TITLE" : "", - "EXTRACTION_DEPOT_EXTRACTION_EXTRACTION_DEPOT_TITLE_INSERT" : "", - "EXTRACTION_DEPORT_DELETE_NO_SELECTED": "Aucun fichier sélectionné", - "EXTRACTION_DEPOT_DELETE_SELECT_A_FILE": "Veuillez sélectionner un fichier à supprimer", - "EXTRACTION_DEPOT_TITLE": "Dépot de fichiers", - "EXTRACTION_DEPOT_FILE_UPLOAD": "Fichier à envoyer", - "EXTRACTION_DEPOT_FILE_UPDATE": "Mettre à jour", - "ERROR_FILE_SIZE_EXTRACTION_LOAD_DEPOSIT_DIRECTORY" : "La taille du fichier est supérieure à la taille maximale autorisée.", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_DEPOSIT" : "Déposer", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_INPUT_DEPOSIT" : "Fichier à déposer", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_FORMAT_EXTENSION" : "Format du fichier", - "EXTRACTION_EXTRACTION_EXTRACTION_FORM_SCHEMA_CONSTRAINT" : "Schéma des contraintes", - "CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_SIG" : "Extensions SIG (séparées par |)", - "CONFIGURATION_VITIS_CONFIGURATION_EXTRACTIONCONFIG_FORM_DAO" : "Extensions DAO (séparées par |)" -} \ No newline at end of file diff --git a/src/module_extraction/module/less/main.less b/src/module_extraction/module/less/main.less deleted file mode 100755 index 6fc121e62751d3bec645ea2f90b4d2ae50b0a9a7..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/less/main.less +++ /dev/null @@ -1,5 +0,0 @@ -// LESS -@ui-grid-bg-image: "../images/ui-grid/wbg.gif"; -@font-color-purple: #6d1a67; -@test-color: black; -@import 'projectDirectory.less'; \ No newline at end of file diff --git a/src/module_extraction/module/templates/depositDirectoryTpl.html b/src/module_extraction/module/templates/depositDirectoryTpl.html deleted file mode 100755 index 14d9fd0cb85452098669a5ff971e9109af652e63..0000000000000000000000000000000000000000 --- a/src/module_extraction/module/templates/depositDirectoryTpl.html +++ /dev/null @@ -1,16 +0,0 @@ -<div data-app-deposit-directory="" id="deposit-directory" class="row no-bs-row-margin deposit-directory"> - <div class="col-xs-12 no_bs_padding"> - <!-- Titre --> - <div id="deposit_directory_title_container" class="row"> - <div class="col-xs-12 deposit-directory-title">Dépôt {{oFormValues[sFormDefinitionName].name}}</div> - </div> - <!-- Treeview --> - <div id="deposit-directory-treeview-container" class="row deposit-directory-treeview-container"> - <div data-app-deposit-directory-treeview="" class="col-xs-12 deposit-directory-treeview"></div> - </div> - <!-- Formulaire (upload) --> - <div id="deposit_directory_form_container" class="row deposit-directory-upload-form-container"> - <div data-app-deposit-directory-form="" class="col-xs-{{oFormDefinition[sFormDefinitionName].nb_cols}}"></div> - </div> - </div> -</div> \ No newline at end of file diff --git a/src/module_extraction/web_service/conf/properties.inc b/src/module_extraction/web_service/conf/properties.inc deleted file mode 100755 index 62a488a96ebc39a1632bb9a4b749d226d81dd6c7..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/conf/properties.inc +++ /dev/null @@ -1,7 +0,0 @@ -<?php -$properties['color_mutualized'] = 'green'; -$properties['color_no_mutualized'] = 'red'; -$properties['sig'] = '*.shp'; -$properties['dao'] = '*.dao'; -$properties['shared_dir'] = 'D:/serveur/gtf/vas/shared'; -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/conf/properties_server.inc b/src/module_extraction/web_service/conf/properties_server.inc deleted file mode 100644 index 1f67047d0d601b6ed6b6b417d8fb04f48b6d6ceb..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/conf/properties_server.inc +++ /dev/null @@ -1,3 +0,0 @@ -<?php - $properties['schema_extraction'] = 's_extraction'; -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/conf/selected_properties.inc b/src/module_extraction/web_service/conf/selected_properties.inc deleted file mode 100644 index 90da243f98c3627294f8ffeace18aa019820f0ee..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/conf/selected_properties.inc +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -$aAdminFields = Array( - 'color_mutualized', - 'color_no_mutualized', - 'sig', - 'dao' -); -$aUserFields = Array( - 'color_mutualized', - 'color_no_mutualized', - 'sig', - 'dao' -); - -$properties['aAdminFields'] = array_merge($properties['aAdminFields'], $aAdminFields); -$properties['aUserFields'] = array_merge($properties['aUserFields'], $aUserFields); -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/conf/version.inc b/src/module_extraction/web_service/conf/version.inc deleted file mode 100755 index 42fa9895a17ed042ce569792ff1b43fcd6d3d2ff..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/conf/version.inc +++ /dev/null @@ -1,7 +0,0 @@ -<?php -// Numéro de la version de extraction -define ("VM_VERSION", "20XX.XX.XX"); -define ("VM_BUILD", "XXXXX"); -define ("VM_MONTH_YEAR", "XX_20XX"); -define ("VM_STATUS", "STABLE"); -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/sql/sqlQueries.xml b/src/module_extraction/web_service/sql/sqlQueries.xml deleted file mode 100755 index 04344a798894340f9fe84636ecf1877ed2aced9f..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/sql/sqlQueries.xml +++ /dev/null @@ -1,493 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<sqlQueries> - <title>Scripts d'installation et de mises à jour de la base du VAS</title> - <queriesCollection> - <query> - <type>init</type> - <version>2017-01-00</version> - <code> - <![CDATA[ - --Partie pour le module extraction version 2017-01-00 généré par WAB le 22/05/2018 à 09:09:32 - --Partie pour le module extraction version 2017-01-01 généré par WAB le 18/07/2017 à 09:52:00 - CREATE SCHEMA s_extraction AUTHORIZATION u_vitis; - GRANT ALL ON SCHEMA s_extraction TO u_vitis; - GRANT USAGE ON SCHEMA s_extraction TO extraction_admin; - GRANT USAGE ON SCHEMA s_extraction TO extraction_user; - CREATE SEQUENCE s_extraction.bo_id_extraction_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - ALTER TABLE s_extraction.bo_id_extraction_seq OWNER TO u_vitis; - GRANT ALL ON SEQUENCE s_extraction.bo_id_extraction_seq TO u_vitis; - GRANT ALL ON SEQUENCE s_extraction.bo_id_extraction_seq TO extraction_admin; - GRANT ALL ON SEQUENCE s_extraction.bo_id_extraction_seq TO extraction_user; - CREATE SEQUENCE s_extraction.seq_common START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - ALTER TABLE s_extraction.seq_common OWNER TO u_vitis; - GRANT ALL ON SEQUENCE s_extraction.seq_common TO u_vitis; - GRANT ALL ON SEQUENCE s_extraction.seq_common TO extraction_admin; - GRANT ALL ON SEQUENCE s_extraction.seq_common TO extraction_user; - CREATE TABLE s_extraction.extraction (bo_id integer NOT NULL, status character varying(100), history text, creation_date date DEFAULT ('now'::text)::date, requestor character varying(50) DEFAULT "current_user"(), ae character varying(255), extent text, company character varying(50), layers text, vector_format_id character varying(100), coordsys_id character varying(50), note text, note_line text, raster_format_id character varying(100), extent_method character varying(50), signed boolean, accepted_by_cpa boolean, identification_complete boolean, definition_complete boolean, comment text, priority_id integer, id_com text, id_conseil text, email varchar(100),status_id integer); - ALTER TABLE s_extraction.extraction OWNER TO u_vitis; - CREATE TABLE s_extraction.rt_coordsys (coordsys_id character varying(50) NOT NULL, coordsys character varying(100)); - ALTER TABLE s_extraction.rt_coordsys OWNER TO u_vitis; - CREATE TABLE s_extraction.rt_feature_model (feature_type character varying(200) NOT NULL, attribute_name character varying(200) NOT NULL, attribute_data_type character varying(200), geometry_type character varying(200), "order" integer); - ALTER TABLE s_extraction.rt_feature_model OWNER TO u_vitis; - CREATE TABLE s_extraction.rt_format (format_id character varying(100) NOT NULL, format character varying(255), use_for_raster boolean, use_for_vector boolean); - ALTER TABLE s_extraction.rt_format OWNER TO u_vitis; - CREATE TABLE s_extraction.rt_layer (layer_id character varying(100) NOT NULL, layer character varying(255), category character varying(50), restriction character varying(50), unused_attributes text); - ALTER TABLE s_extraction.rt_layer OWNER TO u_vitis; - CREATE TABLE s_extraction.version(version character varying(100) NOT NULL, build integer NOT NULL, date timestamp with time zone NOT NULL, active boolean NOT NULL, CONSTRAINT version_pkey PRIMARY KEY (version)); - ALTER TABLE s_extraction.version OWNER TO u_vitis; - INSERT INTO s_extraction.rt_coordsys (coordsys_id, coordsys) VALUES ('EPSG:27572', 'Lambert 2 étendu'); - INSERT INTO s_extraction.rt_coordsys (coordsys_id, coordsys) VALUES ('Lambert93', 'Lambert 93'); - INSERT INTO s_extraction.rt_coordsys (coordsys_id, coordsys) VALUES ('EPSG:3944', 'Lambert 93 CC44'); - INSERT INTO s_extraction.rt_coordsys (coordsys_id, coordsys) VALUES ('EPSG:4326', 'WGS 84'); - INSERT INTO s_extraction.rt_format (format_id, format, use_for_raster, use_for_vector) VALUES ('ECW', 'Er Mapper ECW', true, false); - INSERT INTO s_extraction.rt_format (format_id, format, use_for_raster, use_for_vector) VALUES ('ACAD', 'Autocad DWG', false, true); - INSERT INTO s_extraction.rt_format (format_id, format, use_for_raster, use_for_vector) VALUES ('SHAPE', 'Esri Shapefile', false, true); - INSERT INTO s_extraction.rt_format (format_id, format, use_for_raster, use_for_vector) VALUES ('MAPINFO', 'Mapinfo Tab', false, true); - INSERT INTO s_extraction.rt_format (format_id, format, use_for_raster, use_for_vector) VALUES ('MIF', 'Mapinfo MIF/MID', false, true); - INSERT INTO s_extraction.rt_format (format_id, format, use_for_raster, use_for_vector) VALUES ('GML', 'GML', false, true); - INSERT INTO s_extraction.rt_format (format_id, format, use_for_raster, use_for_vector) VALUES ('OGCKML', 'KML', false, true); - INSERT INTO s_extraction.rt_format (format_id, format, use_for_raster, use_for_vector) VALUES ('GEOJSON', 'GEOJSON', false, true); - INSERT INTO s_extraction.rt_format (format_id, format, use_for_raster, use_for_vector) VALUES ('TIFF', 'TIFF', true, false); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'id_geofla', 'fme_real64', 'fme_no_geom;fme_point;fme_line;fme_area;fme_surface;fme_collection', 1); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'code_arr', 'fme_varchar(1)', '', 2); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'code_chf', 'fme_varchar(3)', '', 3); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'nom_chf', 'fme_varchar(50)', '', 4); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'x_chf_lieu', 'fme_varchar(255)', '', 5); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'y_chf_lieu', 'fme_varchar(255)', '', 6); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'code_dept', 'fme_varchar(2)', '', 7); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'nom_dept', 'fme_varchar(30)', '', 8); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'code_reg', 'fme_varchar(2)', '', 9); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.arrondissement', 'nom_region', 'fme_varchar(30)', '', 10); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'id_geofla', 'fme_real64', 'fme_no_geom;fme_point;fme_line;fme_area;fme_surface;fme_collection', 1); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'code_cant', 'fme_varchar(2)', '', 2); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'code_chf', 'fme_varchar(3)', '', 3); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'nom_chf', 'fme_varchar(50)', '', 4); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'x_chf_lieu', 'fme_varchar(255)', '', 5); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'y_chf_lieu', 'fme_varchar(255)', '', 6); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'code_arr', 'fme_varchar(1)', '', 7); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'code_dept', 'fme_varchar(2)', '', 8); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'nom_dept', 'fme_varchar(30)', '', 9); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'code_reg', 'fme_varchar(2)', '', 10); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.canton', 'nom_region', 'fme_varchar(30)', '', 11); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'id_geofla', 'fme_real64', 'fme_no_geom;fme_point;fme_line;fme_area;fme_surface;fme_collection', 1); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'code_comm', 'fme_varchar(3)', '', 2); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'insee_com', 'fme_varchar(5)', '', 3); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'nom_comm', 'fme_varchar(50)', '', 4); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'statut', 'fme_varchar(20)', '', 5); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'x_chf_lieu', 'fme_varchar(255)', '', 6); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'y_chf_lieu', 'fme_varchar(255)', '', 7); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'z_moyen', 'fme_varchar(255)', '', 8); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'superficie', 'fme_real64', '', 9); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'population', 'fme_real64', '', 10); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'code_cant', 'fme_varchar(2)', '', 11); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'code_arr', 'fme_varchar(1)', '', 12); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'code_dept', 'fme_varchar(2)', '', 13); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'nom_dept', 'fme_varchar(30)', '', 14); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'code_reg', 'fme_varchar(2)', '', 15); - INSERT INTO s_extraction.rt_feature_model (feature_type, attribute_name, attribute_data_type, geometry_type, "order") VALUES ('geofla.commune', 'nom_region', 'fme_varchar(30)', '', 16); - INSERT INTO s_extraction.rt_layer (layer_id, layer, category, restriction, unused_attributes) VALUES ('geofla.arrondissement', 'Arrondissement', 'Arrondissement', 'interne', 'x_centroid;y_centroid'); - INSERT INTO s_extraction.rt_layer (layer_id, layer, category, restriction, unused_attributes) VALUES ('geofla.canton', 'Canton', 'Arrondissement', 'restreinit', 'x_centroid;y_centroid'); - INSERT INTO s_extraction.rt_layer (layer_id, layer, category, restriction, unused_attributes) VALUES ('geofla.commune', 'Commune', 'Commune', 'public', 'x_centroid;y_centroid'); - ALTER TABLE ONLY s_extraction.extraction ADD CONSTRAINT pk_plan_bo_id PRIMARY KEY (bo_id); - ALTER TABLE ONLY s_extraction.rt_layer ADD CONSTRAINT pk_projet_type PRIMARY KEY (layer_id); - ALTER TABLE ONLY s_extraction.rt_format ADD CONSTRAINT pk_reseau PRIMARY KEY (format_id); - ALTER TABLE ONLY s_extraction.rt_coordsys ADD CONSTRAINT pk_rt_coordsys PRIMARY KEY (coordsys_id); - ALTER TABLE ONLY s_extraction.rt_feature_model ADD CONSTRAINT pk_rt_feature_model PRIMARY KEY (feature_type, attribute_name); - ALTER TABLE ONLY s_extraction.extraction ADD CONSTRAINT fk_coordsys_id FOREIGN KEY (coordsys_id) REFERENCES s_extraction.rt_coordsys(coordsys_id); - ALTER TABLE ONLY s_extraction.extraction ADD CONSTRAINT fk_format_id FOREIGN KEY (vector_format_id) REFERENCES s_extraction.rt_format(format_id); - GRANT ALL ON TABLE s_extraction.extraction TO u_vitis; - GRANT ALL ON TABLE s_extraction.extraction TO extraction_user; - GRANT ALL ON TABLE s_extraction.rt_coordsys TO u_vitis; - GRANT ALL ON TABLE s_extraction.rt_coordsys TO extraction_admin; - GRANT ALL ON TABLE s_extraction.rt_feature_model TO u_vitis; - GRANT ALL ON TABLE s_extraction.rt_feature_model TO extraction_admin; - GRANT ALL ON TABLE s_extraction.rt_format TO u_vitis; - GRANT ALL ON TABLE s_extraction.rt_format TO extraction_admin; - GRANT ALL ON TABLE s_extraction.rt_layer TO u_vitis; - GRANT ALL ON TABLE s_extraction.rt_layer TO extraction_admin; - CREATE TABLE s_extraction.rt_extraction_status (status_id int4 NOT NULL DEFAULT nextval('s_extraction.seq_common'::regclass), name varchar(50) NOT NULL, progress int4 NOT NULL, PRIMARY KEY (status_id)); - ALTER TABLE s_extraction.rt_extraction_status OWNER TO u_vitis; - GRANT ALL ON TABLE s_extraction.rt_extraction_status TO extraction_admin; - CREATE TABLE s_extraction.rt_extraction_status_group( status_id integer NOT NULL, group_id integer NOT NULL, extraction_status_group_id integer NOT NULL, CONSTRAINT pk_workspace_group PRIMARY KEY (extraction_status_group_id), CONSTRAINT fk_group_id_workspace FOREIGN KEY (group_id) REFERENCES s_vitis."group" (group_id) MATCH SIMPLE ON UPDATE RESTRICT ON DELETE CASCADE, CONSTRAINT fk_status_id FOREIGN KEY (status_id) REFERENCES s_extraction.rt_extraction_status (status_id) MATCH SIMPLE ON UPDATE RESTRICT ON DELETE CASCADE)WITH ( OIDS=FALSE); - ALTER TABLE s_extraction.rt_extraction_status_group OWNER TO u_vitis; - GRANT ALL ON TABLE s_extraction.rt_extraction_status_group TO u_vitis; - GRANT SELECT ON TABLE s_extraction.rt_extraction_status_group TO extraction_user; - GRANT SELECT ON TABLE s_extraction.rt_extraction_status_group TO extraction_admin; - CREATE VIEW s_extraction.v_extraction AS SELECT DISTINCT extraction.bo_id, extraction.status_id, extraction.history, extraction.creation_date, extraction.requestor, extraction.ae, extraction.extent, extraction.company, extraction.layers, extraction.vector_format_id, extraction.vector_format_id AS format_id, extraction.coordsys_id, extraction.raster_format_id, extraction.extent_method, extraction.signed, extraction.accepted_by_cpa, extraction.identification_complete, extraction.definition_complete, extraction.priority_id, extraction.id_com, extraction.id_conseil, extraction.note, rt_extraction_status.progress AS progress_level, rt_extraction_status.name AS status_name, rt_extraction_status.name AS status FROM ((((s_extraction.extraction LEFT JOIN s_extraction.rt_extraction_status ON ((extraction.status_id = rt_extraction_status.status_id))) LEFT JOIN s_extraction.rt_extraction_status_group ON ((rt_extraction_status.status_id = rt_extraction_status_group.status_id))) LEFT JOIN s_vitis.user_group ON ((rt_extraction_status_group.group_id = user_group.group_id))) LEFT JOIN s_vitis."user" ON ((user_group.user_id = "user".user_id))) WHERE ((("user".login)::name = "current_user"()) AND (((extraction.requestor)::name = "current_user"()) OR (rt_extraction_status_group.group_id = 12))); - ALTER TABLE s_extraction.v_extraction OWNER TO u_vitis; - GRANT ALL ON TABLE s_extraction.v_extraction TO u_vitis; - GRANT ALL ON TABLE s_extraction.v_extraction TO extraction_admin; - GRANT ALL ON TABLE s_extraction.v_extraction TO extraction_user; - GRANT ALL ON TABLE s_extraction.extraction TO extraction_admin; - GRANT ALL ON TABLE s_extraction.extraction TO extraction_user; - GRANT ALL ON TABLE s_extraction.rt_coordsys TO extraction_admin; - GRANT SELECT ON TABLE s_extraction.rt_coordsys TO extraction_user; - GRANT ALL ON TABLE s_extraction.rt_extraction_status TO extraction_admin; - GRANT SELECT ON TABLE s_extraction.rt_extraction_status TO extraction_user; - GRANT ALL ON TABLE s_extraction.rt_format TO extraction_admin; - GRANT SELECT ON TABLE s_extraction.rt_format TO extraction_user; - GRANT ALL ON TABLE s_extraction.rt_layer TO extraction_admin; - GRANT SELECT ON TABLE s_extraction.rt_layer TO extraction_user; - GRANT SELECT ON TABLE s_extraction.rt_feature_model TO extraction_admin; - GRANT SELECT ON TABLE s_extraction.rt_feature_model TO extraction_user; - --Partie WABSQL générée par WAB le 04/05/2018 à 14:31:04 - -- Ces tables sont normalement prévues dans votre fichier VisualParadigm et sont necessaires pour le fonctionnement de vos objets WAB - --CREATE TABLE s_extraction.rt_extraction_status (status_id integer NOT NULL DEFAULT nextval('s_vitis.seq_common'::regclass), name character varying(50) NOT NULL, progress integer NOT NULL, CONSTRAINT rt_extraction_status_pkey PRIMARY KEY (status_id)); - --CREATE TABLE s_extraction.rt_extraction_status_group (status_id integer NOT NULL, group_id integer NOT NULL, link_id integer NOT NULL DEFAULT nextval('s_vitis.seq_common'::regclass), CONSTRAINT rt_extraction_status_group_pkey PRIMARY KEY (link_id), CONSTRAINT fk_extraction_status_group FOREIGN KEY (status_id) REFERENCES s_extraction.rt_extraction_status (status_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION); - CREATE TABLE s_extraction.extraction_history (history_id integer NOT NULL DEFAULT nextval('s_extraction.seq_common'::regclass), date timestamp with time zone NOT NULL, login character varying(50) NOT NULL, comment text NOT NULL, bo_id integer NOT NULL, CONSTRAINT extraction_history_pkey PRIMARY KEY (history_id), CONSTRAINT fk_extraction_history FOREIGN KEY (bo_id) REFERENCES s_extraction.extraction (bo_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION); - -- Vue basique pour vos objets WAB tenant compte de la restriction groupe état - --CREATE OR REPLACE VIEW s_extraction.v_extraction AS SELECT extraction.* FROM s_extraction.extraction LEFT JOIN s_extraction.rt_extraction_status ON rt_extraction_status.status_id = extraction.status_id JOIN s_extraction.rt_extraction_status_group ON rt_extraction_status.status_id = rt_extraction_status_group.status_id WHERE (rt_extraction_status_group.group_id IN ( SELECT user_group.group_id FROM s_vitis.user_group LEFT JOIN s_vitis."user" ON user_group.user_id = "user".user_id WHERE "user".login::name = "current_user"())); - -- u_vitis est propriétaire de toutes vos tables - ALTER TABLE s_extraction.version OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_feature_model OWNER TO u_vitis; - ALTER TABLE s_extraction.extraction OWNER TO u_vitis; - --ALTER TABLE s_extraction.ct OWNER TO u_vitis; - --ALTER TABLE s_extraction.commune OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_coordsys OWNER TO u_vitis; - ALTER TABLE s_extraction.v_extraction OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_format OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_layer OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_extraction_status OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_extraction_status_group OWNER TO u_vitis; - ALTER TABLE s_extraction.extraction_history OWNER TO u_vitis; - -- u_vitis propriétaire sur les tables des objets WAB - --ALTER TABLE s_extraction.rt_extraction_status OWNER to u_vitis; - --ALTER TABLE s_extraction.rt_extraction_status_group OWNER to u_vitis; - --ALTER TABLE s_extraction.extraction_history OWNER to u_vitis; - -- Gestion des droits d'après les méthodes php saisies pour vos objets (annule et remplace) - REVOKE ALL ON TABLE s_extraction.rt_coordsys FROM extraction_admin; - REVOKE ALL ON TABLE s_extraction.v_extraction FROM extraction_user; - REVOKE ALL ON TABLE s_extraction.rt_format FROM extraction_admin; - REVOKE ALL ON TABLE s_extraction.rt_layer FROM extraction_admin; - GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE s_extraction.rt_coordsys TO extraction_admin; - GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE s_extraction.v_extraction TO extraction_user; - GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE s_extraction.rt_format TO extraction_admin; - GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE s_extraction.rt_layer TO extraction_admin; - -- Droits sur les tables des objets WAB - GRANT SELECT ON TABLE s_extraction.rt_extraction_status TO extraction_user; - GRANT SELECT ON TABLE s_extraction.rt_extraction_status_group TO extraction_user; - GRANT SELECT, INSERT ON TABLE s_extraction.extraction_history TO extraction_user; - INSERT INTO s_gtf.messageclass (messageclass, messageclass_type) VALUES ('AE Généré','action'); - INSERT INTO s_gtf.messageclass (messageclass, messageclass_type) VALUES ('Extraction Aix','action'); - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'AE Généré','BoAction',0,'bo_id_attribute=''bo_id''|method=''trGenerer''|class=''Extractions''|module=''extraction'''); - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'AE Généré','EmailAction',1,'template_id = ' || (SELECT email_template_id FROM s_gtf.email_template WHERE name = 'Email demandeur AE généré')); - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'Extraction Aix','EmailAction',1,'template_id = ' || (SELECT email_template_id FROM s_gtf.email_template WHERE name = 'Email controleur données extraites')); - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'Extraction Aix','EmailAction',2,'template_id = ' || (SELECT email_template_id FROM s_gtf.email_template WHERE name = 'Email demandeur données extraites')); - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'Extraction Aix','BoAction',0,'bo_id_attribute=''bo_id''|method=''trTerminerExtraction''|class=''Extractions''|module=''extraction'''); - INSERT INTO s_gtf.email_template (name, subject, body, "to", cc, cci, code, use_advanced, rt_emailcontext_id, attachment) VALUES ('Email demandeur AE généré', NULL, NULL, NULL, NULL, NULL, '$logo = $this->aProperties[''ws_data_dir'']."/gtf/LOGO_AMP.jpg";' || chr(13) || '$base64 = base64_encode(file_get_contents($logo));' || chr(13) || '$image = ''<img src="data:image/png;base64,''.$base64.''">'';' || chr(13) || 'require_once("gtf_lib/gtf_object/Order.class.inc");' || chr(13) || 'require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || '$iBoId = $this->aObjects["oMessage"]->getBody(''bo_id'');' || chr(13) || '$sRequest = "SELECT * from s_extraction.extraction where bo_id = ".$iBoId;' || chr(13) || '$oPDOresult = $this->oBd->executeWithParams($sRequest, array());' || chr(13) || '$aBo = $this->oBd->ligneSuivante ($oPDOresult);' || chr(13) || '$iOrderId = $this->aObjects["oMessage"]->getBody(''order_id'');' || chr(13) || '$this->aObjects["oOrder"]= new orderLib($oBd, $iOrderId, $this->aObjects["oMessage"]->aProperties, "v_order");' || chr(13) || 'error_log( print_r($this->aObjects[''oOrder''], true));' || chr(13) || '$this->aObjects[''oUser''] = new User($oBd, $this->aObjects[''oOrder'']->aFields[''user_id''], $this->aObjects["oMessage"]->aProperties);' || chr(13) || '$this->to = $aBo[''email''];' || chr(13) || '$this->cc = $this->aObjects["oOrder"]->aFields[''email_notifications''];' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[PAYS D\''AIX - SIGAM] Demande N° ''.$aBo[''bo_id''].'' - Acte d\''Engagement pour l\''utilisation des données SIG'';' || chr(13) || '$this->body = $image.''<p>Bonjour</p>' || chr(13) || '<p></p>' || chr(13) || '<p>Suite à votre demande n°''.$aBo[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($aBo[''creation_date''])).'' pour l\''extraction des données, <u>merci de bien vouloir déposer l\''acte d\''engagement</u> ci-joint complété et signé, à l\''adresse suivante:<br/>' || chr(13) || '<A HREF="https://scpa430.cpa.fr/extraction">Application Extraction</A></p>' || chr(13) || '<p>Une fois réceptionné, l\''acte d\''engagement sera soumis à la validation du Territoire du Pays d\''Aix.<br/>' || chr(13) || 'Si celui-ci est validé, vous recevrez les données par mail (taille < 5Mo) ou par lien de téléchargement (taille > 5Mo).</p>' || chr(13) || '<p>Cordialement,</p>' || chr(13) || '<p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || 'Territoire du Pays d\''Aix<br/>' || chr(13) || 'Tel : 04 42 93 83 50<br/>' || chr(13) || 'Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>'';' || chr(13) || '// les résultats de moins de 5 Mo sont envoyés en pièce jointe' || chr(13) || ' if (filesize($this->aObjects["oOrder"]->aFields[''result_file''])> (5*1024*1024)){' || chr(13) || ' $this->body .= ''<p>Le résultat est disponible par téléchargement :<br/><a href="'' . $this->aObjects["oOrder"]->aFields[''result_url''] . ''">Télécharger le résultat</a></p>'';' || chr(13) || ' } else {' || chr(13) || ' $this->aAttachments[0] = $this->aObjects["oOrder"]->aFields[''result_file''];' || chr(13) || ' }' || chr(13) || 'error_log(print_r($this->aObjects["oOrder"]->aFields, true));', '1', 'gtf', NULL); - INSERT INTO s_gtf.email_template (name, subject, body, "to", cc, cci, code, use_advanced, rt_emailcontext_id, attachment) VALUES ('Email demandeur AE à resoumettre', NULL, NULL, NULL, NULL, NULL, 'require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || 'require_once("vmlib/logUtil.inc");' || chr(13) || '$iBoId = $this->aObjects["oBusinessObject"]->aValues[''bo_id''];' || chr(13) || '$sUserLogin = $this->aObjects["oBusinessObject"]->aValues[''requestor''];' || chr(13) || '$sSql = ''SELECT user_id FROM s_framework.user WHERE login=\''''.$this->aObjects[''oBusinessObject'']->aValues[''requestor''].''\'''';' || chr(13) || '//writeToErrorLog($sSql);' || chr(13) || '$oResult = $oBd->execute($sSql);' || chr(13) || 'if(!$oBd->erreurRencontree) {' || chr(13) || ' if ($oBd->nombreLigne ($oResult) > 0) {' || chr(13) || ' $this->aObjects[''oUser''] = new User($oBd, $oBd->objetSuivant($oResult)->user_id, $this->aObjects["oBusinessObject"]->aProperties);' || chr(13) || ' }' || chr(13) || '}' || chr(13) || '//$this->to = ''sig@agglo-paysdaix.fr'';' || chr(13) || '$this->to = $this->aObjects[''oBusinessObject'']->aValues[''email''];' || chr(13) || '$this->cc = '''';' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[PAYS D\''AIX- SIGAM] Demande N° ''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' - Acte d\''engagement non valide'';' || chr(13) || '$this->body = ''<p>Bonjour,</p>' || chr(13) || ' <p>Suite à votre demande n°''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($this->aObjects[''oBusinessObject'']->aValues[''creation_date''])).'' pour l\''extraction des données, votre demande n\''a pas encore été validée pour la ou les raisons suivantes :<br/>'';' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''signed''] == "false"){' || chr(13) || ' $this->body .= '' - L\''acte d\''engagement n\''est pas signé<br/>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''identification_complete''] == "false"){' || chr(13) || ' $this->body .= '' - Le cadre d\''identification du dépositaire est incomplet<br/>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''definition_complete''] == "false"){' || chr(13) || ' $this->body .= '' - La définition des traitements pour l\''usage du cadastre est non renseignée<br/>'';' || chr(13) || '}' || chr(13) || 'error_log(print_r($this->aObjects[''oBusinessObject'']->aValues, true));' || chr(13) || '//$this->body .= ''<p>''.$this->aObjects[''oBusinessObject'']->aValues[''comment''].''</p>'';' || chr(13) || '$this->body .=''<p><u>Merci de bien vouloir déposer à nouveau l\''acte d\''engagement</u> à l\''adresse suivante :<br/>' || chr(13) || '<A HREF="https://scpa430.cpa.fr/extraction">Application Extraction</A></p>' || chr(13) || '<p>Une fois réceptionné, l\''acte d\''engagement sera soumis à la validation du Territoire du Pays d\''Aix.<br/>' || chr(13) || 'Si celui-ci est validé, vous recevrez les données par mail (taille < 5Mo) ou par lien de téléchargement (taille > 5Mo).</p>' || chr(13) || '<p>Cordialement,</p>' || chr(13) || '<p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || 'Territoire du Pays d\''Aix<br/>' || chr(13) || 'Tel : 04 42 93 83 50<br/>' || chr(13) || 'Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>'';' || chr(13) || '$this->aAttachments[0] = '''';' || chr(13) || '', '1', 'gtf', NULL); - INSERT INTO s_gtf.email_template (name, subject, body, "to", cc, cci, code, use_advanced, rt_emailcontext_id, attachment) VALUES ('Email controleur données extraites', NULL, NULL, NULL, NULL, NULL, 'require_once("gtf_lib/gtf_object/Order.class.inc");' || chr(13) || 'require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || '$iBoId = $this->aObjects["oMessage"]->getBody(''bo_id'');' || chr(13) || '$sRequest = "SELECT * from s_extraction.extraction where bo_id = ".$iBoId;' || chr(13) || '$oPDOresult = $this->oBd->executeWithParams($sRequest, array());' || chr(13) || '$aBo = $this->oBd->ligneSuivante ($oPDOresult);' || chr(13) || '$iOrderId = $this->aObjects["oMessage"]->getBody(''order_id'');' || chr(13) || '$this->aObjects["oOrder"]= new OrderLib($oBd, $iOrderId, $this->aObjects["oMessage"]->aProperties, "v_order");' || chr(13) || '$this->aObjects[''oUser''] = new User($oBd, $this->aObjects[''oOrder'']->aFields[''user_id''], $this->aObjects["oMessage"]->aProperties);' || chr(13) || '$this->to = ''sig.paysdaix@ampmetropole.fr'';' || chr(13) || '$this->cc = '''';' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[GTF] - Demande N° ''.$aBo[''bo_id''].'' - Extraction des données'';' || chr(13) || '$this->body = ''<p>Les données concernant la demande n°''.$aBo[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($aBo[''creation_date''])).'' ont été envoyées au demandeur.</p>' || chr(13) || '<p>Cordialement,</p>' || chr(13) || '<p>L\''application d\''extraction de données de GTF</p>'';' || chr(13) || '', '1', 'gtf', NULL); - INSERT INTO s_gtf.email_template (name, subject, body, "to", cc, cci, code, use_advanced, rt_emailcontext_id, attachment) VALUES ('public', NULL, NULL, NULL, NULL, NULL, '$logo = $this->aProperties[''ws_data_dir'']."/gtf/LOGO_AMP.jpg";' || chr(13) || '$base64 = base64_encode(file_get_contents($logo));' || chr(13) || '$image = ''<img src="data:image/png;base64,''.$base64.''">'';' || chr(13) || 'if ($this->aObjects["oOrder"]->aFields[''order_status_id''] == 3) {' || chr(13) || ' $this->to = '''' . $this->aObjects["oOrder"]->getUser()->aFields[''email''] . '''';' || chr(13) || ' $this->cc = '''' . $this->aObjects["oOrder"]->aFields[''email_notifications''] . '''';' || chr(13) || ' $this->cci = '''';' || chr(13) || ' $this->subject = ''[Pays d\''Aix - SIGAM] - Données extraites'';' || chr(13) || ' $this->body = $image.''<p>Bonjour,</p>'';' || chr(13) || ' $this->body .=''<p></p><p>Les données correspondant à votre demande en date du ''.date(''d/m/Y'',strtotime($this->aObjects["oOrder"]->aFields[''order_date''])).'' sont disponibles '';' || chr(13) || ' if (filesize($this->aObjects["oOrder"]->aFields[''result_file''])> 5242880){' || chr(13) || ' $this->body .= ''sur le lien de téléchargement suivant :<br/><a href="''.$this->aObjects["oOrder"]->aFields[''result_url''] . ''">Télécharger le résultat</a></p>'';' || chr(13) || ' } else {' || chr(13) || ' $this->body .= ''en pièce jointe.</p>'';' || chr(13) || ' $this->aAttachments[0] = $this->aObjects["oOrder"]->aFields[''result_file''];' || chr(13) || ' }' || chr(13) || ' $this->body .=''<p>Vous en souhaitant bonne réception,</p>' || chr(13) || ' <p>Cordialement,</p>' || chr(13) || ' <p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || ' Conseil de Territoire du Pays d\''Aix<br/>' || chr(13) || ' Tel : 04 42 93 83 50<br/>' || chr(13) || ' Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>' || chr(13) || '' || chr(13) || ' '';' || chr(13) || '}else{' || chr(13) || ' $this->to = '''' . $this->aObjects["oOrder"]->getUser()->aFields[''email''] . '''';' || chr(13) || ' $this->subject = ''[GTF]-'' . $this->aObjects["oOrder"]->getWorkspace()->aFields[''name''] . '' - Echec du traitement'';' || chr(13) || ' $this->body = $image.''<p>Bonjour,</p>'';' || chr(13) || ' $this->body .= ''<p>La demande n°'' . $this->aObjects["oOrder"]->aFields[''order_id''] . '' pour le traitement <strong>'' . $this->aObjects["oOrder"]->getWorkspace()->aFields[''name''] . ''</strong> n\''a pu être exécutée correctement suite à une erreur.<br/> Veuillez contactez votre administrateur.<br/>'';' || chr(13) || ' $this->aAttachments[0] = $this->aObjects["oOrder"]->aFields[''log_file''];' || chr(13) || '}', '1', 'gtf', NULL); - INSERT INTO s_gtf.email_template (name, subject, body, "to", cc, cci, code, use_advanced, rt_emailcontext_id, attachment) VALUES ('Email contrôleur AE soumis', NULL, NULL, NULL, NULL, NULL, 'require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || 'require_once("vmlib/logUtil.inc");' || chr(13) || '$iBoId = $this->aObjects["oBusinessObject"]->aValues[''bo_id''];' || chr(13) || '' || chr(13) || '//$this->to = ''sig.paysdaix@ampmetropole.fr'';' || chr(13) || '$this->to = ''sofian.pujo@veremes.com'';' || chr(13) || '$this->cc = '''';' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[GTF] - Demande N° ''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' - Dépôt de l\''Acte d\''Engagement à valider'';' || chr(13) || '$this->body = ''<p>Bonjour,</p>' || chr(13) || ' <p> </p>' || chr(13) || ' <p>L\''acte d\''engagement correspondant à la demande n°''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($this->aObjects[''oBusinessObject'']->aValues[''creation_date''])).'' a été déposé sur le serveur par le demandeur.</p>' || chr(13) || ' <p></p>' || chr(13) || ' <p>Cordialement,</p>' || chr(13) || ' <p> </p>' || chr(13) || ' <p>L\''application d\''extraction de données de GTF</p>'';' || chr(13) || 'error_log($this->body);' || chr(13) || '$this->aAttachments[0] = '''';' || chr(13) || '', '1', 'gtf', NULL); - INSERT INTO s_gtf.email_template (name, subject, body, "to", cc, cci, code, use_advanced, rt_emailcontext_id, attachment) VALUES ('Email demandeur Extraction refusée', NULL, NULL, NULL, NULL, NULL, 'require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || 'require_once("vmlib/logUtil.inc");' || chr(13) || '$iBoId = $this->aObjects["oBusinessObject"]->aValues[''bo_id''];' || chr(13) || '$sUserLogin = $this->aObjects["oBusinessObject"]->aValues[''requestor''];' || chr(13) || '$sSql = ''SELECT user_id FROM s_vitis.user WHERE login=\''''.$this->aObjects[''oBusinessObject'']->aValues[''requestor''].''\'''';' || chr(13) || '//writeToErrorLog($sSql);' || chr(13) || '$oResult = $oBd->execute($sSql);' || chr(13) || '/*if(!$oBd->erreurRencontree) {' || chr(13) || ' if ($oBd->nombreLigne ($oResult) > 0) {' || chr(13) || ' $this->aObjects[''oUser''] = new User($oBd, $oBd->objetSuivant($oResult)->user_id, $this->aObjects["oBusinessObject"]->aProperties);' || chr(13) || ' }' || chr(13) || '}*/' || chr(13) || '//$this->to = ''sig.paysdaix@ampmetropole.fr'';' || chr(13) || 'error_log(print_r($this->aObjects[''oBusinessObject''], true));' || chr(13) || '//$this->to = $this->aObjects[''oBusinessObject'']->aValues[''email''];' || chr(13) || '$this->cc = '''';' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[PAYS D\''AIX - SIGAM] Demande N° ''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' - Rejet de votre demande d\''extraction de données'';' || chr(13) || '$this->body = ''<p>Bonjour,</p>' || chr(13) || ' <p>Suite à votre demande n°''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($this->aObjects[''oBusinessObject'']->aValues[''creation_date''])).'' pour l\''extraction des données, votre demande a été rejetée pour la ou les raisons suivantes :<br/>'';' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''signed''] == "false"){' || chr(13) || ' $this->body .= '' - L\''acte d\''engagement n\''est pas signé<br/>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''accepted_by_cpa''] == "false"){' || chr(13) || ' $this->body .= '' - La CPA ne valide pas l\''usage décrit pour les données du cadastre<br/>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''identification_complete''] == "false"){' || chr(13) || ' $this->body .= '' - Le cadre d\''identification du dépositaire est incomplet</p>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''definition_complete''] == "false"){' || chr(13) || ' $this->body .= '' - La définition des traitements pour l\''usage du cadastre est non renseignée<br/>'';' || chr(13) || '}' || chr(13) || '$this->body .= $this->aObjects[''oBusinessObject'']->aValues[''comment''].''<br/>'';' || chr(13) || '$this->body .=''<p>Cordialement,</p>' || chr(13) || '<p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || 'Territoire du Pays d\''Aix<br/>' || chr(13) || 'Tel : 04 42 93 83 50<br/>' || chr(13) || 'Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>'';' || chr(13) || '$this->aAttachments[0] = '''';' || chr(13) || '', '1', 'gtf', NULL); - INSERT INTO s_gtf.email_template (name, subject, body, "to", cc, cci, code, use_advanced, rt_emailcontext_id, attachment) VALUES ('Email demandeur données extraites', NULL, NULL, NULL, NULL, NULL, 'require_once("gtf_lib/gtf_object/Order.class.inc");' || chr(13) || 'require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || '$iBoId = $this->aObjects["oMessage"]->getBody(''bo_id'');' || chr(13) || '$sRequest = "SELECT * from s_extraction.extraction where bo_id = ".$iBoId;' || chr(13) || '$oPDOresult = $this->oBd->executeWithParams($sRequest, array());' || chr(13) || '$aBo = $this->oBd->ligneSuivante ($oPDOresult);' || chr(13) || '$iOrderId = $this->aObjects["oMessage"]->getBody(''order_id'');' || chr(13) || '$this->aObjects["oOrder"]= new OrderLib($oBd, $iOrderId, $this->aObjects["oMessage"]->aProperties, "v_order");' || chr(13) || '$sUserLogin = $aBo[''requestor''];' || chr(13) || '$sSql = ''SELECT user_id FROM s_framework.user WHERE login=\''''.$this->aObjects[''oBusinessObject'']->aValues[''requestor''].''\'''';' || chr(13) || '$oResult = $oBd->execute($sSql);' || chr(13) || 'if(!$oBd->erreurRencontree) {' || chr(13) || ' if ($oBd->nombreLigne ($oResult) > 0) {' || chr(13) || ' $this->aObjects[''oUser''] = new User($oBd, $oBd->objetSuivant($oResult)->user_id, $this->aObjects["oMessage"]->aProperties);' || chr(13) || ' }' || chr(13) || '}' || chr(13) || '$this->to = $aBo[''email''];' || chr(13) || '$this->cc = $this->aObjects["oOrder"]->aFields[''email_notifications''];' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[PAYS D\''AIX - SIGAM] Demande N° ''.$aBo[''bo_id''].'' - Données SIG extraites'';' || chr(13) || '$this->body = ''<p>Bonjour</p>' || chr(13) || '<p></p><p>Les données correspondant à votre demande n°''.$aBo[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($aBo[''creation_date''])).'' sont disponibles '';' || chr(13) || ' if (filesize($this->aObjects["oOrder"]->aFields[''result_file''])> 5242880){' || chr(13) || ' $this->body .= ''sur le lien de téléchargement suivant :<br/><a href="https://sigdata.agglo-paysdaix.fr/public/gtf/''.$this->aObjects["oOrder"]->aFields[''result_url''] . ''">Télécharger le résultat</a></p>'';' || chr(13) || ' } else {' || chr(13) || ' $this->body .= ''en pièce jointe.</p>'';' || chr(13) || ' $this->aAttachments[0] = $this->aObjects["oOrder"]->aFields[''result_file''];' || chr(13) || ' }' || chr(13) || '$this->body .=''<p>Vous en souhaitant bonne réception,</p>' || chr(13) || '<p>Cordialement,</p>' || chr(13) || '<p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || 'Terriroire du Pays d\''Aix<br/>' || chr(13) || 'Tel : 04 42 93 83 50<br/>' || chr(13) || 'Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>' || chr(13) || '' || chr(13) || ''';' || chr(13) || '// les résultats de moins de 5 Mo sont envoyés en pièce jointe' || chr(13) || ' ' || chr(13) || '', '1', 'gtf', NULL); - - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2018-00-00</version> - <code> - <![CDATA[ - --Partie pour le module extraction version 2018-00-00 généré par WAB le 22/05/2018 à 09:09:32 - ALTER TABLE s_extraction.rt_layer ADD COLUMN ct_id integer; - UPDATE s_extraction.rt_layer set ct_id = 2; - ALTER TABLE s_extraction.rt_layer DROP CONSTRAINT pk_projet_type; - ALTER TABLE s_extraction.rt_layer ADD COLUMN layer_ct_id serial; - ALTER TABLE s_extraction.rt_layer ADD CONSTRAINT pk_layer_ct PRIMARY KEY (layer_ct_id); - ALTER TABLE s_extraction.rt_layer ADD COLUMN mutualized boolean; - ALTER TABLE s_extraction.rt_feature_model ADD COLUMN ct_id integer; - UPDATE s_extraction.rt_feature_model set ct_id = 2; - ALTER TABLE s_extraction.rt_feature_model ADD COLUMN layer_ct_id integer; - UPDATE s_extraction.rt_feature_model SET layer_ct_id = s_extraction.rt_layer.layer_ct_id FROM s_extraction.rt_layer WHERE rt_feature_model.feature_type = s_extraction.rt_layer.layer_id and rt_feature_model.ct_id = s_extraction.rt_feature_model.ct_id; - ALTER TABLE s_extraction.rt_feature_model DROP COLUMN ct_id; - ALTER TABLE s_extraction.rt_feature_model ALTER COLUMN layer_ct_id SET NOT NULL; - ALTER TABLE s_extraction.rt_layer ADD CONSTRAINT rt_layer_layer_id_ct_id_key UNIQUE (layer_id, ct_id); - ALTER TABLE ONLY s_extraction.rt_feature_model ADD CONSTRAINT fk_layer_ct_id FOREIGN KEY (layer_ct_id) REFERENCES s_extraction.rt_layer(layer_ct_id); - ALTER TABLE s_extraction.rt_feature_model ADD UNIQUE (feature_type, attribute_name, layer_ct_id); - ALTER TABLE s_extraction.extraction ADD COLUMN preco_tech boolean; - ALTER TABLE s_extraction.extraction ADD COLUMN chart_graph boolean; - ALTER TABLE s_extraction.extraction ADD COLUMN metadonnees boolean; - DROP VIEW s_extraction.v_extraction; - CREATE OR REPLACE VIEW s_extraction.v_extraction AS SELECT DISTINCT extraction.bo_id, extraction.status_id, extraction.history, extraction.creation_date, extraction.requestor, extraction.ae, extraction.extent, extraction.company, extraction.layers, extraction.vector_format_id, extraction.vector_format_id AS format_id, extraction.coordsys_id, extraction.raster_format_id, extraction.extent_method, extraction.signed, extraction.accepted_by_cpa, extraction.identification_complete, extraction.definition_complete, extraction.priority_id, extraction.id_com, extraction.id_conseil, extraction.email, extraction.note, extraction.preco_tech, extraction.chart_graph, extraction.metadonnees, rt_extraction_status.progress AS progress_level, rt_extraction_status.name AS status_name, rt_extraction_status.name AS status FROM s_extraction.extraction LEFT JOIN s_extraction.rt_extraction_status ON extraction.status_id = rt_extraction_status.status_id LEFT JOIN s_extraction.rt_extraction_status_group ON rt_extraction_status.status_id = rt_extraction_status_group.status_id LEFT JOIN s_vitis.user_group ON rt_extraction_status_group.group_id = user_group.group_id LEFT JOIN s_vitis."user" ON user_group.user_id = "user".user_id WHERE "user".login::name = "current_user"() AND (extraction.requestor::name = "current_user"() OR rt_extraction_status_group.group_id = 12); - ALTER TABLE s_extraction.v_extraction OWNER TO u_vitis; - GRANT ALL ON TABLE s_extraction.v_extraction TO extraction_user; - GRANT ALL ON TABLE s_extraction.v_extraction TO u_vitis; - GRANT ALL ON TABLE s_extraction.v_extraction TO extraction_admin; - COMMENT ON COLUMN s_extraction.extraction.history is 'deprecated'; - COMMENT ON COLUMN s_extraction.extraction.status is 'deprecated'; - CREATE SEQUENCE s_extraction.ct_ct_id_seq; - ALTER SEQUENCE s_extraction.ct_ct_id_seq OWNER TO u_vitis; - CREATE TABLE s_extraction.ct( ct_id integer NOT NULL DEFAULT nextval('s_extraction.ct_ct_id_seq'::regclass), name character varying(50) COLLATE pg_catalog."default" NOT NULL, format character varying(255) COLLATE pg_catalog."default", namedconnection character varying(255) COLLATE pg_catalog."default", geom geometry(MultiPolygon,2154), CONSTRAINT pk_ct PRIMARY KEY (ct_id) ); - ALTER TABLE s_extraction.ct OWNER to u_vitis; - GRANT SELECT ON TABLE s_extraction.ct TO extraction_admin; - GRANT SELECT ON TABLE s_extraction.ct TO extraction_user; - GRANT ALL ON TABLE s_extraction.ct TO u_vitis; - CREATE INDEX ct_ct_id ON s_extraction.ct USING btree (ct_id); - CREATE TABLE s_extraction.commune (commune_id character(6) COLLATE pg_catalog."default" NOT NULL,ct_id integer, name varchar(255) COLLATE pg_catalog."default" NOT NULL,geom geometry(Polygon,2154) NOT NULL,CONSTRAINT pk_commune PRIMARY KEY (commune_id), CONSTRAINT fk_ct_id FOREIGN KEY (ct_id) REFERENCES s_extraction.ct (ct_id) MATCH SIMPLE ON UPDATE RESTRICT ON DELETE SET NULL); - ALTER TABLE s_extraction.commune OWNER to u_vitis; - GRANT SELECT ON TABLE s_extraction.commune TO extraction_admin; - GRANT SELECT ON TABLE s_extraction.commune TO extraction_user; - GRANT ALL ON TABLE s_extraction.commune TO u_vitis; - --Partie WABSQL générée par WAB le 04/05/2018 à 10:02:22 - -- Ces tables sont normalement prévues dans votre fichier VisualParadigm et sont necessaires pour le fonctionnement de vos objets WAB - -- CREATE TABLE s_extraction.rt_extraction_status (status_id integer NOT NULL DEFAULT nextval('s_dtnet.seq_common'::regclass), name character varying(50) NOT NULL, progress integer NOT NULL, CONSTRAINT rt_extraction_status_pkey PRIMARY KEY (status_id)); - -- CREATE TABLE s_extraction.rt_extraction_status_group (status_id integer NOT NULL, group_id integer NOT NULL, link_id integer NOT NULL DEFAULT nextval('s_dtnet.seq_common'::regclass), CONSTRAINT rt_extraction_status_group_pkey PRIMARY KEY (link_id), CONSTRAINT fk_extraction_status_group FOREIGN KEY (status_id) REFERENCES s_extraction.rt_extraction_status (status_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION); - -- CREATE TABLE s_extraction.extraction_history (history_id integer NOT NULL DEFAULT nextval('s_extraction.seq_common'::regclass), date timestamp with time zone NOT NULL, login character varying(50) NOT NULL, comment text NOT NULL, bo_id integer NOT NULL, CONSTRAINT extraction_history_pkey PRIMARY KEY (history_id), CONSTRAINT fk_extraction_history FOREIGN KEY (bo_id) REFERENCES s_extraction.extraction (bo_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION); - -- Vue basique pour vos objets WAB tenant compte de la restriction groupe état - --CREATE VIEW s_extraction.v_extraction AS SELECT extraction.* FROM s_extraction.extraction LEFT JOIN s_extraction.rt_extraction_status ON rt_extraction_status.status_id = extraction.status_id JOIN s_extraction.rt_extraction_status_group ON rt_extraction_status.status_id = rt_extraction_status_group.status_id WHERE (rt_extraction_status_group.group_id IN ( SELECT user_group.group_id FROM s_vitis.user_group LEFT JOIN s_vitis."user" ON user_group.user_id = "user".user_id WHERE "user".login::name = "current_user"())); - -- u_vitis est propriétaire de toutes vos tables - ALTER TABLE s_extraction.rt_extraction_status_group OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_format OWNER TO u_vitis; - ALTER TABLE s_extraction.v_extraction OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_coordsys OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_extraction_status OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_layer OWNER TO u_vitis; - ALTER TABLE s_extraction.rt_feature_model OWNER TO u_vitis; - ALTER TABLE s_extraction.extraction OWNER TO u_vitis; - ALTER TABLE s_extraction.version OWNER TO u_vitis; - -- u_vitis propriétaire sur les tables des objets WAB - --ALTER TABLE s_extraction.rt_extraction_status OWNER to u_vitis; - --ALTER TABLE s_extraction.rt_extraction_status_group OWNER to u_vitis; - --ALTER TABLE s_extraction.extraction_history OWNER to u_vitis; - -- Gestion des droits d'après les méthodes php saisies pour vos objets (annule et remplace) - REVOKE ALL ON TABLE s_extraction.rt_coordsys FROM extraction_admin; - REVOKE ALL ON TABLE s_extraction.v_extraction FROM extraction_user; - REVOKE ALL ON TABLE s_extraction.rt_format FROM extraction_admin; - REVOKE ALL ON TABLE s_extraction.rt_layer FROM extraction_admin; - GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE s_extraction.rt_coordsys TO extraction_admin; - GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE s_extraction.v_extraction TO extraction_user; - GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE s_extraction.rt_format TO extraction_admin; - GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE s_extraction.rt_layer TO extraction_admin; - -- Droits sur les tables des objets WAB - GRANT SELECT ON TABLE s_extraction.rt_extraction_status TO extraction_user; - GRANT SELECT ON TABLE s_extraction.rt_extraction_status_group TO extraction_user; - GRANT SELECT, INSERT ON TABLE s_extraction.extraction_history TO extraction_user; - - - UPDATE s_gtf.email_template SET subject=NULL, body=NULL, "to"=NULL, cc=NULL, cci=NULL, code='$logo = $this->aProperties[''ws_data_dir'']."/gtf/LOGO_AMP.jpg";' || chr(13) || '$base64 = base64_encode(file_get_contents($logo));' || chr(13) || '$image = ''<img src="data:image/png;base64,''.$base64.''">'';' || chr(13) || 'require_once("gtf_lib/gtf_object/Order.class.inc");' || chr(13) || 'require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || '$iBoId = $this->aObjects["oMessage"]->getBody(''bo_id'');' || chr(13) || '$sRequest = "SELECT * from s_extraction.extraction where bo_id = ".$iBoId;' || chr(13) || '$oPDOresult = $this->oBd->executeWithParams($sRequest, array());' || chr(13) || '$aBo = $this->oBd->ligneSuivante ($oPDOresult);' || chr(13) || '$iOrderId = $this->aObjects["oMessage"]->getBody(''order_id'');' || chr(13) || '$this->aObjects["oOrder"]= new orderLib($oBd, $iOrderId, $this->aObjects["oMessage"]->aProperties, "v_order");' || chr(13) || 'error_log( print_r($this->aObjects[''oOrder''], true));' || chr(13) || '$this->aObjects[''oUser''] = new User($oBd, $this->aObjects[''oOrder'']->aFields[''user_id''], $this->aObjects["oMessage"]->aProperties);' || chr(13) || '$this->to = $aBo[''email''];' || chr(13) || '$this->cc = $this->aObjects["oOrder"]->aFields[''email_notifications''];' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[PAYS D\''AIX - SIGAM] Demande N° ''.$aBo[''bo_id''].'' - Acte d\''Engagement pour l\''utilisation des données SIG'';' || chr(13) || '$this->body = $image.''<p>Bonjour</p>' || chr(13) || '<p></p>' || chr(13) || '<p>Suite à votre demande n°''.$aBo[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($aBo[''creation_date''])).'' pour l\''extraction des données, <u>merci de bien vouloir déposer l\''acte d\''engagement</u> ci-joint complété et signé, à l\''adresse suivante:<br/>' || chr(13) || '<A HREF="https://scpa430.cpa.fr/extraction">Application Extraction</A></p>' || chr(13) || '<p>Une fois réceptionné, l\''acte d\''engagement sera soumis à la validation du Territoire du Pays d\''Aix.<br/>' || chr(13) || 'Si celui-ci est validé, vous recevrez les données par mail (taille < 5Mo) ou par lien de téléchargement (taille > 5Mo).</p>' || chr(13) || '<p>Cordialement,</p>' || chr(13) || '<p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || 'Territoire du Pays d\''Aix<br/>' || chr(13) || 'Tel : 04 42 93 83 50<br/>' || chr(13) || 'Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>'';' || chr(13) || '// les résultats de moins de 5 Mo sont envoyés en pièce jointe' || chr(13) || ' if (filesize($this->aObjects["oOrder"]->aFields[''result_file''])> (5*1024*1024)){' || chr(13) || ' $this->body .= ''<p>Le résultat est disponible par téléchargement :<br/><a href="'' . $this->aObjects["oOrder"]->aFields[''result_url''] . ''">Télécharger le résultat</a></p>'';' || chr(13) || ' } else {' || chr(13) || ' $this->aAttachments[0] = $this->aObjects["oOrder"]->aFields[''result_file''];' || chr(13) || ' }' || chr(13) || 'error_log(print_r($this->aObjects["oOrder"]->aFields, true));', use_advanced='1', rt_emailcontext_id='gtf', attachment=NULL WHERE "name"='Email demandeur AE généré'; - UPDATE s_gtf.email_template SET subject=NULL, body=NULL, "to"=NULL, cc=NULL, cci=NULL, code='require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || 'require_once("vmlib/logUtil.inc");' || chr(13) || '$iBoId = $this->aObjects["oBusinessObject"]->aValues[''bo_id''];' || chr(13) || '$sUserLogin = $this->aObjects["oBusinessObject"]->aValues[''requestor''];' || chr(13) || '$sSql = ''SELECT user_id FROM s_framework.user WHERE login=\''''.$this->aObjects[''oBusinessObject'']->aValues[''requestor''].''\'''';' || chr(13) || '//writeToErrorLog($sSql);' || chr(13) || '$oResult = $oBd->execute($sSql);' || chr(13) || 'if(!$oBd->erreurRencontree) {' || chr(13) || ' if ($oBd->nombreLigne ($oResult) > 0) {' || chr(13) || ' $this->aObjects[''oUser''] = new User($oBd, $oBd->objetSuivant($oResult)->user_id, $this->aObjects["oBusinessObject"]->aProperties);' || chr(13) || ' }' || chr(13) || '}' || chr(13) || '//$this->to = ''sig@agglo-paysdaix.fr'';' || chr(13) || '$this->to = $this->aObjects[''oBusinessObject'']->aValues[''email''];' || chr(13) || '$this->cc = '''';' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[PAYS D\''AIX- SIGAM] Demande N° ''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' - Acte d\''engagement non valide'';' || chr(13) || '$this->body = ''<p>Bonjour,</p>' || chr(13) || ' <p>Suite à votre demande n°''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($this->aObjects[''oBusinessObject'']->aValues[''creation_date''])).'' pour l\''extraction des données, votre demande n\''a pas encore été validée pour la ou les raisons suivantes :<br/>'';' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''signed''] == "false"){' || chr(13) || ' $this->body .= '' - L\''acte d\''engagement n\''est pas signé<br/>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''identification_complete''] == "false"){' || chr(13) || ' $this->body .= '' - Le cadre d\''identification du dépositaire est incomplet<br/>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''definition_complete''] == "false"){' || chr(13) || ' $this->body .= '' - La définition des traitements pour l\''usage du cadastre est non renseignée<br/>'';' || chr(13) || '}' || chr(13) || 'error_log(print_r($this->aObjects[''oBusinessObject'']->aValues, true));' || chr(13) || '//$this->body .= ''<p>''.$this->aObjects[''oBusinessObject'']->aValues[''comment''].''</p>'';' || chr(13) || '$this->body .=''<p><u>Merci de bien vouloir déposer à nouveau l\''acte d\''engagement</u> à l\''adresse suivante :<br/>' || chr(13) || '<A HREF="https://scpa430.cpa.fr/extraction">Application Extraction</A></p>' || chr(13) || '<p>Une fois réceptionné, l\''acte d\''engagement sera soumis à la validation du Territoire du Pays d\''Aix.<br/>' || chr(13) || 'Si celui-ci est validé, vous recevrez les données par mail (taille < 5Mo) ou par lien de téléchargement (taille > 5Mo).</p>' || chr(13) || '<p>Cordialement,</p>' || chr(13) || '<p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || 'Territoire du Pays d\''Aix<br/>' || chr(13) || 'Tel : 04 42 93 83 50<br/>' || chr(13) || 'Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>'';' || chr(13) || '$this->aAttachments[0] = '''';' || chr(13) || '', use_advanced='1', rt_emailcontext_id='gtf', attachment=NULL WHERE "name"='Email demandeur AE à resoumettre'; - UPDATE s_gtf.email_template SET subject=NULL, body=NULL, "to"=NULL, cc=NULL, cci=NULL, code='require_once("gtf_lib/gtf_object/Order.class.inc");' || chr(13) || 'require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || '$iBoId = $this->aObjects["oMessage"]->getBody(''bo_id'');' || chr(13) || '$sRequest = "SELECT * from s_extraction.extraction where bo_id = ".$iBoId;' || chr(13) || '$oPDOresult = $this->oBd->executeWithParams($sRequest, array());' || chr(13) || '$aBo = $this->oBd->ligneSuivante ($oPDOresult);' || chr(13) || '$iOrderId = $this->aObjects["oMessage"]->getBody(''order_id'');' || chr(13) || '$this->aObjects["oOrder"]= new OrderLib($oBd, $iOrderId, $this->aObjects["oMessage"]->aProperties, "v_order");' || chr(13) || '$this->aObjects[''oUser''] = new User($oBd, $this->aObjects[''oOrder'']->aFields[''user_id''], $this->aObjects["oMessage"]->aProperties);' || chr(13) || '$this->to = ''sig.paysdaix@ampmetropole.fr'';' || chr(13) || '$this->cc = '''';' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[GTF] - Demande N° ''.$aBo[''bo_id''].'' - Extraction des données'';' || chr(13) || '$this->body = ''<p>Les données concernant la demande n°''.$aBo[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($aBo[''creation_date''])).'' ont été envoyées au demandeur.</p>' || chr(13) || '<p>Cordialement,</p>' || chr(13) || '<p>L\''application d\''extraction de données de GTF</p>'';' || chr(13) || '', use_advanced='1', rt_emailcontext_id='gtf', attachment=NULL WHERE "name"='Email controleur données extraites'; - UPDATE s_gtf.email_template SET subject=NULL, body=NULL, "to"=NULL, cc=NULL, cci=NULL, code='$logo = $this->aProperties[''ws_data_dir'']."/gtf/LOGO_AMP.jpg";' || chr(13) || '$base64 = base64_encode(file_get_contents($logo));' || chr(13) || '$image = ''<img src="data:image/png;base64,''.$base64.''">'';' || chr(13) || 'if ($this->aObjects["oOrder"]->aFields[''order_status_id''] == 3) {' || chr(13) || ' $this->to = '''' . $this->aObjects["oOrder"]->getUser()->aFields[''email''] . '''';' || chr(13) || ' $this->cc = '''' . $this->aObjects["oOrder"]->aFields[''email_notifications''] . '''';' || chr(13) || ' $this->cci = '''';' || chr(13) || ' $this->subject = ''[Pays d\''Aix - SIGAM] - Données extraites'';' || chr(13) || ' $this->body = $image.''<p>Bonjour,</p>'';' || chr(13) || ' $this->body .=''<p></p><p>Les données correspondant à votre demande en date du ''.date(''d/m/Y'',strtotime($this->aObjects["oOrder"]->aFields[''order_date''])).'' sont disponibles '';' || chr(13) || ' if (filesize($this->aObjects["oOrder"]->aFields[''result_file''])> 5242880){' || chr(13) || ' $this->body .= ''sur le lien de téléchargement suivant :<br/><a href="''.$this->aObjects["oOrder"]->aFields[''result_url''] . ''">Télécharger le résultat</a></p>'';' || chr(13) || ' } else {' || chr(13) || ' $this->body .= ''en pièce jointe.</p>'';' || chr(13) || ' $this->aAttachments[0] = $this->aObjects["oOrder"]->aFields[''result_file''];' || chr(13) || ' }' || chr(13) || ' $this->body .=''<p>Vous en souhaitant bonne réception,</p>' || chr(13) || ' <p>Cordialement,</p>' || chr(13) || ' <p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || ' Conseil de Territoire du Pays d\''Aix<br/>' || chr(13) || ' Tel : 04 42 93 83 50<br/>' || chr(13) || ' Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>' || chr(13) || '' || chr(13) || ' '';' || chr(13) || '}else{' || chr(13) || ' $this->to = '''' . $this->aObjects["oOrder"]->getUser()->aFields[''email''] . '''';' || chr(13) || ' $this->subject = ''[GTF]-'' . $this->aObjects["oOrder"]->getWorkspace()->aFields[''name''] . '' - Echec du traitement'';' || chr(13) || ' $this->body = $image.''<p>Bonjour,</p>'';' || chr(13) || ' $this->body .= ''<p>La demande n°'' . $this->aObjects["oOrder"]->aFields[''order_id''] . '' pour le traitement <strong>'' . $this->aObjects["oOrder"]->getWorkspace()->aFields[''name''] . ''</strong> n\''a pu être exécutée correctement suite à une erreur.<br/> Veuillez contactez votre administrateur.<br/>'';' || chr(13) || ' $this->aAttachments[0] = $this->aObjects["oOrder"]->aFields[''log_file''];' || chr(13) || '}', use_advanced='1', rt_emailcontext_id='gtf', attachment=NULL WHERE "name"='public'; - UPDATE s_gtf.email_template SET subject=NULL, body=NULL, "to"=NULL, cc=NULL, cci=NULL, code='require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || 'require_once("vmlib/logUtil.inc");' || chr(13) || '$iBoId = $this->aObjects["oBusinessObject"]->aValues[''bo_id''];' || chr(13) || '' || chr(13) || '//$this->to = ''sig.paysdaix@ampmetropole.fr'';' || chr(13) || '$this->to = ''sofian.pujo@veremes.com'';' || chr(13) || '$this->cc = '''';' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[GTF] - Demande N° ''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' - Dépôt de l\''Acte d\''Engagement à valider'';' || chr(13) || '$this->body = ''<p>Bonjour,</p>' || chr(13) || ' <p> </p>' || chr(13) || ' <p>L\''acte d\''engagement correspondant à la demande n°''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($this->aObjects[''oBusinessObject'']->aValues[''creation_date''])).'' a été déposé sur le serveur par le demandeur.</p>' || chr(13) || ' <p></p>' || chr(13) || ' <p>Cordialement,</p>' || chr(13) || ' <p> </p>' || chr(13) || ' <p>L\''application d\''extraction de données de GTF</p>'';' || chr(13) || 'error_log($this->body);' || chr(13) || '$this->aAttachments[0] = '''';' || chr(13) || '', use_advanced='1', rt_emailcontext_id='gtf', attachment=NULL WHERE "name"='Email contrôleur AE soumis'; - UPDATE s_gtf.email_template SET subject=NULL, body=NULL, "to"=NULL, cc=NULL, cci=NULL, code='require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || 'require_once("vmlib/logUtil.inc");' || chr(13) || '$iBoId = $this->aObjects["oBusinessObject"]->aValues[''bo_id''];' || chr(13) || '$sUserLogin = $this->aObjects["oBusinessObject"]->aValues[''requestor''];' || chr(13) || '$sSql = ''SELECT user_id FROM s_vitis.user WHERE login=\''''.$this->aObjects[''oBusinessObject'']->aValues[''requestor''].''\'''';' || chr(13) || '//writeToErrorLog($sSql);' || chr(13) || '$oResult = $oBd->execute($sSql);' || chr(13) || '/*if(!$oBd->erreurRencontree) {' || chr(13) || ' if ($oBd->nombreLigne ($oResult) > 0) {' || chr(13) || ' $this->aObjects[''oUser''] = new User($oBd, $oBd->objetSuivant($oResult)->user_id, $this->aObjects["oBusinessObject"]->aProperties);' || chr(13) || ' }' || chr(13) || '}*/' || chr(13) || '//$this->to = ''sig.paysdaix@ampmetropole.fr'';' || chr(13) || 'error_log(print_r($this->aObjects[''oBusinessObject''], true));' || chr(13) || '//$this->to = $this->aObjects[''oBusinessObject'']->aValues[''email''];' || chr(13) || '$this->cc = '''';' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[PAYS D\''AIX - SIGAM] Demande N° ''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' - Rejet de votre demande d\''extraction de données'';' || chr(13) || '$this->body = ''<p>Bonjour,</p>' || chr(13) || ' <p>Suite à votre demande n°''.$this->aObjects[''oBusinessObject'']->aValues[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($this->aObjects[''oBusinessObject'']->aValues[''creation_date''])).'' pour l\''extraction des données, votre demande a été rejetée pour la ou les raisons suivantes :<br/>'';' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''signed''] == "false"){' || chr(13) || ' $this->body .= '' - L\''acte d\''engagement n\''est pas signé<br/>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''accepted_by_cpa''] == "false"){' || chr(13) || ' $this->body .= '' - La CPA ne valide pas l\''usage décrit pour les données du cadastre<br/>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''identification_complete''] == "false"){' || chr(13) || ' $this->body .= '' - Le cadre d\''identification du dépositaire est incomplet</p>'';' || chr(13) || '}' || chr(13) || 'if($this->aObjects[''oBusinessObject'']->aValues[''definition_complete''] == "false"){' || chr(13) || ' $this->body .= '' - La définition des traitements pour l\''usage du cadastre est non renseignée<br/>'';' || chr(13) || '}' || chr(13) || '$this->body .= $this->aObjects[''oBusinessObject'']->aValues[''comment''].''<br/>'';' || chr(13) || '$this->body .=''<p>Cordialement,</p>' || chr(13) || '<p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || 'Territoire du Pays d\''Aix<br/>' || chr(13) || 'Tel : 04 42 93 83 50<br/>' || chr(13) || 'Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>'';' || chr(13) || '$this->aAttachments[0] = '''';' || chr(13) || '', use_advanced='1', rt_emailcontext_id='gtf', attachment=NULL WHERE "name"='Email demandeur Extraction refusée'; - UPDATE s_gtf.email_template SET subject=NULL, body=NULL, "to"=NULL, cc=NULL, cci=NULL, code='require_once("gtf_lib/gtf_object/Order.class.inc");' || chr(13) || 'require_once("gtf_lib/gtf_object/User.class.inc");' || chr(13) || '$iBoId = $this->aObjects["oMessage"]->getBody(''bo_id'');' || chr(13) || '$sRequest = "SELECT * from s_extraction.extraction where bo_id = ".$iBoId;' || chr(13) || '$oPDOresult = $this->oBd->executeWithParams($sRequest, array());' || chr(13) || '$aBo = $this->oBd->ligneSuivante ($oPDOresult);' || chr(13) || '$iOrderId = $this->aObjects["oMessage"]->getBody(''order_id'');' || chr(13) || '$this->aObjects["oOrder"]= new OrderLib($oBd, $iOrderId, $this->aObjects["oMessage"]->aProperties, "v_order");' || chr(13) || '$sUserLogin = $aBo[''requestor''];' || chr(13) || '$sSql = ''SELECT user_id FROM s_framework.user WHERE login=\''''.$this->aObjects[''oBusinessObject'']->aValues[''requestor''].''\'''';' || chr(13) || '$oResult = $oBd->execute($sSql);' || chr(13) || 'if(!$oBd->erreurRencontree) {' || chr(13) || ' if ($oBd->nombreLigne ($oResult) > 0) {' || chr(13) || ' $this->aObjects[''oUser''] = new User($oBd, $oBd->objetSuivant($oResult)->user_id, $this->aObjects["oMessage"]->aProperties);' || chr(13) || ' }' || chr(13) || '}' || chr(13) || '$this->to = $aBo[''email''];' || chr(13) || '$this->cc = $this->aObjects["oOrder"]->aFields[''email_notifications''];' || chr(13) || '$this->cci = '''';' || chr(13) || '$this->subject = ''[PAYS D\''AIX - SIGAM] Demande N° ''.$aBo[''bo_id''].'' - Données SIG extraites'';' || chr(13) || '$this->body = ''<p>Bonjour</p>' || chr(13) || '<p></p><p>Les données correspondant à votre demande n°''.$aBo[''bo_id''].'' en date du ''.date(''d/m/Y'',strtotime($aBo[''creation_date''])).'' sont disponibles '';' || chr(13) || ' if (filesize($this->aObjects["oOrder"]->aFields[''result_file''])> 5242880){' || chr(13) || ' $this->body .= ''sur le lien de téléchargement suivant :<br/><a href="https://sigdata.agglo-paysdaix.fr/public/gtf/''.$this->aObjects["oOrder"]->aFields[''result_url''] . ''">Télécharger le résultat</a></p>'';' || chr(13) || ' } else {' || chr(13) || ' $this->body .= ''en pièce jointe.</p>'';' || chr(13) || ' $this->aAttachments[0] = $this->aObjects["oOrder"]->aFields[''result_file''];' || chr(13) || ' }' || chr(13) || '$this->body .=''<p>Vous en souhaitant bonne réception,</p>' || chr(13) || '<p>Cordialement,</p>' || chr(13) || '<p>Le service d\''Information Géographique et Applicatifs Métiers (SIGAM)<br/>' || chr(13) || 'Terriroire du Pays d\''Aix<br/>' || chr(13) || 'Tel : 04 42 93 83 50<br/>' || chr(13) || 'Mail : <a href="mailto:sig.paysdaix@ampmetropole.fr">sig.paysdaix@ampmetropole.fr</a> </p>' || chr(13) || '' || chr(13) || ''';' || chr(13) || '// les résultats de moins de 5 Mo sont envoyés en pièce jointe' || chr(13) || ' ' || chr(13) || '', use_advanced='1', rt_emailcontext_id='gtf', attachment=NULL WHERE "name"='Email demandeur données extraites'; - DELETE FROM s_gtf.messageclass_action WHERE messageclass LIKE 'extraction_%'; - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'AE Généré','BoAction',0,'bo_id_attribute=''bo_id''|method=''trGenerer''|class=''Extractions''|module=''extraction'''); - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'AE Généré','EmailAction',1,'template_id = ' || (SELECT email_template_id FROM s_gtf.email_template WHERE name = 'Email demandeur AE généré')); - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'Extraction Aix','EmailAction',1,'template_id = ' || (SELECT email_template_id FROM s_gtf.email_template WHERE name = 'Email controleur données extraites')); - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'Extraction Aix','EmailAction',2,'template_id = ' || (SELECT email_template_id FROM s_gtf.email_template WHERE name = 'Email demandeur données extraites')); - INSERT INTO s_gtf.messageclass_action (messageclass_action_id, messageclass, actionclass, index, parameters) VALUES ((SELECT nextval('s_gtf.seq_common'::regclass)),'Extraction Aix','BoAction',0,'bo_id_attribute=''bo_id''|method=''trTerminerExtraction''|class=''Extractions''|module=''extraction'''); - --Partie s_vitis généré par WAB le 22/05/2018 à 09:09:31 - DELETE FROM s_vitis.vm_section WHERE label_id ~ '^extraction_([0-9]+)$'; - DELETE FROM s_vitis.vm_table_field WHERE label_id ~ '^extraction_([0-9]+)$'; - DELETE FROM s_vitis.vm_table_button WHERE label_id ~ '^extraction_([0-9]+)$'; - DELETE FROM s_vitis.vm_module WHERE module_id='extraction'; - DELETE FROM s_vitis.vm_string WHERE string_id ~ '^extraction_([0-9]+)$'; - INSERT INTO s_vitis.vm_module (module_id, description, version, label) VALUES ('extraction','Module Extraction CG34',0.1,'Module Extraction'); - INSERT INTO s_vitis.group (group_id, name) SELECT (SELECT nextval('s_vitis.seq_common'::regclass)), 'demandeur' WHERE NOT EXISTS (SELECT group_id FROM s_vitis.group WHERE name='demandeur'); - INSERT INTO s_vitis.group (group_id, name) SELECT (SELECT nextval('s_vitis.seq_common'::regclass)), 'controleur' WHERE NOT EXISTS (SELECT group_id FROM s_vitis.group WHERE name='controleur'); - INSERT INTO s_vitis.privileges (rolname, description) SELECT 'extraction_admin', 'administrateur extraction' WHERE NOT EXISTS (SELECT rolname FROM s_vitis.privileges WHERE rolname='extraction_admin'); - INSERT INTO s_vitis.privileges (rolname, description) SELECT 'extraction_user', 'utilisateur extraction' WHERE NOT EXISTS (SELECT rolname FROM s_vitis.privileges WHERE rolname='extraction_user'); - SELECT s_vitis.create_role_if_not_exists('extraction_admin', 'NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION'); - SELECT s_vitis.create_role_if_not_exists('extraction_user', 'NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Section General', 'extraction_1'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field bo_id', 'extraction_4'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field status', 'extraction_6'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('objet extraction_extraction', 'extraction_0'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field progress_level', 'extraction_7'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Supprimer', 'extraction_2'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field company', 'extraction_8'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Ajout', 'extraction_3'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field requestor', 'extraction_5'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field layers', 'extraction_9'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('objet extraction_coordsys', 'extraction_10'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Section General', 'extraction_11'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Supprimer', 'extraction_12'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Ajout', 'extraction_13'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('objet extraction_format', 'extraction_14'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Section General', 'extraction_15'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Supprimer', 'extraction_16'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Ajout', 'extraction_17'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('objet extraction_layer', 'extraction_18'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Section General', 'extraction_19'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Supprimer', 'extraction_20'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Ajout', 'extraction_21'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field coordsys_id', 'extraction_22'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field coordsys', 'extraction_23'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field format_id', 'extraction_24'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field format', 'extraction_25'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field use_for_raster', 'extraction_26'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field use_for_vector', 'extraction_27'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field layer_id', 'extraction_28'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field layer', 'extraction_29'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field category', 'extraction_30'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field restriction', 'extraction_31'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field unused_attributes', 'extraction_32'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Section General', 'extraction_33'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Supprimer', 'extraction_34'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Ajout', 'extraction_35'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Section General', 'extraction_36'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Supprimer', 'extraction_37'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Ajout', 'extraction_38'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Section General', 'extraction_39'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Supprimer', 'extraction_40'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Ajout', 'extraction_41'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Section General', 'extraction_42'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Supprimer', 'extraction_43'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Boutton Ajout', 'extraction_44'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field bo_id', 'extraction_45'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field status', 'extraction_46'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field requestor', 'extraction_47'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field company', 'extraction_48'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field layers', 'extraction_49'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field coordsys_id', 'extraction_50'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field coordsys', 'extraction_51'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field format_id', 'extraction_52'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field format', 'extraction_53'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field use_for_raster', 'extraction_54'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field use_for_vector', 'extraction_55'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field layer_id', 'extraction_56'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field layer', 'extraction_57'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field category', 'extraction_58'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field restriction', 'extraction_59'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('field unused_attributes', 'extraction_60'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('section extractionConfig', 'extraction_61'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_1','fr','Informations générales'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_1','en','General'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_4','fr','ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_4','en','ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_6','en','Status'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_6','fr','Etat'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_0','en','Extraction'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_0','fr','Extraction'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_7','en','Progress level'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_7','fr','Avancement'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_2','en','Supprimer les plans'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_2','fr','Supprimer les plans'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_8','en','Company'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_8','fr','Organisme'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_3','en','Ajouter une extraction'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_3','fr','Ajouter une extraction'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_5','fr','Demandeur'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_5','en','Demandeur'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_9','en','Layers'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_9','fr','Couches'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_10','fr','Systèmes de coordonnées'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_10','en','Coordinate systems'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_11','fr','Informations générales'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_11','en','General'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_12','fr','Supprimer les systèmes de coordonnées'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_12','en','Delete coordinate systems'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_13','fr','Ajouter un système de coordonnées'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_13','en','Add coordinate systems'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_14','fr','Formats'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_14','en','Formats'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_15','fr','Informations générales'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_15','en','General'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_16','fr','Supprimer les formats'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_16','en','Delete formats'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_17','fr','Ajouter un format'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_17','en','Add format'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_18','fr','Couches'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_18','en','Layers'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_19','fr','Informations générales'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_19','en','General'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_20','fr','Supprimer les couches'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_20','en','Delete layers'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_21','fr','Ajouter une couche'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_21','en','Add layer'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_22','fr','ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_22','en','ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_23','fr','Nom'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_23','en','Name'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_24','en','ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_24','fr','ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_25','fr','Nom'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_25','en','Name'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_26','fr','Raster'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_26','en','Raster'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_27','fr','Vecteur'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_27','en','Vector'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_28','fr','ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_28','en','ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_29','fr','Nom'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_29','en','Name'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_30','fr','Catégorie'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_30','en','Category'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_31','fr','Restriction'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_31','en','Restriction'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_32','fr','Attributs inutilisés'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('extraction_32','en','Unused attributes'); - INSERT INTO s_vitis.vm_mode (mode_id, module_id) VALUES ('extraction','extraction'); - INSERT INTO s_vitis.vm_mode (mode_id, module_id) VALUES ('extraction_ref','extraction'); - INSERT INTO s_vitis.vm_mode_rolname (index,mode_id, rolname) VALUES (0,'extraction','extraction_user'); - INSERT INTO s_vitis.vm_mode_rolname (index,mode_id, rolname) VALUES (1,'extraction_ref','extraction_admin'); - INSERT INTO s_vitis.vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)),'loadList()', 1, 'extraction_ref', 'extraction_14', 'extraction/formats', 'editSectionForm', 'showSectionForm', 'format_id', 'ASC', 'extraction_format'); - INSERT INTO s_vitis.vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)),'loadList()', 0, 'extraction_ref', 'extraction_10', 'extraction/coordsyss', 'editSectionForm', 'showSectionForm', 'coordsys_id', 'ASC', 'extraction_coordsys'); - INSERT INTO s_vitis.vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)),'loadList()', 2, 'extraction_ref', 'extraction_18', 'extraction/layers', 'editSectionForm', 'showSectionForm', 'layer_id', 'ASC', 'extraction_layer'); - INSERT INTO s_vitis.vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)),'loadList()', 0, 'extraction', 'extraction_0', 'extraction/extractions', 'editSectionForm', 'showSectionForm', 'bo_id', 'ASC', 'extraction_extraction'); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('add_smallFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'AddSectionForm', 'extraction_21', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer')); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('deleteFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'DeleteSelection', 'extraction_2', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction')); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('add_smallFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'AddSectionForm', 'extraction_3', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction')); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('deleteFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'DeleteSelection', 'extraction_12', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys')); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('add_smallFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'AddSectionForm', 'extraction_13', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys')); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('deleteFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'DeleteSelection', 'extraction_16', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format')); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('add_smallFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'AddSectionForm', 'extraction_17', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format')); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('deleteFlexigrid',(SELECT nextval('s_vitis.seq_vm'::regclass)), 'DeleteSelection', 'extraction_20', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer'), (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'bo_id', '1', '1', 0, 50, 'left', 'extraction_4', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'status', '1', '1', 2, 150, 'left', 'extraction_6', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'progress_level', '1', '1', 4, 150, 'center', 'extraction_7', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), '<div data-app-navbar data-mode="info" data-hidevalue data-striped data-active></div>',(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'company', '1', '1', 3, 200, 'left', 'extraction_8', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'requestor', '1', '1', 1, 200, 'left', 'extraction_5', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'layers', '1', '1', 5, 60, 'left', 'extraction_9', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), '<div data-app-extraction-layers-column="{{row.entity[col.field]}}"></div>',(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'coordsys_id', '1', '1', 0, 200, 'left', 'extraction_22', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'coordsys', '1', '1', 1, 200, 'left', 'extraction_23', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'format_id', '1', '1', 0, 100, 'left', 'extraction_24', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'format', '1', '1', 1, 200, 'left', 'extraction_25', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'use_for_raster', '1', '1', 2, 100, 'left', 'extraction_26', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format'), '<div data-app-set-boolean-icon-column="{{row.entity[col.field]}}"></div>',(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'use_for_vector', '1', '1', 3, 100, 'left', 'extraction_27', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format'), '<div data-app-set-boolean-icon-column="{{row.entity[col.field]}}"></div>',(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'layer_id', '1', '1', 0, 150, 'left', 'extraction_28', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'layer', '1', '1', 1, 150, 'left', 'extraction_29', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'category', '1', '1', 2, 150, 'left', 'extraction_30', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'restriction', '1', '1', 3, 100, 'left', 'extraction_31', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer'), NULL,(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, ressource_id, template, tab_id) VALUES ((SELECT nextval('s_vitis.seq_vm'::regclass)), 'unused_attributes', '1', '1', 4, 110, 'left', 'extraction_32', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer'), '<div data-app-extraction-ref-unused-attributes-column="{{row.entity[col.field]}}"></div>',(SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer')); - INSERT INTO s_vitis.vm_section (label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ('extraction_15', 'general', 1, 'Javascript:loadSectionForm', (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format'), 'workspaceListTpl.html', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_format'), 'extraction'); - INSERT INTO s_vitis.vm_section (label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ('extraction_11', 'general', 1, 'Javascript:loadSectionForm', (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys'), 'workspaceListTpl.html', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_coordsys'), 'extraction'); - INSERT INTO s_vitis.vm_section (label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ('extraction_19', 'general', 1, 'Javascript:loadSectionForm', (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer'), 'workspaceListTpl.html', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_layer'), 'extraction'); - INSERT INTO s_vitis.vm_section (label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ('extraction_1', 'general', 1, 'Javascript:loadSectionForm', (SELECT tab_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), 'workspaceListTpl.html', (SELECT ressource_id FROM s_vitis.vm_tab WHERE vm_tab.name = 'extraction_extraction'), 'extraction'); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','START', 0); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','Nouveau', 10); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','AE Généré', 30); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','AE Soumis', 40); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','AE Demandé', 20); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','Dépôt terminé', 100); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','Fichier déposé', 90); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','Autorisée', 60); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','Fichier accepté', 100); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','Fichier invalidé', 80); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','Extraction terminée', 80); - SELECT s_vitis.wabInsertState('s_extraction', 'rt_extraction_status','Refusée', 100); - TRUNCATE s_extraction.rt_extraction_status_group; - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='START'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 1); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Nouveau'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 2); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='AE Demandé'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 3); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='AE Généré'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 4); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='AE Soumis'), (SELECT group_id FROM s_vitis."group" WHERE "name"='controleur'), 5); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='AE Soumis'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 6); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Autorisée'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 7); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Autorisée'), (SELECT group_id FROM s_vitis."group" WHERE "name"='controleur'), 8); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Refusée'), (SELECT group_id FROM s_vitis."group" WHERE "name"='controleur'), 9); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Refusée'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 10); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Extraction terminée'), (SELECT group_id FROM s_vitis."group" WHERE "name"='controleur'), 11); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Fichier déposé'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 12); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Fichier invalidé'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 13); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Fichier accepté'), (SELECT group_id FROM s_vitis."group" WHERE "name"='demandeur'), 14); - INSERT INTO s_extraction.rt_extraction_status_group (status_id, group_id, link_id) VALUES ((SELECT status_id FROM s_extraction.rt_extraction_status WHERE "name"='Dépôt terminé'), (SELECT group_id FROM s_vitis."group" WHERE "name"='controleur'), 15); - - ]]> - </code> - </query> - </queriesCollection> -</sqlQueries> \ No newline at end of file diff --git a/src/module_extraction/web_service/ws/Coordsys.class.inc b/src/module_extraction/web_service/ws/Coordsys.class.inc deleted file mode 100755 index 7e76be5b1486ecf62b8a03fe5ce65bba4de05df2..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Coordsys.class.inc +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc'; - -/** - * \file Coordsys.class.inc - * \class Coordsys - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Coordsys php class - * - * This class defines operation for one Coordsys - * - */ -class Coordsys extends ExtractionExtraction { - - public $oError; - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false){ - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - -/** - * @SWG\Get(path="/coordsyss/{id_coordsys}", - * tags={"Coordsyss"}, - * summary="Get Coordsys", - * description="Request to get Coordsys by id", - * operationId="GET", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="id_coordsys", - * in="path", - * description="id_coordsys", - * required=true, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="Coordsys Response", - * @SWG\Schema(ref="#/definitions/coordsyss") - * ) - * ) - */ - - /** - * get informations about mode - */ - function GET() { - $this->aFields = $this->getFields($this->aProperties['schema_extraction'], "rt_coordsys", "coordsys_id"); - } - -/** - * delete a Point_situation - */ - function DELETE() { - $this->oConnection->oBd->delete($this->aProperties['schema_extraction'], 'rt_coordsys', 'coordsys_id', $this->aValues["my_vitis_id"], 'integer'); - if ($this->oConnection->oBd->enErreur()) { - $this->oError = new Error(1, $this->oConnection->oBd->getBDMessage()); - } else { - $this->aFields["coordsys_id"] = $this->aValues["my_vitis_id"]; - } - } - -} - -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/ws/Coordsyss.class.inc b/src/module_extraction/web_service/ws/Coordsyss.class.inc deleted file mode 100755 index 2ff9940840a6c6c2a87cf03bbb871a550f48f449..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Coordsyss.class.inc +++ /dev/null @@ -1,268 +0,0 @@ -<?php - -/** - * \file Coordsyss.class.inc - * \class Coordsyss - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Coordsyss php class - * - * This class defines Rest Api to Vitis Coordsyss - * - */ -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once 'Coordsys.class.inc'; - - -class Coordsyss extends ExtractionExtraction { - /** - * @SWG\Definition( - * definition="/coordsyss", - * allOf={ - * @SWG\Schema(ref="#/definitions/coordsyss") - * } - * ) - * * @SWG\Tag( - * name="Coordsyss", - * description="Operations about Coordsyss" - * ) - */ - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false){ - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - -/** - * @SWG\Get(path="/coordsyss", - * tags={"Coordsyss"}, - * summary="Get Coordsyss", - * description="Request to get Coordsyss", - * operationId="GET", - * produces={"application/xml", "application/json", "application/x-vm-json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="order_by", - * in="query", - * description="list of ordering fields", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="sort_order", - * in="query", - * description="sort_order", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="limit", - * in="query", - * description="number of element", - * required=false, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="offset", - * in="query", - * description="index of first element", - * required=false, - * type="string", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="filter", - * in="query", - * description="filter results", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="distinct", - * in="query", - * description="delete duplicates", - * required=false, - * type="boolean" - * ), - * @SWG\Response( - * response=200, - * description="coordsys Response", - * @SWG\Schema(ref="#/definitions/coordsyss") - * ) - * ) - */ - - /** - * get Coordsyss - * @return Coordsyss - */ - function GET() { - $aReturn = $this->genericGet($this->aProperties['schema_extraction'], "rt_coordsys", "coordsys_id"); - $sMessage = $aReturn['sMessage']; - return $sMessage; - } - -/** - * @SWG\Post(path="/coordsyss", - * tags={"Coordsyss"}, - * summary="Add coordsys", - * description="Request to add Coordsyss", - * operationId="POST", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="coordsys Response", - * @SWG\Schema(ref="#/definitions/coordsyss") - * ) - * ) - */ - - /** - * insert coordsys - * @return id of the coordsys created - */ - function POST() { - $aReturn = $this->genericPost($this->aProperties['schema_extraction'], 'rt_coordsys', '', 'coordsys_id'); - return $aReturn['sMessage']; - } - -/** - * @SWG\Put(path="/coordsyss/{id_coordsys}", - * tags={"Coordsyss"}, - * summary="update Coordsyss", - * description="Request to update Coordsyss", - * operationId="PUT", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="Coordsys token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_coordsys", - * in="path", - * description="id of the Coordsyss", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/coordsyss") - * ) - * ) - */ - - /** - * update coordsyss - * @return id of coordsyss updated or error object if a coordsyss is not updated - */ - function PUT() { - $aReturn = $this->genericPut($this->aProperties['schema_extraction'], 'rt_coordsys', 'coordsys_id'); - - return $aReturn['sMessage']; - } - -/** - * @SWG\Delete(path="/coordsyss", - * tags={"Coordsyss"}, - * summary="delete Coordsyss", - * description="Request to delete Coordsyss", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="idList", - * in="query", - * description="id of the coordsys", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="coordsys Response", - * @SWG\Schema(ref="#/definitions/coordsyss") - * ) - * ) - */ - /** - * @SWG\Delete(path="/coordsyss/{id_coordsys}", - * tags={"Coordsyss"}, - * summary="delete Coordsyss", - * description="Request to delete Coordsyss", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="Coordsys token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_coordsys", - * in="path", - * description="id of the Coordsyss", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/coordsyss") - * ) - * ) - */ - - /** - * delete coordsyss - * @return id of coordsyss deleted or error object if a coordsyss is not deleted - */ - function DELETE() { - $aReturn = $this->genericDelete($this->aProperties['schema_extraction'], 'rt_coordsys', 'coordsys_id'); - return $aReturn['sMessage']; - } - - -} - -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/ws/Extraction.class.inc b/src/module_extraction/web_service/ws/Extraction.class.inc deleted file mode 100755 index f1c76f9da80592270eb44d1dcf5a400fcd8fd4b7..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Extraction.class.inc +++ /dev/null @@ -1,147 +0,0 @@ -<?php - -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once __DIR__. '/../../class/vitis_lib/Connection.class.inc'; - -/** - * \file Extraction.class.inc - * \class Extraction - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Extraction php class - * - * This class defines operation for one Extraction - * - */ -class Extraction extends ExtractionExtraction -{ - - public $oError; - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - public function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) - { - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - -/** - * @SWG\Get(path="/extractions/{id_extraction}", - * tags={"Extractions"}, - * summary="Get Extraction", - * description="Request to get Extraction by id", - * operationId="GET", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="id_extraction", - * in="path", - * description="id_extraction", - * required=true, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="Extraction Response", - * @SWG\Schema(ref="#/definitions/extractions") - * ) - * ) - */ - - /** - * get informations about mode - */ - public function GET() - { - require $this->sRessourcesFile; - $this->aFields = $this->getFields($this->aProperties['schema_extraction'], "v_extraction", "bo_id"); - // Url vers l'acte d'engagement. - if (!empty($this->aFields['ae'])) { - $this->aFields['ae'] = $this->aProperties['web_server_name'] . '/' . $this->aProperties['ws_data_alias'] . '/extraction/extraction_extraction_extraction/documents/' . $this->aValues["my_vitis_id"] . '/ae/' . $this->aFields['ae']; - } - - // Date au format Français. - if ($this->aProperties["language"] == 'fr') { - $oDate = new DateTime($this->aFields['creation_date']); - $this->aFields['creation_date'] = $oDate->format('d/m/Y'); - } - - // Libellés du champ "Commune". - if (!empty($this->aFields['id_com'])) { - //On donne les paramètres à remplacer dans la requête - $aSQLParams = array( - 'id_com' => array('value' => $this->aFields['id_com'], 'type' => 'group'), - ); - - $sSql = $aSql['getCommuneLabel']; - - $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, $aSQLParams); - if (!$this->oConnection->oBd->enErreur()) { - while ($aLine = $this->oConnection->oBd->ligneSuivante($oPDOresult)) { - $aCommune[] = $aLine['nom_com']; - } - $this->aFields['id_com_label'] = implode(',', $aCommune); - } - } - - // Libellés du champ "Conseil de Territoire". - if (!empty($this->aFields['id_conseil'])) { - - $aSQLParams = array( - 'id_conseil' => array('value' => $this->aFields['id_conseil'], 'type' => 'group'), - ); - //$sSql = str_replace('[id_conseil]', str_replace('|', ',', $this->aFields['id_conseil']), $aSql['getConseilLabel']); - $aConseil = []; - $sSql = $aSql['getConseilLabel']; - $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, $aSQLParams); - if (!$this->oConnection->oBd->enErreur()) { - while ($aLine = $this->oConnection->oBd->ligneSuivante($oPDOresult)) { - $aConseil[] = $aLine['nom_epci']; - } - if (is_array($aConseil)) { - $this->aFields['id_conseil_label'] = implode(',', $aConseil); - } else { - $this->aFields['id_conseil_label'][0] = $aConseil; - } - } - } - - // Nom de l'état de l'extraction. - $this->aFields['status_name'] = $this->aFields['status']; - } - -/** - * delete a Point_situation - */ - public function DELETE() - { - $this->oConnection->oBd->delete($this->aProperties['schema_extraction'], 'extraction', 'bo_id', $this->aValues["my_vitis_id"], 'integer'); - if ($this->oConnection->oBd->enErreur()) { - $this->oError = new Error(1, $this->oConnection->oBd->getBDMessage()); - } else { - $this->aFields["bo_id"] = $this->aValues["my_vitis_id"]; - } - } - -} diff --git a/src/module_extraction/web_service/ws/ExtractionExtraction.class.inc b/src/module_extraction/web_service/ws/ExtractionExtraction.class.inc deleted file mode 100755 index 770729dd15262e596170ea80a2079aac314417a4..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/ExtractionExtraction.class.inc +++ /dev/null @@ -1,44 +0,0 @@ -<?php - require_once __DIR__ . "/../../class/vitis_lib/DbClass.class.inc"; - require_once __DIR__ . '/../vitis/Vitis.class.inc'; -require_once 'vmlib/logUtil.inc'; - -class ExtractionExtraction extends Vitis -{ - - //Chemin du fichier de ressources contenant les requêtes SQL - public $sRessourcesFile = 'ws/extraction/ExtractionExtraction.class.sql.inc'; - - /** - * Upload un document dans le ws_data du module Extraction. - * @param type $sIndex - * @param type $sFolder - */ - public function uploadDocument($sIndex, $sFolder) - { - // Crée le répertoire si inexistant. - $sDirPath = $this->aProperties['ws_data_dir'] . '/extraction/' . $sFolder . '/documents/' . $this->aValues["my_vitis_id"] . '/' . $sIndex . '/'; - if (!is_dir($sDirPath)) { - mkdir($sDirPath, 0777, true); - } - - // Ecrit le fichier. - if (!empty($_FILES[$sIndex])) { - $sErrorMessage = uploadFile($sIndex, "", $sDirPath . $_FILES[$sIndex]["name"], $_FILES[$sIndex]['size'] + 1); - if ($sErrorMessage != "") { - writeToErrorLog($sErrorMessage); - } - - } else { - $sfileContentIndex = $sIndex . '_file'; - $sfileNameIndex = $sIndex . '_name'; - if (!empty($this->aValues[$sfileContentIndex])) { - - $this->aValues[$sIndex] = $this->aValues[$sfileNameIndex]; - $fp = fopen($sDirPath . $this->aValues[$sfileNameIndex], "w"); - fwrite($fp, $this->aValues[$sfileContentIndex]); - fclose($fp); - } - } - } -} diff --git a/src/module_extraction/web_service/ws/ExtractionExtraction.class.sql.inc b/src/module_extraction/web_service/ws/ExtractionExtraction.class.sql.inc deleted file mode 100755 index bf92c6ac3a1a2b41d71419a93152f5a7c397adfd..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/ExtractionExtraction.class.sql.inc +++ /dev/null @@ -1,22 +0,0 @@ -<?php -//Définition des requêtes de l'api Vitis -$aSql['checkIP'] = "SELECT user_id, ip_constraint FROM [sSchemaFramework].user WHERE login ='[sLogin]'"; -$aSql['getGroups'] = "SELECT group_id FROM [sSchemaFramework].user_group WHERE user_id = [user_id]"; -$aSql['loginUnique'] = 'SELECT UPPER("login") FROM [sSchemaFramework]."user" WHERE UPPER("login")=UPPER(\'sLoginUser\')'; -$aSql['getLoginbyId'] = 'SELECT "login" FROM [sSchemaFramework]."user" WHERE user_id=[user_id]'; -$aSql['getTableColumn'] = 'SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = \'[sSchemaFramework]\' and table_name= \'[sTable]\''; -$aSql['getUserPrivileges'] = 'SELECT groname FROM pg_user s LEFT OUTER JOIN pg_group g on (s.usesysid = any(g.grolist) )inner join [sSchemaFramework].user on "user".login = usename WHERE user_id = [user_id]'; -$aSql['listDomain'] = 'SELECT distinct domain, alias FROM [sSchemaFramework].domain WHERE "type" = \'AD\''; -$aSql['createRolname'] = 'CREATE ROLE "vitis_[sDomain]" NOSUPERUSER INHERIT NOCREATEDB CREATEROLE;'; -$aSql['getInfoRolname'] = 'SELECT * FROM pg_catalog.pg_roles WHERE rolname = \'vitis_[sDomain]\''; -// Extraction -$aSql['getCommuneLabel'] = 'SELECT nom_com FROM public.ref_cpa_limadm_commune WHERE id_com IN([id_com])'; -$aSql['getConseilLabel'] = 'SELECT nom_epci FROM public.ref_amp_lim_ct WHERE objectid IN([id_conseil])'; -$aSql['getCtId'] = 'SELECT distinct ct_id from [schema_extraction].commune'; -$aSql['getRtLayerWithCtId'] = 'SELECT distinct layer_id, layer, category, mutualized, statistique FROM [schema_extraction].rt_layer INNER JOIN s_extraction.commune ON rt_layer.ct_id = commune.ct_id WHERE (rt_layer."ct_id" IN ([aCtId]))'; -$aSql['getRtLayer'] = 'SELECT distinct layer_id, layer, category, mutualized, statistique FROM [schema_extraction].rt_layer INNER JOIN s_extraction.commune ON rt_layer.ct_id = commune.ct_id'; - -$aSql['getUserGroups'] = 'SELECT name FROM [schema_framework]."group",[schema_framework].user_group WHERE "group".group_id = user_group.group_id AND user_group.user_id = [user_id]'; - -$aSql['getFormat'] = 'SELECT id_format FROM q_control."format" WHERE "format".extensions like [extension]'; -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/ws/Extraction_depot.class.inc b/src/module_extraction/web_service/ws/Extraction_depot.class.inc deleted file mode 100755 index 51e0c62ee46e290f1026da56738a1836a440961a..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Extraction_depot.class.inc +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once __DIR__ . '/../../class/vitis_lib/Connection.class.inc'; - -/** - * \file Extraction_depot.class.inc - * \class Extraction_depot - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Extraction_depot php class - * - * This class defines operation for one Extraction_depot - * - */ -class Extraction_depot extends ExtractionExtraction { - - public $oError; - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false){ - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - - /** - * @SWG\Get(path="/extraction_depots/{id_extraction_depot}", - * tags={"Extraction_depots"}, - * summary="Get Extraction_depot", - * description="Request to get Extraction_depot by id", - * operationId="GET", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="id_extraction_depot", - * in="path", - * description="id_extraction_depot", - * required=true, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="Extraction_depot Response", - * @SWG\Schema(ref="#/definitions/extraction_depots") - * ) - * ) - */ - - /** - * get informations about mode - */ - function GET() { - $this->aFields = $this->getFields($this->aProperties['schema_extraction'], "", ""); - } - - - -} - -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/ws/Extraction_depots.class.inc b/src/module_extraction/web_service/ws/Extraction_depots.class.inc deleted file mode 100755 index e424f2ce3af2e2606528fd45d84c2666d00bd2c0..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Extraction_depots.class.inc +++ /dev/null @@ -1,440 +0,0 @@ -<?php - -/** - * \file Extraction_depots.class.inc - * \class Extraction_depots - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Extraction_depots php class - * - * This class defines Rest Api to Vitis Extraction_depots - * - */ -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once 'Extraction_depot.class.inc'; -require_once __DIR__ . '/../../class/wab_lib/BusinessObject.class.inc'; -require_once __DIR__ . '/Extractions.class.inc'; - -class Extraction_depots extends ExtractionExtraction -{ - /** - * @SWG\Definition( - * definition="/extraction_depots", - * allOf={ - * @SWG\Schema(ref="#/definitions/extraction_depots") - * } - * ) - * * @SWG\Tag( - * name="Extraction_depots", - * description="Operations about Extraction_depots" - * ) - */ - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - public function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) - { - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - - /** - * @SWG\Get(path="/extraction_depots", - * tags={"Extraction_depots"}, - * summary="Get Extraction_depots", - * description="Request to get Extraction_depots", - * operationId="GET", - * produces={"application/xml", "application/json", "application/x-vm-json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="order_by", - * in="query", - * description="list of ordering fields", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="sort_order", - * in="query", - * description="sort_order", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="limit", - * in="query", - * description="number of element", - * required=false, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="offset", - * in="query", - * description="index of first element", - * required=false, - * type="string", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="filter", - * in="query", - * description="filter results", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="distinct", - * in="query", - * description="delete duplicates", - * required=false, - * type="boolean" - * ), - * @SWG\Response( - * response=200, - * description="extraction_depot Response", - * @SWG\Schema(ref="#/definitions/extraction_depots") - * ) - * ) - */ - - /** - * get Extraction_depots - * @return Extraction_depots - */ - public function GET() - { - if (!empty($this->aPath[2])) { - if ($this->aPath[2] == "Tree") { - $sDirPath = $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot'; - //Création du dossier extraction_depot - if (!is_dir($sDirPath)) { - //Création du dossier du demandeur - if (!mkdir($sDirPath)) { - //Mettre une erreur dans le log d'erreur - } - } - $sDirPath = $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"]; - if (!is_dir($sDirPath)) { - if (!mkdir($sDirPath)) { - //Mettre une erreur dans le log d'erreur - } - } - $sDirPath = $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"] . "/Fichiers déposés"; - if (!is_dir($sDirPath)) { - if (!mkdir($sDirPath)) { - //Mettre une erreur dans le log d'erreur - } - } - $sDirPath = $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"] . "/Résultats"; - if (!is_dir($sDirPath)) { - if (!mkdir($sDirPath)) { - //Mettre une erreur dans le log d'erreur - } - } - $sDirPath = $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"]; - return json_encode($this->getFolderInfos($sDirPath)); - } elseif ($this->aPath[2] == "File") { - $this->getWorkspaceFile(); - } - } - } - - /** - * Get file. - */ - public function getWorkspaceFile() - { - $aReturn = array('status' => 1, 'message' => ''); - $sFilePath = $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"] . "/" . $this->aValues['file_name']; - // Le fichier existe ? - if (file_exists($sFilePath)) { - header("Content-Type: application/octet-stream"); - header("Content-Transfer-Encoding: Binary"); - header("Content-disposition: attachment; filename=\"" . $this->aValues['file_name'] . "\""); - header('Content-Length: ' . filesize($sFilePath)); - error_log(readfile($sFilePath)); - } - } - - /** - * - * @param string $sDirectoryPath - * @return array $aTree - */ - public function getFolderInfos($sDirectoryPath) - { - - if (is_dir($sDirectoryPath)) { - $aContentDir = scandir($sDirectoryPath); - $aTree = $this->getFileInfos($sDirectoryPath); - $aDir = array(); - for ($i = 0; $i < count($aContentDir); $i++) { - if ($aContentDir[$i] !== "." && $aContentDir[$i] !== "..") { - array_push($aDir, $this->getFolderInfos($sDirectoryPath . "/" . $aContentDir[$i])); - } - } - - $aTree["content"] = $aDir; - $aTree["status"] = 1; - return $aTree; - } else { - return $this->getFileInfos($sDirectoryPath); - } - } - - /** - * - * @param string $sFilePath - * @return array - */ - public function getFileInfos($sFilePath) - { - $iFileSize = filesize($sFilePath); - - $sFileSize = $iFileSize . "octets"; - if ($iFileSize > 1024) { - if ($iFileSize > 1024 * 1024) { - if ($iFileSize > 1024 * 1024 * 1024) { - $sFileSize = "-"; - } else { - $sFileSize = (ceil($iFileSize / (1024 * 1024))) . "Mo"; - } - } else { - $sFileSize = (ceil($iFileSize / 1024)) . "Ko"; - } - } - - $aFileName = explode(DIRECTORY_SEPARATOR, $sFilePath); - - return array("filename" => $aFileName[count($aFileName) - 1], "size" => $sFileSize, "lastModification" => date("d/m/Y H:i:s", filemtime($sFilePath))); - } - - /** - * @SWG\Delete(path="/[Class_name]s", - * tags={"[Class_name_upper]s"}, - * summary="delete [Class_name_upper]s", - * description="Request to delete [Class_name_upper]s", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="idList", - * in="query", - * description="id of the [Class_name]", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="[Class_name] Response", - * @SWG\Schema(ref="#/definitions/[Class_name]s") - * ) - * ) - */ - /** - * @SWG\Delete(path="/[Class_name]s/{id_[Class_name]}", - * tags={"[Class_name_upper]s"}, - * summary="delete [Class_name_upper]s", - * description="Request to delete [Class_name_upper]s", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="[Class_name_upper] token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_[Class_name]", - * in="path", - * description="id of the [Class_name_upper]s", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/[Class_name]s") - * ) - * ) - */ - - /** - * delete [Class_name]s - * @return id of [Class_name]s deleted or error object if a [Class_name]s is not deleted - */ - public function DELETES() - { - $sDirPath = $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"]; - //On supprime le fichier - $sMessage = unlink($sDirPath . "/" . $this->aValues['file_name']); - return $sMessage; - } - - /** - * @SWG\Put(path="/[Class_name]s/{id_[Class_name]}", - * tags={"[Class_name_upper]s"}, - * summary="update [Class_name_upper]s", - * description="Request to update [Class_name_upper]s", - * operationId="PUT", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="[Class_name_upper] token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_[Class_name]", - * in="path", - * description="id of the [Class_name_upper]s", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/[Class_name]s") - * ) - * ) - */ - - /** - * update [Class_name]s - * @return id of [Class_name]s updated or error object if a [Class_name]s is not updated - */ - public function PUT() - { - if (!empty($this->aValues["action"]) && $this->aValues["action"] == "Metadata") { - $aReturn = $this->reintegrateMetadata(); - - $aXmlRacineAttribute['status'] = $aReturn['status']; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - } else { - $sDirName = $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"]; - $error_message = ""; - - // Si le dossier {id} n'existe pas (Important pour gérer les erreurs) - if (!is_dir($sDirName)) { - $error_message .= $sDirName . " does not exist"; - writeToErrorLog("WARNING: " . $error_message); - - $aXmlRacineAttribute['status'] = 0; - $this->aFields = array(); - $this->aFields['errorMessage'] = $error_message; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - return $sMessage; - } - // Si le dossier {id}/Fichiers déposés n'existe pas (Important pour gérer les erreurs) - if (!is_dir($sDirName . "/Fichiers déposés")) { - $error_message .= $sDirName . "/Fichiers déposés does not exist"; - writeToErrorLog("WARNING: " . $error_message); - - $aXmlRacineAttribute['status'] = 0; - $this->aFields = array(); - $this->aFields['errorMessage'] = $error_message; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - return $sMessage; - } - - // Si le dossier {id}/form n'existe pas il est crée - if (!is_dir($sDirName . "/Résultats")) { - writeToErrorLog("WARNING: " . $sDirName . "/Résultats"); - @mkdir($sDirName . "/Résultats"); - } - - if (!empty($this->aValues["control_file_file"])) { - $this->aValues["control_file"] = $this->aValues["control_file_name"]; - } - if (!empty($this->aValues["control_file_file"])) { - //if ($aReturn['sStatus'] == 1) { - $aXmlRacineAttribute['status'] = 1; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - $sDirPath = $this->aProperties["upload_dir"] . "/" . getUniqRandomId(); - while (is_dir($sDirPath)) { - $sDirPath = $this->aProperties["upload_dir"] . "/" . getUniqRandomId(); - } - if (!mkdir($sDirPath)) { - return false; - } - // Sauvegarde le nouveau fichier. - $fp = fopen($sDirPath . '/' . utf8_decode($this->aValues["control_file_name"]), "w"); - fwrite($fp, $this->aValues["control_file_file"]); - fclose($fp); - - $sExtension = '*.' . end(explode(".", $this->aValues["control_file_name"])); - if (in_array($sExtension, explode("|", $this->aProperties['sig'])) or in_array($sExtension, explode("|", $this->aProperties['dao']))) { - $sSchemaContrainte = ""; - if (in_array($sExtension, explode("|", $this->aProperties['sig']))) { - $sSchemaContrainte = $this->aProperties["schema_sig"]; - } elseif (in_array($sExtension, explode("|", $this->aProperties['dao']))) { - $sSchemaContrainte = $this->aProperties["schema_dao"]; - } - - $this->sRessourcesFile = "ExtractionExtraction.class.sql.inc"; - require $this->sRessourcesFile; - $sSql = $aSql['getFormat']; - $aSQLParams = array( - 'extension' => array('type' => 'quoted_string', 'value' => '%' . $sExtension . '%'), - ); - - $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, $aSQLParams); - $sFormat = ""; - if (!$this->oConnection->oBd->enErreur()) { - $aResult = $this->oConnection->oBd->getResultTableAssoc($oPDOresult); - foreach ($aResult as $sFormats) { - $sFormat = $sFormats['id_format']; - } - } - - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - //$this->oBO->insertOrder('EM0160AYYTK48', 'bo_id=' . $this->aValues["bo_id"] . '|sourceDir=' . end(explode("/", $sDirPath)) . '/' . $this->aValues["control_file_name"] . '|sourceMotif=' . $sExtension . '|schema=' . $sSchemaContrainte . '|format=ACAD|destDir=' . $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"] . "/Fichiers déposés"); - $this->oBO->insertOrder('EM0160AYYTK48', 'bo_id=' . $this->aValues["bo_id"] . '|sourceDir=' . $sDirPath . '/' . $this->aValues["control_file_name"] . '|sourceMotif=' . $sExtension . '|schema=' . $sSchemaContrainte . '|format='.$sFormat.'|depotDir=' . $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"] . '/Fichiers déposés/' . $this->aValues["control_file_name"]); - } else { - //Si l'extension n'est pas bonne - $error_message .= $this->aValues["control_file_name"] . " format is not authaurized (" . $sExtension . ")"; - writeToErrorLog("WARNING: " . $error_message); - - $aXmlRacineAttribute['status'] = 0; - $this->aFields = array(); - $this->aFields['errorMessage'] = $error_message; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - return $sMessage; - } - } - } - - return $sMessage; - } - -} diff --git a/src/module_extraction/web_service/ws/Extractions.class.inc b/src/module_extraction/web_service/ws/Extractions.class.inc deleted file mode 100755 index 20ba20bbbbfcc4e5063383fb848f243897d150ff..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Extractions.class.inc +++ /dev/null @@ -1,650 +0,0 @@ -<?php - -/** - * \file Extractions.class.inc - * \class Extractions - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Extractions php class - * - * This class defines Rest Api to Vitis Extractions - * - */ -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once 'Extraction.class.inc'; - -require_once __DIR__ . '/../../class/wab_lib/BusinessObject.class.inc'; - -class Extractions extends ExtractionExtraction -{ - - protected $iIdExtraction; - /** - * @SWG\Definition( - * definition="/extractions", - * allOf={ - * @SWG\Schema(ref="#/definitions/extractions") - * } - * ) - * * @SWG\Tag( - * name="Extractions", - * description="Operations about Extractions" - * ) - */ - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - public function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false) - { - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - -/** - * @SWG\Get(path="/extractions", - * tags={"Extractions"}, - * summary="Get Extractions", - * description="Request to get Extractions", - * operationId="GET", - * produces={"application/xml", "application/json", "application/x-vm-json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="order_by", - * in="query", - * description="list of ordering fields", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="sort_order", - * in="query", - * description="sort_order", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="limit", - * in="query", - * description="number of element", - * required=false, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="offset", - * in="query", - * description="index of first element", - * required=false, - * type="string", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="filter", - * in="query", - * description="filter results", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="distinct", - * in="query", - * description="delete duplicates", - * required=false, - * type="boolean" - * ), - * @SWG\Response( - * response=200, - * description="extraction Response", - * @SWG\Schema(ref="#/definitions/extractions") - * ) - * ) - */ - /** - * @SWG\Get(path="/extractions/Layers", - * tags={"Extractions"}, - * summary="Get extraction layers", - * description="Request to get the layers of the extractions", - * operationId="GET", - * produces={"application/xml", "application/json", "application/x-vm-json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/extractions") - * ) - * ) - */ - - /** - * get Extractions - * @return Extractions - */ - public function GET() - { - if (!empty($this->aPath[2]) && $this->aPath[2] == "Layers") { - $sMessage = $this->getLayers(); - } else { - $aReturn = $this->genericGet($this->aProperties['schema_extraction'], "v_extraction", "bo_id"); - $sMessage = $aReturn['sMessage']; - } - return $sMessage; - } - -/** - * @SWG\Post(path="/extractions", - * tags={"Extractions"}, - * summary="Add extraction", - * description="Request to add Extractions", - * operationId="POST", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="extraction Response", - * @SWG\Schema(ref="#/definitions/extractions") - * ) - * ) - */ - - /** - * insert extraction - * @return id of the extraction created - */ - public function POST() - { - $aReturn = $this->genericPost($this->aProperties['schema_extraction'], 'extraction', $this->aProperties['schema_extraction'] . '.bo_id_extraction_seq', 'bo_id'); - $this->aValues["bo_id"] = $this->aValues['my_vitis_id']; - eval('$this->' . $this->aValues['tr_status_method'] . '();'); - return $aReturn['sMessage']; - } - -/** - * @SWG\Put(path="/extractions/{id_extraction}", - * tags={"Extractions"}, - * summary="update Extractions", - * description="Request to update Extractions", - * operationId="PUT", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="Extraction token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_extraction", - * in="path", - * description="id of the Extractions", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/extractions") - * ) - * ) - */ - - /** - * update extractions - * @return id of extractions updated or error object if a extractions is not updated - */ - public function PUT() - { - // Upload l'acte d'engagement. - $this->uploadDocument('ae', 'extraction_extraction_extraction'); - // - $aReturn = $this->genericPut($this->aProperties['schema_extraction'], 'extraction', 'bo_id'); - $this->aValues["bo_id"] = $this->aValues['my_vitis_id']; - - //On vérifie que le fichier existe et ne soit pas vide - if (!empty($this->aValues['input_deposit_file'])) { - //On va déplacer le fichier dans un dossier temporaire - $aXmlRacineAttribute['status'] = 1; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - $sDirPath = $this->aProperties["upload_dir"] . "/" . getUniqRandomId(); - //Récupération de sDirPath pour trDéposer - $this->sDirPath = $sDirPath; - - $sExtension = '*.' . end(explode(".", $this->aValues["input_deposit_name"])); - - //Si l'extension est autorisée - if (in_array($sExtension, explode("|", $this->aProperties['sig'])) || in_array($sExtension, explode("|", $this->aProperties['dao']))) { - - // Méthode de transition. - if (!empty($this->aValues['tr_status_method'])) { - eval('$this->' . $this->aValues['tr_status_method'] . '();'); - } - - $sSchemaContrainte = ""; - if (in_array($sExtension, explode("|", $this->aProperties['sig']))) { - $sSchemaContrainte = $this->aProperties["schema_sig"]; - } elseif (in_array($sExtension, explode("|", $this->aProperties['dao']))) { - $sSchemaContrainte = $this->aProperties["schema_dao"]; - } - - while (is_dir($sDirPath)) { - $sDirPath = $this->aProperties["upload_dir"] . "/" . getUniqRandomId(); - } - if (!mkdir($sDirPath)) { - return false; - } - // Sauvegarde le nouveau fichier. - $fp = fopen($sDirPath . '/' . utf8_decode($this->aValues["input_deposit_name"]), "w"); - fwrite($fp, $this->aValues["input_deposit_file"]); - fclose($fp); - - $this->sRessourcesFile = "ExtractionExtraction.class.sql.inc"; - require $this->sRessourcesFile; - $sSql = $aSql['getFormat']; - $aSQLParams = array( - 'extension' => array('type' => 'quoted_string', 'value' => '%' . $sExtension . '%'), - ); - - $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, $aSQLParams); - $sFormat = ""; - if (!$this->oConnection->oBd->enErreur()) { - $aResult = $this->oConnection->oBd->getResultTableAssoc($oPDOresult); - foreach ($aResult as $sFormats) { - $sFormat = $sFormats['id_format']; - } - } - - //Demande GTF - $this->oBO->insertOrder('EM0160AYYTK48', 'bo_id=' . $this->aValues["bo_id"] . '|sourceDir=' . end(explode("/", $sDirPath)) . '/' . $this->aValues["input_deposit_name"] . '|sourceMotif=' . $sExtension . '|depotDir=' . $sSchemaContrainte . '|format=' . $sFormat . '|depotDir=' . $this->aProperties['ws_data_dir'] . '/extraction/extraction_depot/' . $_SERVER["REMOTE_ADDR"] . "/Fichiers déposés/" . $this->aValues["input_deposit_name"]); - } else { - //Si l'extension n'est pas bonne - $error_message .= $this->aValues["input_deposit_name"] . " format is not authaurized (" . $sExtension . ")"; - writeToErrorLog("WARNING: " . $error_message); - - $aXmlRacineAttribute['status'] = 0; - $this->aFields = array(); - $this->aFields['errorMessage'] = $error_message; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - return $sMessage; - } - } - return $aReturn['sMessage']; - } - -/** - * @SWG\Delete(path="/extractions", - * tags={"Extractions"}, - * summary="delete Extractions", - * description="Request to delete Extractions", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="idList", - * in="query", - * description="id of the extraction", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="extraction Response", - * @SWG\Schema(ref="#/definitions/extractions") - * ) - * ) - */ - /** - * @SWG\Delete(path="/extractions/{id_extraction}", - * tags={"Extractions"}, - * summary="delete Extractions", - * description="Request to delete Extractions", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="Extraction token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_extraction", - * in="path", - * description="id of the Extractions", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/extractions") - * ) - * ) - */ - - /** - * delete extractions - * @return id of extractions deleted or error object if a extractions is not deleted - */ - public function DELETE() - { - $aReturn = $this->genericDelete($this->aProperties['schema_extraction'], 'extraction', 'bo_id'); - return $aReturn['sMessage']; - } - - /** - * Liste des couches. - */ - public function getLayers() - { - require $this->sRessourcesFile; - //On décode le json récupéré via le filtre - if (!empty($this->aValues["filter"])) { - $decode = $this->decodeJSONFilter($this->aValues["filter"], $this->aProperties['schema_extraction'], $this->aValues["table"]); - } - - if (is_object($this->aValues) || is_array($this->aValues)) { - $sJSONFilter = json_encode($this->aValues); - } - - if (!empty($sJSONFilter)) { - $aJSONFilter = json_decode($sJSONFilter, true); - - if (!empty($aJSONFilter["filter"])) { - if (is_object($aJSONFilter["filter"]) || is_array($aJSONFilter["filter"])) { - $sJSONFilter = json_encode($aJSONFilter["filter"]); - } - } - } - $aSQLParams = array( - 'schema_framework' => array('value' => $this->aProperties['schema_framework'], 'type' => 'schema_name'), - 'user_id' => array('value' => $_SESSION['ses_user_id'], 'type' => 'string'), - ); - - $sSql = $aSql['getUserGroups']; - $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, $aSQLParams); - if (!$this->oConnection->oBd->enErreur()) { - $aResult = $this->oConnection->oBd->getResultTableAssoc($oPDOresult); - foreach ($aResult as $aUserGroup) { - $aUserGroups[] = $aUserGroup['name']; - } - - if (!empty($aValues["filter"])) { - $aSQLParams = array( - 'schema_extraction' => array('value' => $this->aProperties['schema_extraction'], 'type' => 'schema_name'), - ); - - $sSql = $aSql['getCtId']; - //On donne la condition - if ($decode["request"]) { - $sSql .= " WHERE "; - $sSql .= $decode["request"]; - $sSql .= 'ORDER BY ct_id;'; - } - //error_log(print_r($sSql, true)); - $merge = array_merge($aSQLParams, $decode["params"]); - - $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, $merge); - - $aCtResult = $this->oConnection->oBd->getResultTableAssoc($oPDOresult); - } - // Restriction de l'utilisateur suivant ses groupes. - if (in_array('interne', $aUserGroups)) { - $sSqlParams = " ORDER BY category, layer_id;"; - } else if (in_array('restreint', $aUserGroups)) { - $sSqlParams = " AND restriction <> 'interne' ORDER BY category, layer_id;"; - } else { - $sSqlParams = " AND restriction = 'public' ORDER BY category, layer_id;"; - } - - // Liste des cartes. - $this->aFields['treeview_layers'] = array(); - - //Requête pour récupérer les couches - if (!empty($aValues["filter"])) { - $sSql = $aSql['getRtLayerWithCtId'] . $sSqlParams; - } else { - $sSql = $aSql['getRtLayer'] . $sSqlParams; - } - $ct_id; - if (!empty($aCtResult)) { - for ($i = 0; $i < sizeof($aCtResult); $i++) { - $ct_id .= $aCtResult[$i]["ct_id"] . "|"; - } - //On retire la dernière pipe qui ne sert à rien - $ct_idToSend = substr($ct_id, 0, -1); - } else { - //On donne un id qui n'existe pas pour éviter une erreur dans la requête SQL - $ct_idToSend = -1; - } - //error_log(print_r($aCtResult[$i]["ct_id"], true)); - $aSQLParams = array( - 'schema_extraction' => array('value' => $this->aProperties['schema_extraction'], 'type' => 'schema_name'), - 'aCtId' => array('value' => $ct_idToSend, 'type' => 'group'), - ); - $oPDOresult = $this->oConnection->oBd->executeWithParams($sSql, $aSQLParams); - if (!$this->oConnection->oBd->enErreur()) { - $aRtLayer = $this->oConnection->oBd->getResultTableAssoc($oPDOresult); - $aLayers = array(); - if (!empty($aRtLayer)) { - foreach ($aRtLayer as $aLayer) { - - $aLayers[$aLayer['category']][] = array("text" => $aLayer['layer'], "value" => $aLayer['layer_id'], "mutualized" => $aLayer['mutualized'], "statistique" => $aLayer['statistique']); - - } - } - $this->aFields['layers'] = $aLayers; - $aXmlRacineAttribute['status'] = 1; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - } else { - $aXmlRacineAttribute['status'] = 0; - $this->aFields['error'] = "Request error."; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - } - } else { - $aXmlRacineAttribute['status'] = 0; - $this->aFields['error'] = "Request error."; - $sMessage = $this->asDocument('', 'vitis', $this->aValues['sEncoding'], true, $aXmlRacineAttribute, $this->aValues['sSourceEncoding'], $this->aValues['output']); - } - //error_log(print_r($sMessage, true)); - return $sMessage; - } - - /** - * Transition Method trNouveau - */ - public function trNouveau() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "Nouveau"); - - } - - /** - * Transition Method trGenerer - */ - public function trGenerer() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "AE Généré"); - - } - - /** - * Transition Method trResoumettre - */ - public function trResoumettre() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "AE Généré"); - //$this->sendmail(9904); - $this->sendmail(171); - } - - /** - * Transition Method trSoumettre - */ - public function trSoumettre() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "AE Soumis"); - //$this->oBO->sendmail(39); - $this->oBO->sendmail(174); - } - - /** - * Transition Method trDemander - */ - public function trDemander() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - $this->oBO->insertOrder('832HZ8J2PTCSG', 'bo_id=' . $this->aValues['bo_id']); - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "AE Demandé"); - - } - - /** - * Transition Method trReception - */ - public function trReception() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "Dépôt terminé"); - - } - - /** - * Transition Method trDeposer - */ - public function trDeposer() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "Fichier déposé"); - - } - - /** - * Transition Method trAutoriser - */ - public function trAutoriser() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - $this->oBO->insertOrder('8BCP8WGIOW4KO', 'bo_id=' . $this->aValues['bo_id']); - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "Autorisée"); - - } - - /** - * Transition Method trAccepter - */ - public function trAccepter() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "Fichier accepté"); - - //$this->oBO->sendmail(id_du_mail_pour_dire_que_le_fichier_est_accepté); - $this->trReception(); - - } - - /** - * Transition Method trInvalider - */ - public function trInvalider() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "Fichier invalidé"); - $this->oBO->sendmail(1057); - $this->trRetour(); - - } - - /** - * Transition Method trRetour - */ - public function trRetour() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "Extraction terminée"); - - } - - /** - * Transition Method trTerminerExtraction - */ - public function trTerminerExtraction() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "Extraction terminée"); - - } - - /** - * Transition Method trRefuser - */ - public function trRefuser() - { - $this->oBO = new WabBusinessObject($this->oConnection->oBd, array(), $this->aValues, $this->aProperties, 'extraction', $this->aValues['bo_id']); - - // Check si la table existe si oui change l'état - $this->oBO->wabSetStatus($this->aProperties["schema_extraction"], "extraction", "bo_id", $this->aValues["bo_id"], "Refusée"); -//$this->sendmail(9902); - $this->oBO->sendmail(175); - } - -} diff --git a/src/module_extraction/web_service/ws/Format.class.inc b/src/module_extraction/web_service/ws/Format.class.inc deleted file mode 100755 index 6c9d733bf2f890a5ff4785bb6ca46b57949f2dc3..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Format.class.inc +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc'; - -/** - * \file Format.class.inc - * \class Format - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Format php class - * - * This class defines operation for one Format - * - */ -class Format extends ExtractionExtraction { - - public $oError; - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false){ - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - -/** - * @SWG\Get(path="/formats/{id_format}", - * tags={"Formats"}, - * summary="Get Format", - * description="Request to get Format by id", - * operationId="GET", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="id_format", - * in="path", - * description="id_format", - * required=true, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="Format Response", - * @SWG\Schema(ref="#/definitions/formats") - * ) - * ) - */ - - /** - * get informations about mode - */ - function GET() { - $this->aFields = $this->getFields($this->aProperties['schema_extraction'], "rt_format", "format_id"); - } - -/** - * delete a Point_situation - */ - function DELETE() { - $this->oConnection->oBd->delete($this->aProperties['schema_extraction'], 'rt_format', 'format_id', $this->aValues["my_vitis_id"], 'integer'); - if ($this->oConnection->oBd->enErreur()) { - $this->oError = new Error(1, $this->oConnection->oBd->getBDMessage()); - } else { - $this->aFields["format_id"] = $this->aValues["my_vitis_id"]; - } - } - -} - -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/ws/Formats.class.inc b/src/module_extraction/web_service/ws/Formats.class.inc deleted file mode 100755 index 141f0fd44f42b395c2af3580cea2f783aa107cfc..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Formats.class.inc +++ /dev/null @@ -1,269 +0,0 @@ -<?php - -/** - * \file Formats.class.inc - * \class Formats - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Formats php class - * - * This class defines Rest Api to Vitis Formats - * - */ -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once 'Format.class.inc'; - - -class Formats extends ExtractionExtraction { - /** - * @SWG\Definition( - * definition="/formats", - * allOf={ - * @SWG\Schema(ref="#/definitions/formats") - * } - * ) - * * @SWG\Tag( - * name="Formats", - * description="Operations about Formats" - * ) - */ - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false){ - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - -/** - * @SWG\Get(path="/formats", - * tags={"Formats"}, - * summary="Get Formats", - * description="Request to get Formats", - * operationId="GET", - * produces={"application/xml", "application/json", "application/x-vm-json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="order_by", - * in="query", - * description="list of ordering fields", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="sort_order", - * in="query", - * description="sort_order", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="limit", - * in="query", - * description="number of element", - * required=false, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="offset", - * in="query", - * description="index of first element", - * required=false, - * type="string", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="filter", - * in="query", - * description="filter results", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="distinct", - * in="query", - * description="delete duplicates", - * required=false, - * type="boolean" - * ), - * @SWG\Response( - * response=200, - * description="format Response", - * @SWG\Schema(ref="#/definitions/formats") - * ) - * ) - */ - - /** - * get Formats - * @return Formats - */ - function GET() { - $aReturn = $this->genericGet($this->aProperties['schema_extraction'], "rt_format", "format_id"); - $sMessage = $aReturn['sMessage']; - return $sMessage; - } - -/** - * @SWG\Post(path="/formats", - * tags={"Formats"}, - * summary="Add format", - * description="Request to add Formats", - * operationId="POST", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="format Response", - * @SWG\Schema(ref="#/definitions/formats") - * ) - * ) - */ - - /** - * insert format - * @return id of the format created - */ - function POST() { - $aReturn = $this->genericPost($this->aProperties['schema_extraction'], 'rt_format', '', 'format_id'); - - return $aReturn['sMessage']; - } - -/** - * @SWG\Put(path="/formats/{id_format}", - * tags={"Formats"}, - * summary="update Formats", - * description="Request to update Formats", - * operationId="PUT", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="Format token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_format", - * in="path", - * description="id of the Formats", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/formats") - * ) - * ) - */ - - /** - * update formats - * @return id of formats updated or error object if a formats is not updated - */ - function PUT() { - $aReturn = $this->genericPut($this->aProperties['schema_extraction'], 'rt_format', 'format_id'); - - return $aReturn['sMessage']; - } - -/** - * @SWG\Delete(path="/formats", - * tags={"Formats"}, - * summary="delete Formats", - * description="Request to delete Formats", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="idList", - * in="query", - * description="id of the format", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="format Response", - * @SWG\Schema(ref="#/definitions/formats") - * ) - * ) - */ - /** - * @SWG\Delete(path="/formats/{id_format}", - * tags={"Formats"}, - * summary="delete Formats", - * description="Request to delete Formats", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="Format token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_format", - * in="path", - * description="id of the Formats", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/formats") - * ) - * ) - */ - - /** - * delete formats - * @return id of formats deleted or error object if a formats is not deleted - */ - function DELETE() { - $aReturn = $this->genericDelete($this->aProperties['schema_extraction'], 'rt_format', 'format_id'); - return $aReturn['sMessage']; - } - - -} - -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/ws/Layer.class.inc b/src/module_extraction/web_service/ws/Layer.class.inc deleted file mode 100755 index af7d4af185880fac5854217b8020fe2792193245..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Layer.class.inc +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once dirname($_SERVER['SCRIPT_FILENAME']) . '/class/vitis_lib/Connection.class.inc'; - -/** - * \file Layer.class.inc - * \class Layer - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Layer php class - * - * This class defines operation for one Layer - * - */ -class Layer extends ExtractionExtraction { - - public $oError; - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false){ - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - -/** - * @SWG\Get(path="/layers/{id_layer}", - * tags={"Layers"}, - * summary="Get Layer", - * description="Request to get Layer by id", - * operationId="GET", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="id_layer", - * in="path", - * description="id_layer", - * required=true, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="Layer Response", - * @SWG\Schema(ref="#/definitions/layers") - * ) - * ) - */ - - /** - * get informations about mode - */ - function GET() { - $this->aFields = $this->getFields($this->aProperties['schema_extraction'], "rt_layer", "layer_id"); - } - -/** - * delete a Point_situation - */ - function DELETE() { - $this->oConnection->oBd->delete($this->aProperties['schema_extraction'], 'rt_layer', 'layer_id', $this->aValues["my_vitis_id"], 'integer'); - if ($this->oConnection->oBd->enErreur()) { - $this->oError = new Error(1, $this->oConnection->oBd->getBDMessage()); - } else { - $this->aFields["layer_id"] = $this->aValues["my_vitis_id"]; - } - } - -} - -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/ws/Layers.class.inc b/src/module_extraction/web_service/ws/Layers.class.inc deleted file mode 100755 index 0cdb17b292f172ec2958a222ec0b3ca17f69b23c..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/Layers.class.inc +++ /dev/null @@ -1,269 +0,0 @@ -<?php - -/** - * \file Layers.class.inc - * \class Layers - * - * \author WAB <support.wab@veremes.com>. - * - * \brief This file contains the Layers php class - * - * This class defines Rest Api to Vitis Layers - * - */ -require_once __DIR__ . '/ExtractionExtraction.class.inc'; -require_once 'Layer.class.inc'; - - -class Layers extends ExtractionExtraction { - /** - * @SWG\Definition( - * definition="/layers", - * allOf={ - * @SWG\Schema(ref="#/definitions/layers") - * } - * ) - * * @SWG\Tag( - * name="Layers", - * description="Operations about Layers" - * ) - */ - - /** - * construct - * @param type $aPath url of the request - * @param type $aValues parameters of the request - * @param type $properties properties - * @param type $bShortcut false to reinit variables - * @param type $oConnection connection object - */ - function __construct($aPath, $aValues, $properties, $bShortcut = false, $oConnection = false){ - parent::__construct($aPath, $aValues, $properties, $bShortcut, $oConnection); - } - -/** - * @SWG\Get(path="/layers", - * tags={"Layers"}, - * summary="Get Layers", - * description="Request to get Layers", - * operationId="GET", - * produces={"application/xml", "application/json", "application/x-vm-json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Parameter( - * name="order_by", - * in="query", - * description="list of ordering fields", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="sort_order", - * in="query", - * description="sort_order", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="limit", - * in="query", - * description="number of element", - * required=false, - * type="integer", - * format="int32" - * ), - * @SWG\Parameter( - * name="offset", - * in="query", - * description="index of first element", - * required=false, - * type="string", - * format="int32" - * ), - * @SWG\Parameter( - * name="attributs", - * in="query", - * description="list of attributs", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="filter", - * in="query", - * description="filter results", - * required=false, - * type="string" - * ), - * @SWG\Parameter( - * name="distinct", - * in="query", - * description="delete duplicates", - * required=false, - * type="boolean" - * ), - * @SWG\Response( - * response=200, - * description="layer Response", - * @SWG\Schema(ref="#/definitions/layers") - * ) - * ) - */ - - /** - * get Layers - * @return Layers - */ - function GET() { - $aReturn = $this->genericGet($this->aProperties['schema_extraction'], $this->aValues["table"], $this->aValues["filter"]["column"]); - $sMessage = $aReturn['sMessage']; - return $sMessage; - } - -/** - * @SWG\Post(path="/layers", - * tags={"Layers"}, - * summary="Add layer", - * description="Request to add Layers", - * operationId="POST", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="user token", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="layer Response", - * @SWG\Schema(ref="#/definitions/layers") - * ) - * ) - */ - - /** - * insert layer - * @return id of the layer created - */ - function POST() { - $aReturn = $this->genericPost($this->aProperties['schema_extraction'], 'rt_layer', '', 'layer_id'); - - return $aReturn['sMessage']; - } - -/** - * @SWG\Put(path="/layers/{id_layer}", - * tags={"Layers"}, - * summary="update Layers", - * description="Request to update Layers", - * operationId="PUT", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="Layer token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_layer", - * in="path", - * description="id of the Layers", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/layers") - * ) - * ) - */ - - /** - * update layers - * @return id of layers updated or error object if a layers is not updated - */ - function PUT() { - $aReturn = $this->genericPut($this->aProperties['schema_extraction'], 'rt_layer', 'layer_id'); - - return $aReturn['sMessage']; - } - -/** - * @SWG\Delete(path="/layers", - * tags={"Layers"}, - * summary="delete Layers", - * description="Request to delete Layers", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="idList", - * in="query", - * description="id of the layer", - * required=true, - * type="string" - * ), - * @SWG\Response( - * response=200, - * description="layer Response", - * @SWG\Schema(ref="#/definitions/layers") - * ) - * ) - */ - /** - * @SWG\Delete(path="/layers/{id_layer}", - * tags={"Layers"}, - * summary="delete Layers", - * description="Request to delete Layers", - * operationId="DELETE", - * produces={"application/xml", "application/json"}, - * @SWG\Parameter( - * name="token", - * in="query", - * description="Layer token", - * required=true, - * type="string" - * ), - * * @SWG\Parameter( - * name="id_layer", - * in="path", - * description="id of the Layers", - * required=true, - * type="integer", - * format = "int32" - * ), - * @SWG\Response( - * response=200, - * description="Poprerties Response", - * @SWG\Schema(ref="#/definitions/layers") - * ) - * ) - */ - - /** - * delete layers - * @return id of layers deleted or error object if a layers is not deleted - */ - function DELETE() { - $aReturn = $this->genericDelete($this->aProperties['schema_extraction'], 'rt_layer', 'layer_id'); - return $aReturn['sMessage']; - } - - -} - -?> \ No newline at end of file diff --git a/src/module_extraction/web_service/ws/overview.phtml b/src/module_extraction/web_service/ws/overview.phtml deleted file mode 100755 index 27e165d375458404f3a66e7ee8864f745b7ee923..0000000000000000000000000000000000000000 --- a/src/module_extraction/web_service/ws/overview.phtml +++ /dev/null @@ -1,24 +0,0 @@ -<?php -/** - * @SWG\Swagger( - * basePath="/[service_alias]/extraction", - * host="[server]", - * schemes={"[protocol]"}, - * produces={ - * "application/json", - "application/xml", - "text/html" - * }, - * @SWG\Info( - * version="1.0.0", - * title="Extraction Test Rest", - * description="All fetaures to access server operation for extraction", - * ) - * ) - */ -?> - -<h1 class="titleOverview">Service Extraction</h1> -<p> - <a class="linkOverview" href="javascript:sService='extraction';LoadApi()">Extraction</a>: this is the most comprehensive service which should be used as a preference when developing applications communicating with Extraction. Those services allow you to administrate Extraction applications. -</p> \ No newline at end of file diff --git a/src/vitis/.gitignore b/src/vitis/.gitignore deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/vitis/README.md b/src/vitis/README.md deleted file mode 100644 index 73a21c98f1cea1876231e24ce68d0dc5b7bca937..0000000000000000000000000000000000000000 --- a/src/vitis/README.md +++ /dev/null @@ -1 +0,0 @@ -Vitis framework \ No newline at end of file diff --git a/src/vitis/_install/client/fileToDelete.txt b/src/vitis/_install/client/fileToDelete.txt deleted file mode 100644 index ca3a9114882b45d4b55b25a40380235fc553ceb9..0000000000000000000000000000000000000000 --- a/src/vitis/_install/client/fileToDelete.txt +++ /dev/null @@ -1,4 +0,0 @@ -javascript/externs/formreader/formreader.js -javascript/externs/formreader/formreaderCtrl.js -javascript/externs/formreader/formreaderDrtv.js -javascript/externs/formreader/formreaderSrvc.js \ No newline at end of file diff --git a/src/vitis/_install/client/folderToDelete.txt b/src/vitis/_install/client/folderToDelete.txt deleted file mode 100644 index a0e7984dc0bc0ee6987ebffa481549c126c7ef9b..0000000000000000000000000000000000000000 --- a/src/vitis/_install/client/folderToDelete.txt +++ /dev/null @@ -1,8 +0,0 @@ -javascript/app -javascript/require -javascript/test -javascript/externs/openLayers/ol -javascript/externs/openLayers/ol.ext -javascript/externs/studio/properties -javascript/externs/studio/javascript -modules/vitis/javascript \ No newline at end of file diff --git a/src/vitis/_install/client/listModuleApache.txt b/src/vitis/_install/client/listModuleApache.txt deleted file mode 100644 index 2c0309e320b509b2ba74dc5f3ddd6a211245e922..0000000000000000000000000000000000000000 --- a/src/vitis/_install/client/listModuleApache.txt +++ /dev/null @@ -1,5 +0,0 @@ -alias -deflate -headers -rewrite -ssl \ No newline at end of file diff --git a/src/vitis/_install/vas/apache.conf b/src/vitis/_install/vas/apache.conf deleted file mode 100644 index 2281b2e2673c513df20924e94a224bfa45673fad..0000000000000000000000000000000000000000 --- a/src/vitis/_install/vas/apache.conf +++ /dev/null @@ -1,70 +0,0 @@ -PassEnv TEMP -Alias /rest[ENV] "[VASDIRECTORY]/rest" - <Directory "[VASDIRECTORY]/rest"> - <FilesMatch ".+\.ph(p[345]?|t|tml)$"> - SetHandler application/x-httpd-php_vitis[ENV] - </FilesMatch> - AllowOverride FileInfo - Options FollowSymLinks - Require all granted - <Files ~ "\.(map|log|inc|php)$"> - Order allow,deny - Deny from all - </Files> - </Directory> - -Alias /doc[ENV] "[VASDIRECTORY]/doc" - <Directory "[VASDIRECTORY]/doc"> - <FilesMatch ".+\.ph(p[345]?|t|tml)$"> - SetHandler application/x-httpd-php_vitis[ENV] - </FilesMatch> - AllowOverride FileInfo - Options FollowSymLinks - Require all granted - </Directory> - -Alias /public[ENV] "[VASDIRECTORY]/public" - <Directory "[VASDIRECTORY]/public"> - AllowOverride FileInfo - Options FollowSymLinks - Require all granted - <Files ~ "\.(map|inc|php)$"> - Order allow,deny - Deny from all - </Files> - SetHandler application/x-download - </Directory> -Alias /ws_data[ENV] "[VASDIRECTORY]/ws_data" - <Directory "[VASDIRECTORY]/ws_data"> - AllowOverride All - Options FollowSymLinks - Require all granted - <Files ~ "\.(map|log|inc|php)$"> - Order allow,deny - Deny from all - </Files> - SetHandler application/x-download - </Directory> -Alias /proxy[ENV] "[VASDIRECTORY]/util/proxy" - <Directory "[VASDIRECTORY]/util/proxy"> - <FilesMatch ".+\.ph(p[345]?|t|tml)$"> - SetHandler application/x-httpd-php_vitis[ENV] - </FilesMatch> - AllowOverride FileInfo - Options FollowSymLinks - Require all granted - <Files ~ "\.(map|log|inc)$"> - Order allow,deny - Deny from all - </Files> - </Directory> -Alias /printserver[ENV] "[VASDIRECTORY]/util/printserver" - <Directory "[VASDIRECTORY]/util/printserver"> - AllowOverride FileInfo - Options FollowSymLinks - Require all granted - <Files ~ "\.(map|log|inc|php)$"> - Order allow,deny - Deny from all - </Files> - </Directory> \ No newline at end of file diff --git a/src/vitis/_install/vas/listModuleApache.txt b/src/vitis/_install/vas/listModuleApache.txt deleted file mode 100644 index c2626d946f4a9bbaad4d7ca16423af23007c0ca3..0000000000000000000000000000000000000000 --- a/src/vitis/_install/vas/listModuleApache.txt +++ /dev/null @@ -1,16 +0,0 @@ -actions -alias -cgi -deflate -headers -ldap -rewrite -ssl -proxy -proxy_ajp -proxy_connect -proxy_fcgi -proxy_ftp -proxy_http -proxy_scgi -proxy_wstunnel \ No newline at end of file diff --git a/src/vitis/vas/rest/class/.htaccess b/src/vitis/vas/rest/class/.htaccess deleted file mode 100755 index 3418e55a68383c1cbc687c52a2994d1e8ed83800..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all \ No newline at end of file diff --git a/src/vitis/vas/rest/class/Ldap.class.inc b/src/vitis/vas/rest/class/Ldap.class.inc deleted file mode 100755 index a9c691eaf4400bbc112c0c96bf79bfc5442a42a6..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/Ldap.class.inc +++ /dev/null @@ -1,347 +0,0 @@ -<?php - header('Content-Type: text/html; charset=UTF-8;'); - // require_once("../properties.inc"); - require_once(__DIR__.'/vmlib/phpUtil.inc'); - require_once(__DIR__.'/vmlib/logUtil.inc'); - require_once(__DIR__.'/vmlib/cryptUtil.inc'); -class Ldap { - - // Tableau des informations de l'AD - public $aLdap = array(); - public $userprincipalname = ''; - private $sDcLdap = ''; - - public function __construct($sLdap) { - $this->aLdap = unserialize($sLdap); - $aTmp = explode('.',$this->aLdap['sLdapName']); - foreach($aTmp as $sDomain){ - if($this->sDcLdap=="") - $this->sDcLdap .= "dc=".$sDomain; - else - $this->sDcLdap .= ",dc=".$sDomain; - } - - if($this->aLdap['sType'] == 'AD') - $this->userprincipalname = 'userprincipalname'; - else - $this->userprincipalname = 'uid'; - } - - /* - * Permet la connexion au serveur AD - */ - public function connectLdap(){ - $sLdapConn = ldap_connect($this->aLdap['sServer'], $this->aLdap['sPort']) or die(writeToErrorLog("Could not connect to LDAP server.")); - if ($sLdapConn) { // Si la connexion s'est bien déroulée - ldap_set_option($sLdapConn, LDAP_OPT_PROTOCOL_VERSION, 3); - ldap_set_option($sLdapConn, LDAP_OPT_REFERRALS, 0); - //Authentification - $sPwdLdap =utf8_encode(trim(des (rtrim(utf8_decode($this->aLdap['sLoginLdap'])), hexToString(rtrim($this->aLdap['sPwdLdap'])), 0, 0, null))); - $sLoginLdap = mb_strtolower($this->aLdap['sLoginLdap'], 'UTF-8'); - $sLoginLdap = str_replace(array('à', 'â', 'ä', 'á', 'ã', 'å','î', 'ï', 'ì', 'í', 'ô', 'ö', 'ò', 'ó', 'õ', 'ø', 'ù', 'û', 'ü', 'ú', 'é', 'è', 'ê', 'ë', 'ç', 'ÿ', 'ñ'), array('a', 'a', 'a', 'a', 'a', 'a', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'e', 'e', 'e', 'e', 'c', 'y', 'n', ), $sLoginLdap); - $sLdapBind = ldap_bind($sLdapConn,$sLoginLdap,$sPwdLdap); - return $sLdapConn; - } - return "Could not connect to LDAP server."; - } - - /* - * Permet la déconnexion au serveur AD - */ - public function closeLdap($sLdapConn) { - ldap_close($sLdapConn); - } - /** - * Retourne la liste des OU du noeud - */ - - public function getOU($sLdapConn, $sDn) { - $sFilter = "(|(objectclass=organizationalUnit)(objectClass=container))"; - $aOUList = array(); - - if($sDn == null){ - if($this->aLdap['sDnResearch'] == 'null'){ - $sDn = $this->sDcLdap; - }else{ - $sDn = $this->aLdap['sDnResearch'].",".$this->sDcLdap; - $aOUList[] = $sDn; - return $aOUList; - } - } - $oSearch= ldap_list($sLdapConn, $sDn, $sFilter); - $aInfo = ldap_get_entries($sLdapConn, $oSearch); - $i=0; - for ($i=0;$i<$aInfo['count'];$i++) { - $aOUList[] = $aInfo[$i]['dn']; - } - natcasesort($aOUList); - - return $aOUList; - } - - /** - * Retourne la liste des utilisateurs du noeud - */ - public function getUsers($sLdapConn, $sDn) { - $sFilter = "objectclass=person"; - $aUserList = array(); - $oSearch= ldap_list($sLdapConn, $sDn, $sFilter); - $aInfo = ldap_get_entries($sLdapConn, $oSearch); - $i=0; - for ($i=0;$i<$aInfo['count'];$i++) { - //company et department non tester sur openldap car pas de données pour ses attibuts - if($aInfo[$i][$this->userprincipalname][0]!='') { - $aUser = array('userprincipalname'=>'', 'displayname'=>'', 'email'=>'', 'company'=>'', 'department'=>''); - if (!empty($aInfo[$i][$this->userprincipalname])) - $aUser['userprincipalname'] = $aInfo[$i][$this->userprincipalname][0]; - if (!empty($aInfo[$i]['cn'])) - $aUser['displayname'] = $aInfo[$i]['cn'][0]; - if (!empty($aInfo[$i]['mail'])) - $aUser['email'] = $aInfo[$i]['mail'][0]; - if (!empty($aInfo[$i]['company'])) - $aUser['company'] = $aInfo[$i]['company'][0]; - if (!empty($aInfo[$i]['department'])) - $aUser['department'] = $aInfo[$i]['department'][0]; - $aUserList[] = $aUser; - } - } - - if(count($aUserList)>1){ - // Permet de trier le tableau par rapport à "displayname" (insensible à la casse) - foreach ($aUserList as $key => $row) - $displayname[$key] = strtolower($row['displayname']); - array_multisort($displayname, $aUserList); - } - - return $aUserList; - } - function explode_dn($dn, $with_attributes=0) { - $result = ldap_explode_dn($dn, $with_attributes); - //translate hex code into ascii again - foreach($result as $key => $value) $result[$key] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''", $value); - return $result; - } - - public function getCriteria($sLdapConn, $sDn, $sFilter, $sObject) { - $aUserList = array(); - $oSearch= ldap_search($sLdapConn, $sDn, $sFilter); - $aInfo = ldap_get_entries($sLdapConn, $oSearch); - $i=0; - for ($i=0;$i<$aInfo['count'];$i++) { - if ($sObject == "person"){ - if(!empty($aInfo[$i][$this->userprincipalname][0]) && $aInfo[$i][$this->userprincipalname][0] != '') { - $aUser = array('userprincipalname'=>'', 'displayname'=>'', 'email'=>'', 'company'=>'', 'department'=>''); - if (!empty($aInfo[$i][$this->userprincipalname])) - $aUser['userprincipalname'] = $aInfo[$i][$this->userprincipalname][0]; - if (!empty($aInfo[$i]['cn'])) - $aUser['displayname'] = $aInfo[$i]['cn'][0]; - if (!empty($aInfo[$i]['mail'])) - $aUser['email'] = $aInfo[$i]['mail'][0]; - if (!empty($aInfo[$i]['company'])) - $aUser['company'] = $aInfo[$i]['company'][0]; - if (!empty($aInfo[$i]['department'])) - $aUser['department'] = $aInfo[$i]['department'][0]; - $aUserList[] = $aUser; - } - }else{ - $aUserList[] = array('name'=>$aInfo[$i]['name'][0]); - } - } - - if(count($aUserList)>1){ - if ($sObject == "person"){ - // Permet de trier le tableau par rapport à "displayname" (insensible à la casse) - foreach ($aUserList as $key => $row) - $displayname[$key] = strtolower($row['displayname']); - array_multisort($displayname, $aUserList); - }else{ - // Permet de trier le tableau par rapport à "name" (insensible à la casse) - foreach ($aUserList as $key => $row) - if (!empty($row['cn'])) - $name[$key] = strtolower($row['cn']); - if (!empty($name)) - array_multisort($name, $aUserList); - } - } - - return $aUserList; - } - - function get_members($sLdapConn, $sDn, $group, $sLogin, $sDepartment) { - $results = ldap_search($sLdapConn,$sDn, "cn=" . $group); - $member_list = ldap_get_entries($sLdapConn, $results); - $dirty = 0; - $aUserList = array(); - if(count($member_list[0]['member'])>0){ - foreach($member_list[0]['member'] as $member) { - if($dirty == 0) { - $dirty = 1; - } else { - $member_dn = $this->explode_dn($member); - $member_cn = str_ireplace("cn=","",$member_dn[0]); - $member_search = ldap_search($sLdapConn,$sDn, "(cn=" . $member_cn . ")"); - $member_details = ldap_get_entries($sLdapConn, $member_search); - $bGet = true; - if ($sLogin != ""){ - if (!($this->startsWith($member_details[0][$this->userprincipalname][0],$sLogin))){ - $bGet = false; - } - } - if ($sDepartment != ""){ - if (!($this->startsWith($member_details[0]['department'][0],$sDepartment))){ - $bGet = false; - } - } - if ($bGet){ - $aUserList[] = array('userprincipalname'=>$member_details[0][$this->userprincipalname][0], 'displayname'=>$member_details[0]['cn'][0], 'email'=>$member_details[0]['mail'][0], 'company'=>$member_details[0]['company'][0], 'department'=>$member_details[0]['department'][0]); - } - } - } - } - return $aUserList; - } - - function startsWith($haystack, $needle) { - return $needle === "" || strpos($haystack, $needle) === 0; - } - - public function getGroups($sLdapConn, $sDn) { - $sFilter = "(&(|(objectClass=groupOfNames)(objectClass=groupOfUniqueNames)(objectClass=group))(!(objectClass=person)))"; - $aGroupList = array(); - $oSearch= ldap_list($sLdapConn, $sDn, $sFilter); - $aInfo = ldap_get_entries($sLdapConn, $oSearch); - $i=0; - for ($i=0;$i<$aInfo['count'];$i++) { - if($aInfo[$i]['cn'][0]!='') - $aGroupList[] = array('name'=>$aInfo[$i]['cn'][0]); - } - - if(count($aGroupList)>1){ - // Permet de trier le tableau par rapport à "name" (insensible à la casse) - foreach ($aGroupList as $key => $row) - if (!empty($row['cn'])) - $name[$key] = strtolower($row['cn']); - if (!empty($name)) - array_multisort($name, $aGroupList); - } - - return $aGroupList; - } - - public function getGroupInfo($sLdapConn, $sDn, $group) { - $sFilter = '(&(objectClass=group)(name='.$group.'))'; - //Recherche de la personne dans l'AD - $oSearch = ldap_search($sLdapConn, $sDn, $sFilter); - $aInfo = ldap_first_entry($sLdapConn, $oSearch); - $objectSid = ldap_get_values($sLdapConn,$aInfo,"objectSid"); - $hex_Sid= $this->getTextSID($objectSid[0]); - //Récupération des autres groupes de l'utilisateur - $aPrimaryGroupId = explode('-',$hex_Sid); - $iPrimaryGroupId = $aPrimaryGroupId[count($aPrimaryGroupId) - 1]; - return $iPrimaryGroupId; - } - - /* - * Retourne les groupes de l'utilisateur - */ - function getGroup($sLdapConn, $userprincipalname){ - if($this->aLdap['sType'] == 'AD') - $sFilter = "userprincipalname=".$userprincipalname; - else - $sFilter = "(&(|(objectClass=groupOfNames)(objectClass=groupOfUniqueNames))(member=".$sDn."))"; - - $aGroupList = array(); - //Recherche de la personne dans l'AD - if($this->aLdap['sDnResearch'] == '') - $sDn = $this->sDcLdap; - else - $sDn = $this->aLdap['sDnResearch'].",".$this->sDcLdap; - - $oSearch = ldap_search($sLdapConn, $sDn, $sFilter); - $aInfo = ldap_get_entries($sLdapConn, $oSearch); - if($this->aLdap['sType'] == 'AD'){ - //Récupération de son groupe principal - $aGroupList[] = $this->getPrimaryGroup($sLdapConn,$aInfo[0]["primarygroupid"][0], $aInfo[0]["objectsid"][0]); - //Récupération des autres groupes de l'utilisateur - if(!empty($aInfo[0]["memberof"])){ - foreach ($aInfo[0]["memberof"] as $sGroup){ - $sGroup = explode(',',$sGroup); - $aGroupList[] = substr($sGroup[0],3); - } - } - }else{ - foreach ($aInfo as $aGroupInfo){ - $aGroupList[] = $aGroupInfo["cn"][0]; - } - } - natcasesort($aGroupList); - return $aGroupList; - } - - /* - * Retourne le DN d'une personne à partir de son uid - */ - function getDN($sLdapConn, $sUid){ - $sFilter = $this->userprincipalname."=".$sUid; - $sDn = "dc=cpa,dc=fr"; - $oSearch = ldap_search($sLdapConn, $sDn, $sFilter); - $aInfo = ldap_get_entries($sLdapConn, $oSearch); - return $aInfo[0]["dn"]; - } - - /* - * Retourne le groupe principal de l'utilisateur - */ - function getPrimaryGroup($sLdapConn, $iGid, $sUsersId){ - if ($iGid === NULL || $sUsersId === NULL) { return false; } - $oSearch = false; - //Plusieurs calculs pour retrouver les sid du groupe principal - $sGsid = substr_replace($sUsersId, pack('V',$iGid), strlen($sUsersId)-4,4); - - $sFilter = '(&(objectClass=group)(objectsid='.$this->getTextSID($sGsid).'))'; - - // Recherche sur le serveur du SID du groupe - // if($this->aLdap['sDnResearch'] == ''){ - $sDn = $this->sDcLdap; - // } - // else{ - // $sDn = $this->aLdap['sDnResearch'].",".$this->sDcLdap; - // } - - $oSearch= ldap_search($sLdapConn, $sDn, $sFilter); - $aInfo = ldap_get_entries($sLdapConn, $oSearch); - if (isset($aInfo[0]['name'][0])) { - return $aInfo[0]['name'][0]; - } - return false; - } - - /* - * Les 2 fonctions suivantes servent à calculer le SID du groupe principal - */ - function getTextSID($binsid){ - $hex_sid = bin2hex($binsid); - $rev = hexdec(substr($hex_sid, 0, 2)); - $subcount = hexdec(substr($hex_sid, 2, 2)); - $auth = hexdec(substr($hex_sid, 4, 12)); - $result = "$rev-$auth"; - for ($x=0;$x < $subcount; $x++) { - $subauth[$x] = hexdec($this->littleEndian(substr($hex_sid, 16 + ($x * 8), 8))); - $result .= "-" . $subauth[$x]; - } - return 'S-' . $result; - } - function littleEndian($hex){ - $result = ''; - for ($x = strlen($hex) - 2; $x >= 0; $x = $x - 2) { - $result .= substr($hex, $x, 2); - } - return $result; - } - - function getDcLdap(){ - return $this->sDcLdap; - } - -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Autoloader.php b/src/vitis/vas/rest/class/PEAR/Autoloader.php deleted file mode 100755 index 07c4de109901c4af551ec19ed06dc911299b3c24..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Autoloader.php +++ /dev/null @@ -1,223 +0,0 @@ -<?php -/** - * Class auto-loader - * - * PHP versions 4 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Autoloader.php,v 1.14 2008/01/03 20:26:34 cellog Exp $ - * @link http://pear.php.net/manual/en/core.ppm.php#core.ppm.pear-autoloader - * @since File available since Release 0.1 - * @deprecated File deprecated in Release 1.4.0a1 - */ - -// /* vim: set expandtab tabstop=4 shiftwidth=4: */ - -if (!extension_loaded("overload")) { - // die hard without ext/overload - die("Rebuild PHP with the `overload' extension to use PEAR_Autoloader"); -} - -/** - * Include for PEAR_Error and PEAR classes - */ -require_once "PEAR.php"; - -/** - * This class is for objects where you want to separate the code for - * some methods into separate classes. This is useful if you have a - * class with not-frequently-used methods that contain lots of code - * that you would like to avoid always parsing. - * - * The PEAR_Autoloader class provides autoloading and aggregation. - * The autoloading lets you set up in which classes the separated - * methods are found. Aggregation is the technique used to import new - * methods, an instance of each class providing separated methods is - * stored and called every time the aggregated method is called. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/manual/en/core.ppm.php#core.ppm.pear-autoloader - * @since File available since Release 0.1 - * @deprecated File deprecated in Release 1.4.0a1 - */ -class PEAR_Autoloader extends PEAR -{ - // {{{ properties - - /** - * Map of methods and classes where they are defined - * - * @var array - * - * @access private - */ - var $_autoload_map = array(); - - /** - * Map of methods and aggregate objects - * - * @var array - * - * @access private - */ - var $_method_map = array(); - - // }}} - // {{{ addAutoload() - - /** - * Add one or more autoload entries. - * - * @param string $method which method to autoload - * - * @param string $classname (optional) which class to find the method in. - * If the $method parameter is an array, this - * parameter may be omitted (and will be ignored - * if not), and the $method parameter will be - * treated as an associative array with method - * names as keys and class names as values. - * - * @return void - * - * @access public - */ - function addAutoload($method, $classname = null) - { - if (is_array($method)) { - array_walk($method, create_function('$a,&$b', '$b = strtolower($b);')); - $this->_autoload_map = array_merge($this->_autoload_map, $method); - } else { - $this->_autoload_map[strtolower($method)] = $classname; - } - } - - // }}} - // {{{ removeAutoload() - - /** - * Remove an autoload entry. - * - * @param string $method which method to remove the autoload entry for - * - * @return bool TRUE if an entry was removed, FALSE if not - * - * @access public - */ - function removeAutoload($method) - { - $method = strtolower($method); - $ok = isset($this->_autoload_map[$method]); - unset($this->_autoload_map[$method]); - return $ok; - } - - // }}} - // {{{ addAggregateObject() - - /** - * Add an aggregate object to this object. If the specified class - * is not defined, loading it will be attempted following PEAR's - * file naming scheme. All the methods in the class will be - * aggregated, except private ones (name starting with an - * underscore) and constructors. - * - * @param string $classname what class to instantiate for the object. - * - * @return void - * - * @access public - */ - function addAggregateObject($classname) - { - $classname = strtolower($classname); - if (!class_exists($classname)) { - $include_file = preg_replace('/[^a-z0-9]/i', '_', $classname); - include_once $include_file; - } - $obj =& new $classname; - $methods = get_class_methods($classname); - foreach ($methods as $method) { - // don't import priviate methods and constructors - if ($method{0} != '_' && $method != $classname) { - $this->_method_map[$method] = $obj; - } - } - } - - // }}} - // {{{ removeAggregateObject() - - /** - * Remove an aggregate object. - * - * @param string $classname the class of the object to remove - * - * @return bool TRUE if an object was removed, FALSE if not - * - * @access public - */ - function removeAggregateObject($classname) - { - $ok = false; - $classname = strtolower($classname); - reset($this->_method_map); - while (list($method, $obj) = each($this->_method_map)) { - if (is_a($obj, $classname)) { - unset($this->_method_map[$method]); - $ok = true; - } - } - return $ok; - } - - // }}} - // {{{ __call() - - /** - * Overloaded object call handler, called each time an - * undefined/aggregated method is invoked. This method repeats - * the call in the right aggregate object and passes on the return - * value. - * - * @param string $method which method that was called - * - * @param string $args An array of the parameters passed in the - * original call - * - * @return mixed The return value from the aggregated method, or a PEAR - * error if the called method was unknown. - */ - function __call($method, $args, &$retval) - { - $method = strtolower($method); - if (empty($this->_method_map[$method]) && isset($this->_autoload_map[$method])) { - $this->addAggregateObject($this->_autoload_map[$method]); - } - if (isset($this->_method_map[$method])) { - $retval = call_user_func_array(array($this->_method_map[$method], $method), $args); - return true; - } - return false; - } - - // }}} -} - -overload("PEAR_Autoloader"); - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Builder.php b/src/vitis/vas/rest/class/PEAR/Builder.php deleted file mode 100755 index f7986c0096095ce844ba335df726ac2ac8b72464..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Builder.php +++ /dev/null @@ -1,486 +0,0 @@ -<?php -/** - * PEAR_Builder for building PHP extensions (PECL packages) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Builder.php,v 1.34 2008/05/12 23:43:21 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - * - * TODO: log output parameters in PECL command line - * TODO: msdev path in configuration - */ - -/** - * Needed for extending PEAR_Builder - */ -require_once 'PEAR/Common.php'; -require_once 'PEAR/PackageFile.php'; -/** - * Class to handle building (compiling) extensions. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since PHP 4.0.2 - * @see http://pear.php.net/manual/en/core.ppm.pear-builder.php - */ -class PEAR_Builder extends PEAR_Common -{ - // {{{ properties - - var $php_api_version = 0; - var $zend_module_api_no = 0; - var $zend_extension_api_no = 0; - - var $extensions_built = array(); - - /** - * @var string Used for reporting when it is not possible to pass function - * via extra parameter, e.g. log, msdevCallback - */ - var $current_callback = null; - - // used for msdev builds - var $_lastline = null; - var $_firstline = null; - // }}} - // {{{ constructor - - /** - * PEAR_Builder constructor. - * - * @param object $ui user interface object (instance of PEAR_Frontend_*) - * - * @access public - */ - function PEAR_Builder(&$ui) - { - parent::PEAR_Common(); - $this->setFrontendObject($ui); - } - - // }}} - - // {{{ _build_win32() - - /** - * Build an extension from source on windows. - * requires msdev - */ - function _build_win32($descfile, $callback = null) - { - if (is_object($descfile)) { - $pkg = $descfile; - $descfile = $pkg->getPackageFile(); - } else { - $pf = &new PEAR_PackageFile($this->config, $this->debug); - $pkg = &$pf->fromPackageFile($descfile, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($pkg)) { - return $pkg; - } - } - $dir = dirname($descfile); - $old_cwd = getcwd(); - - if (!file_exists($dir) || !is_dir($dir) || !chdir($dir)) { - return $this->raiseError("could not chdir to $dir"); - } - // packages that were in a .tar have the packagefile in this directory - $vdir = $pkg->getPackage() . '-' . $pkg->getVersion(); - if (file_exists($dir) && is_dir($vdir)) { - if (chdir($vdir)) { - $dir = getcwd(); - } else { - return $this->raiseError("could not chdir to " . realpath($vdir)); - } - } - - $this->log(2, "building in $dir"); - - $dsp = $pkg->getPackage().'.dsp'; - if (!file_exists("$dir/$dsp")) { - return $this->raiseError("The DSP $dsp does not exist."); - } - // XXX TODO: make release build type configurable - $command = 'msdev '.$dsp.' /MAKE "'.$pkg->getPackage(). ' - Release"'; - - $err = $this->_runCommand($command, array(&$this, 'msdevCallback')); - if (PEAR::isError($err)) { - return $err; - } - - // figure out the build platform and type - $platform = 'Win32'; - $buildtype = 'Release'; - if (preg_match('/.*?'.$pkg->getPackage().'\s-\s(\w+)\s(.*?)-+/i',$this->_firstline,$matches)) { - $platform = $matches[1]; - $buildtype = $matches[2]; - } - - if (preg_match('/(.*)?\s-\s(\d+).*?(\d+)/',$this->_lastline,$matches)) { - if ($matches[2]) { - // there were errors in the build - return $this->raiseError("There were errors during compilation."); - } - $out = $matches[1]; - } else { - return $this->raiseError("Did not understand the completion status returned from msdev.exe."); - } - - // msdev doesn't tell us the output directory :/ - // open the dsp, find /out and use that directory - $dsptext = join(file($dsp),''); - - // this regex depends on the build platform and type having been - // correctly identified above. - $regex ='/.*?!IF\s+"\$\(CFG\)"\s+==\s+("'. - $pkg->getPackage().'\s-\s'. - $platform.'\s'. - $buildtype.'").*?'. - '\/out:"(.*?)"/is'; - - if ($dsptext && preg_match($regex,$dsptext,$matches)) { - // what we get back is a relative path to the output file itself. - $outfile = realpath($matches[2]); - } else { - return $this->raiseError("Could not retrieve output information from $dsp."); - } - // realpath returns false if the file doesn't exist - if ($outfile && copy($outfile, "$dir/$out")) { - $outfile = "$dir/$out"; - } - - $built_files[] = array( - 'file' => "$outfile", - 'php_api' => $this->php_api_version, - 'zend_mod_api' => $this->zend_module_api_no, - 'zend_ext_api' => $this->zend_extension_api_no, - ); - - return $built_files; - } - // }}} - - // {{{ msdevCallback() - function msdevCallback($what, $data) - { - if (!$this->_firstline) - $this->_firstline = $data; - $this->_lastline = $data; - call_user_func($this->current_callback, $what, $data); - } - // }}} - - // {{{ _harventInstDir - /** - * @param string - * @param string - * @param array - * @access private - */ - function _harvestInstDir($dest_prefix, $dirname, &$built_files) - { - $d = opendir($dirname); - if (!$d) - return false; - - $ret = true; - while (($ent = readdir($d)) !== false) { - if ($ent{0} == '.') - continue; - - $full = $dirname . DIRECTORY_SEPARATOR . $ent; - if (is_dir($full)) { - if (!$this->_harvestInstDir( - $dest_prefix . DIRECTORY_SEPARATOR . $ent, - $full, $built_files)) { - $ret = false; - break; - } - } else { - $dest = $dest_prefix . DIRECTORY_SEPARATOR . $ent; - $built_files[] = array( - 'file' => $full, - 'dest' => $dest, - 'php_api' => $this->php_api_version, - 'zend_mod_api' => $this->zend_module_api_no, - 'zend_ext_api' => $this->zend_extension_api_no, - ); - } - } - closedir($d); - return $ret; - } - - // }}} - - // {{{ build() - - /** - * Build an extension from source. Runs "phpize" in the source - * directory, but compiles in a temporary directory - * (/var/tmp/pear-build-USER/PACKAGE-VERSION). - * - * @param string|PEAR_PackageFile_v* $descfile path to XML package description file, or - * a PEAR_PackageFile object - * - * @param mixed $callback callback function used to report output, - * see PEAR_Builder::_runCommand for details - * - * @return array an array of associative arrays with built files, - * format: - * array( array( 'file' => '/path/to/ext.so', - * 'php_api' => YYYYMMDD, - * 'zend_mod_api' => YYYYMMDD, - * 'zend_ext_api' => YYYYMMDD ), - * ... ) - * - * @access public - * - * @see PEAR_Builder::_runCommand - */ - function build($descfile, $callback = null) - { - $this->current_callback = $callback; - if (PEAR_OS == "Windows") { - return $this->_build_win32($descfile,$callback); - } - if (PEAR_OS != 'Unix') { - return $this->raiseError("building extensions not supported on this platform"); - } - if (is_object($descfile)) { - $pkg = $descfile; - $descfile = $pkg->getPackageFile(); - if (is_a($pkg, 'PEAR_PackageFile_v1')) { - $dir = dirname($descfile); - } else { - $dir = $pkg->_config->get('temp_dir') . '/' . $pkg->getName(); - // automatically delete at session end - $this->addTempFile($dir); - } - } else { - $pf = &new PEAR_PackageFile($this->config); - $pkg = &$pf->fromPackageFile($descfile, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($pkg)) { - return $pkg; - } - $dir = dirname($descfile); - } - $old_cwd = getcwd(); - if (!file_exists($dir) || !is_dir($dir) || !chdir($dir)) { - return $this->raiseError("could not chdir to $dir"); - } - $vdir = $pkg->getPackage() . '-' . $pkg->getVersion(); - if (is_dir($vdir)) { - chdir($vdir); - } - $dir = getcwd(); - $this->log(2, "building in $dir"); - putenv('PATH=' . $this->config->get('bin_dir') . ':' . getenv('PATH')); - $err = $this->_runCommand("phpize", array(&$this, 'phpizeCallback')); - if (PEAR::isError($err)) { - return $err; - } - if (!$err) { - return $this->raiseError("`phpize' failed"); - } - - // {{{ start of interactive part - $configure_command = "$dir/configure"; - $configure_options = $pkg->getConfigureOptions(); - if ($configure_options) { - foreach ($configure_options as $o) { - $default = array_key_exists('default', $o) ? $o['default'] : null; - list($r) = $this->ui->userDialog('build', - array($o['prompt']), - array('text'), - array($default)); - if (substr($o['name'], 0, 5) == 'with-' && - ($r == 'yes' || $r == 'autodetect')) { - $configure_command .= " --$o[name]"; - } else { - $configure_command .= " --$o[name]=".trim($r); - } - } - } - // }}} end of interactive part - - // FIXME make configurable - if(!$user=getenv('USER')){ - $user='defaultuser'; - } - $build_basedir = "/var/tmp/pear-build-$user"; - $build_dir = "$build_basedir/$vdir"; - $inst_dir = "$build_basedir/install-$vdir"; - $this->log(1, "building in $build_dir"); - if (is_dir($build_dir)) { - System::rm(array('-rf', $build_dir)); - } - if (!System::mkDir(array('-p', $build_dir))) { - return $this->raiseError("could not create build dir: $build_dir"); - } - $this->addTempFile($build_dir); - if (!System::mkDir(array('-p', $inst_dir))) { - return $this->raiseError("could not create temporary install dir: $inst_dir"); - } - $this->addTempFile($inst_dir); - - if (getenv('MAKE')) { - $make_command = getenv('MAKE'); - } else { - $make_command = 'make'; - } - $to_run = array( - $configure_command, - $make_command, - "$make_command INSTALL_ROOT=\"$inst_dir\" install", - "find \"$inst_dir\" | xargs ls -dils" - ); - if (!file_exists($build_dir) || !is_dir($build_dir) || !chdir($build_dir)) { - return $this->raiseError("could not chdir to $build_dir"); - } - putenv('PHP_PEAR_VERSION=1.7.2'); - foreach ($to_run as $cmd) { - $err = $this->_runCommand($cmd, $callback); - if (PEAR::isError($err)) { - chdir($old_cwd); - return $err; - } - if (!$err) { - chdir($old_cwd); - return $this->raiseError("`$cmd' failed"); - } - } - if (!($dp = opendir("modules"))) { - chdir($old_cwd); - return $this->raiseError("no `modules' directory found"); - } - $built_files = array(); - $prefix = exec("php-config --prefix"); - $this->_harvestInstDir($prefix, $inst_dir . DIRECTORY_SEPARATOR . $prefix, $built_files); - chdir($old_cwd); - return $built_files; - } - - // }}} - // {{{ phpizeCallback() - - /** - * Message callback function used when running the "phpize" - * program. Extracts the API numbers used. Ignores other message - * types than "cmdoutput". - * - * @param string $what the type of message - * @param mixed $data the message - * - * @return void - * - * @access public - */ - function phpizeCallback($what, $data) - { - if ($what != 'cmdoutput') { - return; - } - $this->log(1, rtrim($data)); - if (preg_match('/You should update your .aclocal.m4/', $data)) { - return; - } - $matches = array(); - if (preg_match('/^\s+(\S[^:]+):\s+(\d{8})/', $data, $matches)) { - $member = preg_replace('/[^a-z]/', '_', strtolower($matches[1])); - $apino = (int)$matches[2]; - if (isset($this->$member)) { - $this->$member = $apino; - //$msg = sprintf("%-22s : %d", $matches[1], $apino); - //$this->log(1, $msg); - } - } - } - - // }}} - // {{{ _runCommand() - - /** - * Run an external command, using a message callback to report - * output. The command will be run through popen and output is - * reported for every line with a "cmdoutput" message with the - * line string, including newlines, as payload. - * - * @param string $command the command to run - * - * @param mixed $callback (optional) function to use as message - * callback - * - * @return bool whether the command was successful (exit code 0 - * means success, any other means failure) - * - * @access private - */ - function _runCommand($command, $callback = null) - { - $this->log(1, "running: $command"); - $pp = popen("$command 2>&1", "r"); - if (!$pp) { - return $this->raiseError("failed to run `$command'"); - } - if ($callback && $callback[0]->debug == 1) { - $olddbg = $callback[0]->debug; - $callback[0]->debug = 2; - } - - while ($line = fgets($pp, 1024)) { - if ($callback) { - call_user_func($callback, 'cmdoutput', $line); - } else { - $this->log(2, rtrim($line)); - } - } - if ($callback && isset($olddbg)) { - $callback[0]->debug = $olddbg; - } - if (is_resource($pp)) { - $exitcode = pclose($pp); - } else { - $exitcode = -1; - } - return ($exitcode == 0); - } - - // }}} - // {{{ log() - - function log($level, $msg) - { - if ($this->current_callback) { - if ($this->debug >= $level) { - call_user_func($this->current_callback, 'output', $msg); - } - return; - } - return PEAR_Common::log($level, $msg); - } - - // }}} -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/ChannelFile.php b/src/vitis/vas/rest/class/PEAR/ChannelFile.php deleted file mode 100755 index 46dd691b54e2799a3395375b74d9810d8c5c8e33..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/ChannelFile.php +++ /dev/null @@ -1,1615 +0,0 @@ -<?php -/** - * PEAR_ChannelFile, the channel handling class - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: ChannelFile.php,v 1.80 2008/01/03 20:26:34 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Needed for error handling - */ -require_once 'PEAR/ErrorStack.php'; -require_once 'PEAR/XMLParser.php'; -require_once 'PEAR/Common.php'; - -/** - * Error code if the channel.xml <channel> tag does not contain a valid version - */ -define('PEAR_CHANNELFILE_ERROR_NO_VERSION', 1); -/** - * Error code if the channel.xml <channel> tag version is not supported (version 1.0 is the only supported version, - * currently - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_VERSION', 2); - -/** - * Error code if parsing is attempted with no xml extension - */ -define('PEAR_CHANNELFILE_ERROR_NO_XML_EXT', 3); - -/** - * Error code if creating the xml parser resource fails - */ -define('PEAR_CHANNELFILE_ERROR_CANT_MAKE_PARSER', 4); - -/** - * Error code used for all sax xml parsing errors - */ -define('PEAR_CHANNELFILE_ERROR_PARSER_ERROR', 5); - -/**#@+ - * Validation errors - */ -/** - * Error code when channel name is missing - */ -define('PEAR_CHANNELFILE_ERROR_NO_NAME', 6); -/** - * Error code when channel name is invalid - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_NAME', 7); -/** - * Error code when channel summary is missing - */ -define('PEAR_CHANNELFILE_ERROR_NO_SUMMARY', 8); -/** - * Error code when channel summary is multi-line - */ -define('PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY', 9); -/** - * Error code when channel server is missing for xmlrpc or soap protocol - */ -define('PEAR_CHANNELFILE_ERROR_NO_HOST', 10); -/** - * Error code when channel server is invalid for xmlrpc or soap protocol - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_HOST', 11); -/** - * Error code when a mirror name is invalid - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_MIRROR', 21); -/** - * Error code when a mirror type is invalid - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_MIRRORTYPE', 22); -/** - * Error code when an attempt is made to generate xml, but the parsed content is invalid - */ -define('PEAR_CHANNELFILE_ERROR_INVALID', 23); -/** - * Error code when an empty package name validate regex is passed in - */ -define('PEAR_CHANNELFILE_ERROR_EMPTY_REGEX', 24); -/** - * Error code when a <function> tag has no version - */ -define('PEAR_CHANNELFILE_ERROR_NO_FUNCTIONVERSION', 25); -/** - * Error code when a <function> tag has no name - */ -define('PEAR_CHANNELFILE_ERROR_NO_FUNCTIONNAME', 26); -/** - * Error code when a <validatepackage> tag has no name - */ -define('PEAR_CHANNELFILE_ERROR_NOVALIDATE_NAME', 27); -/** - * Error code when a <validatepackage> tag has no version attribute - */ -define('PEAR_CHANNELFILE_ERROR_NOVALIDATE_VERSION', 28); -/** - * Error code when a mirror does not exist but is called for in one of the set* - * methods. - */ -define('PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND', 32); -/** - * Error code when a server port is not numeric - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_PORT', 33); -/** - * Error code when <static> contains no version attribute - */ -define('PEAR_CHANNELFILE_ERROR_NO_STATICVERSION', 34); -/** - * Error code when <baseurl> contains no type attribute in a <rest> protocol definition - */ -define('PEAR_CHANNELFILE_ERROR_NOBASEURLTYPE', 35); -/** - * Error code when a mirror is defined and the channel.xml represents the __uri pseudo-channel - */ -define('PEAR_CHANNELFILE_URI_CANT_MIRROR', 36); -/** - * Error code when ssl attribute is present and is not "yes" - */ -define('PEAR_CHANNELFILE_ERROR_INVALID_SSL', 37); -/**#@-*/ - -/** - * Mirror types allowed. Currently only internet servers are recognized. - */ -$GLOBALS['_PEAR_CHANNELS_MIRROR_TYPES'] = array('server'); - - -/** - * The Channel handling class - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_ChannelFile { - /** - * @access private - * @var PEAR_ErrorStack - * @access private - */ - var $_stack; - - /** - * Supported channel.xml versions, for parsing - * @var array - * @access private - */ - var $_supportedVersions = array('1.0'); - - /** - * Parsed channel information - * @var array - * @access private - */ - var $_channelInfo; - - /** - * index into the subchannels array, used for parsing xml - * @var int - * @access private - */ - var $_subchannelIndex; - - /** - * index into the mirrors array, used for parsing xml - * @var int - * @access private - */ - var $_mirrorIndex; - - /** - * Flag used to determine the validity of parsed content - * @var boolean - * @access private - */ - var $_isValid = false; - - function PEAR_ChannelFile() - { - $this->_stack = &new PEAR_ErrorStack('PEAR_ChannelFile'); - $this->_stack->setErrorMessageTemplate($this->_getErrorMessage()); - $this->_isValid = false; - } - - /** - * @return array - * @access protected - */ - function _getErrorMessage() - { - return - array( - PEAR_CHANNELFILE_ERROR_INVALID_VERSION => - 'While parsing channel.xml, an invalid version number "%version% was passed in, expecting one of %versions%', - PEAR_CHANNELFILE_ERROR_NO_VERSION => - 'No version number found in <channel> tag', - PEAR_CHANNELFILE_ERROR_NO_XML_EXT => - '%error%', - PEAR_CHANNELFILE_ERROR_CANT_MAKE_PARSER => - 'Unable to create XML parser', - PEAR_CHANNELFILE_ERROR_PARSER_ERROR => - '%error%', - PEAR_CHANNELFILE_ERROR_NO_NAME => - 'Missing channel name', - PEAR_CHANNELFILE_ERROR_INVALID_NAME => - 'Invalid channel %tag% "%name%"', - PEAR_CHANNELFILE_ERROR_NO_SUMMARY => - 'Missing channel summary', - PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY => - 'Channel summary should be on one line, but is multi-line', - PEAR_CHANNELFILE_ERROR_NO_HOST => - 'Missing channel server for %type% server', - PEAR_CHANNELFILE_ERROR_INVALID_HOST => - 'Server name "%server%" is invalid for %type% server', - PEAR_CHANNELFILE_ERROR_INVALID_MIRROR => - 'Invalid mirror name "%name%", mirror type %type%', - PEAR_CHANNELFILE_ERROR_INVALID_MIRRORTYPE => - 'Invalid mirror type "%type%"', - PEAR_CHANNELFILE_ERROR_INVALID => - 'Cannot generate xml, contents are invalid', - PEAR_CHANNELFILE_ERROR_EMPTY_REGEX => - 'packagenameregex cannot be empty', - PEAR_CHANNELFILE_ERROR_NO_FUNCTIONVERSION => - '%parent% %protocol% function has no version', - PEAR_CHANNELFILE_ERROR_NO_FUNCTIONNAME => - '%parent% %protocol% function has no name', - PEAR_CHANNELFILE_ERROR_NOBASEURLTYPE => - '%parent% rest baseurl has no type', - PEAR_CHANNELFILE_ERROR_NOVALIDATE_NAME => - 'Validation package has no name in <validatepackage> tag', - PEAR_CHANNELFILE_ERROR_NOVALIDATE_VERSION => - 'Validation package "%package%" has no version', - PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND => - 'Mirror "%mirror%" does not exist', - PEAR_CHANNELFILE_ERROR_INVALID_PORT => - 'Port "%port%" must be numeric', - PEAR_CHANNELFILE_ERROR_NO_STATICVERSION => - '<static> tag must contain version attribute', - PEAR_CHANNELFILE_URI_CANT_MIRROR => - 'The __uri pseudo-channel cannot have mirrors', - PEAR_CHANNELFILE_ERROR_INVALID_SSL => - '%server% has invalid ssl attribute "%ssl%" can only be yes or not present', - ); - } - - /** - * @param string contents of package.xml file - * @return bool success of parsing - */ - function fromXmlString($data) - { - if (preg_match('/<channel\s+version="([0-9]+\.[0-9]+)"/', $data, $channelversion)) { - if (!in_array($channelversion[1], $this->_supportedVersions)) { - $this->_stack->push(PEAR_CHANNELFILE_ERROR_INVALID_VERSION, 'error', - array('version' => $channelversion[1])); - return false; - } - $parser = new PEAR_XMLParser; - $result = $parser->parse($data); - if ($result !== true) { - if ($result->getCode() == 1) { - $this->_stack->push(PEAR_CHANNELFILE_ERROR_NO_XML_EXT, 'error', - array('error' => $result->getMessage())); - } else { - $this->_stack->push(PEAR_CHANNELFILE_ERROR_CANT_MAKE_PARSER, 'error'); - } - return false; - } - $this->_channelInfo = $parser->getData(); - return true; - } else { - $this->_stack->push(PEAR_CHANNELFILE_ERROR_NO_VERSION, 'error', array('xml' => $data)); - return false; - } - } - - /** - * @return array - */ - function toArray() - { - if (!$this->_isValid && !$this->validate()) { - return false; - } - return $this->_channelInfo; - } - - /** - * @param array - * @static - * @return PEAR_ChannelFile|false false if invalid - */ - function &fromArray($data, $compatibility = false, $stackClass = 'PEAR_ErrorStack') - { - $a = new PEAR_ChannelFile($compatibility, $stackClass); - $a->_fromArray($data); - if (!$a->validate()) { - $a = false; - return $a; - } - return $a; - } - - /** - * Unlike {@link fromArray()} this does not do any validation - * @param array - * @static - * @return PEAR_ChannelFile - */ - function &fromArrayWithErrors($data, $compatibility = false, - $stackClass = 'PEAR_ErrorStack') - { - $a = new PEAR_ChannelFile($compatibility, $stackClass); - $a->_fromArray($data); - return $a; - } - - /** - * @param array - * @access private - */ - function _fromArray($data) - { - $this->_channelInfo = $data; - } - - /** - * Wrapper to {@link PEAR_ErrorStack::getErrors()} - * @param boolean determines whether to purge the error stack after retrieving - * @return array - */ - function getErrors($purge = false) - { - return $this->_stack->getErrors($purge); - } - - /** - * Unindent given string (?) - * - * @param string $str The string that has to be unindented. - * @return string - * @access private - */ - function _unIndent($str) - { - // remove leading newlines - $str = preg_replace('/^[\r\n]+/', '', $str); - // find whitespace at the beginning of the first line - $indent_len = strspn($str, " \t"); - $indent = substr($str, 0, $indent_len); - $data = ''; - // remove the same amount of whitespace from following lines - foreach (explode("\n", $str) as $line) { - if (substr($line, 0, $indent_len) == $indent) { - $data .= substr($line, $indent_len) . "\n"; - } - } - return $data; - } - - /** - * Parse a channel.xml file. Expects the name of - * a channel xml file as input. - * - * @param string $descfile name of channel xml file - * @return bool success of parsing - */ - function fromXmlFile($descfile) - { - if (!file_exists($descfile) || !is_file($descfile) || !is_readable($descfile) || - (!$fp = fopen($descfile, 'r'))) { - require_once 'PEAR.php'; - return PEAR::raiseError("Unable to open $descfile"); - } - - // read the whole thing so we only get one cdata callback - // for each block of cdata - fclose($fp); - $data = file_get_contents($descfile); - return $this->fromXmlString($data); - } - - /** - * Parse channel information from different sources - * - * This method is able to extract information about a channel - * from an .xml file or a string - * - * @access public - * @param string Filename of the source or the source itself - * @return bool - */ - function fromAny($info) - { - if (is_string($info) && file_exists($info) && strlen($info) < 255) { - $tmp = substr($info, -4); - if ($tmp == '.xml') { - $info = $this->fromXmlFile($info); - } else { - $fp = fopen($info, "r"); - $test = fread($fp, 5); - fclose($fp); - if ($test == "<?xml") { - $info = $this->fromXmlFile($info); - } - } - if (PEAR::isError($info)) { - require_once 'PEAR.php'; - return PEAR::raiseError($info); - } - } - if (is_string($info)) { - $info = $this->fromXmlString($info); - } - return $info; - } - - /** - * Return an XML document based on previous parsing and modifications - * - * @return string XML data - * - * @access public - */ - function toXml() - { - if (!$this->_isValid && !$this->validate()) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID); - return false; - } - if (!isset($this->_channelInfo['attribs']['version'])) { - $this->_channelInfo['attribs']['version'] = '1.0'; - } - $channelInfo = $this->_channelInfo; - $ret = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n"; - $ret .= "<channel version=\"" . - $channelInfo['attribs']['version'] . "\" xmlns=\"http://pear.php.net/channel-1.0\" - xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" - xsi:schemaLocation=\"http://pear.php.net/dtd/channel-" - . $channelInfo['attribs']['version'] . " http://pear.php.net/dtd/channel-" . - $channelInfo['attribs']['version'] . ".xsd\"> - <name>$channelInfo[name]</name> - <summary>" . htmlspecialchars($channelInfo['summary'])."</summary> -"; - if (isset($channelInfo['suggestedalias'])) { - $ret .= ' <suggestedalias>' . $channelInfo['suggestedalias'] . "</suggestedalias>\n"; - } - if (isset($channelInfo['validatepackage'])) { - $ret .= ' <validatepackage version="' . - $channelInfo['validatepackage']['attribs']['version']. '">' . - htmlspecialchars($channelInfo['validatepackage']['_content']) . - "</validatepackage>\n"; - } - $ret .= " <servers>\n"; - $ret .= ' <primary'; - if (isset($channelInfo['servers']['primary']['attribs']['ssl'])) { - $ret .= ' ssl="' . $channelInfo['servers']['primary']['attribs']['ssl'] . '"'; - } - if (isset($channelInfo['servers']['primary']['attribs']['port'])) { - $ret .= ' port="' . $channelInfo['servers']['primary']['attribs']['port'] . '"'; - } - $ret .= ">\n"; - if (isset($channelInfo['servers']['primary']['xmlrpc'])) { - $ret .= $this->_makeXmlrpcXml($channelInfo['servers']['primary']['xmlrpc'], ' '); - } - if (isset($channelInfo['servers']['primary']['rest'])) { - $ret .= $this->_makeRestXml($channelInfo['servers']['primary']['rest'], ' '); - } - if (isset($channelInfo['servers']['primary']['soap'])) { - $ret .= $this->_makeSoapXml($channelInfo['servers']['primary']['soap'], ' '); - } - $ret .= " </primary>\n"; - if (isset($channelInfo['servers']['mirror'])) { - $ret .= $this->_makeMirrorsXml($channelInfo); - } - $ret .= " </servers>\n"; - $ret .= "</channel>"; - return str_replace("\r", "\n", str_replace("\r\n", "\n", $ret)); - } - - /** - * Generate the <xmlrpc> tag - * @access private - */ - function _makeXmlrpcXml($info, $indent) - { - $ret = $indent . "<xmlrpc"; - if (isset($info['attribs']['path'])) { - $ret .= ' path="' . htmlspecialchars($info['attribs']['path']) . '"'; - } - $ret .= ">\n"; - $ret .= $this->_makeFunctionsXml($info['function'], "$indent "); - $ret .= $indent . "</xmlrpc>\n"; - return $ret; - } - - /** - * Generate the <soap> tag - * @access private - */ - function _makeSoapXml($info, $indent) - { - $ret = $indent . "<soap"; - if (isset($info['attribs']['path'])) { - $ret .= ' path="' . htmlspecialchars($info['attribs']['path']) . '"'; - } - $ret .= ">\n"; - $ret .= $this->_makeFunctionsXml($info['function'], "$indent "); - $ret .= $indent . "</soap>\n"; - return $ret; - } - - /** - * Generate the <rest> tag - * @access private - */ - function _makeRestXml($info, $indent) - { - $ret = $indent . "<rest>\n"; - if (!isset($info['baseurl'][0])) { - $info['baseurl'] = array($info['baseurl']); - } - foreach ($info['baseurl'] as $url) { - $ret .= "$indent <baseurl type=\"" . $url['attribs']['type'] . "\""; - $ret .= ">" . $url['_content'] . "</baseurl>\n"; - } - $ret .= $indent . "</rest>\n"; - return $ret; - } - - /** - * Generate the <mirrors> tag - * @access private - */ - function _makeMirrorsXml($channelInfo) - { - $ret = ""; - if (!isset($channelInfo['servers']['mirror'][0])) { - $channelInfo['servers']['mirror'] = array($channelInfo['servers']['mirror']); - } - foreach ($channelInfo['servers']['mirror'] as $mirror) { - $ret .= ' <mirror host="' . $mirror['attribs']['host'] . '"'; - if (isset($mirror['attribs']['port'])) { - $ret .= ' port="' . $mirror['attribs']['port'] . '"'; - } - if (isset($mirror['attribs']['ssl'])) { - $ret .= ' ssl="' . $mirror['attribs']['ssl'] . '"'; - } - $ret .= ">\n"; - if (isset($mirror['xmlrpc']) || isset($mirror['soap'])) { - if (isset($mirror['xmlrpc'])) { - $ret .= $this->_makeXmlrpcXml($mirror['xmlrpc'], ' '); - } - if (isset($mirror['rest'])) { - $ret .= $this->_makeRestXml($mirror['rest'], ' '); - } - if (isset($mirror['soap'])) { - $ret .= $this->_makeSoapXml($mirror['soap'], ' '); - } - $ret .= " </mirror>\n"; - } else { - $ret .= "/>\n"; - } - } - return $ret; - } - - /** - * Generate the <functions> tag - * @access private - */ - function _makeFunctionsXml($functions, $indent, $rest = false) - { - $ret = ''; - if (!isset($functions[0])) { - $functions = array($functions); - } - foreach ($functions as $function) { - $ret .= "$indent<function version=\"" . $function['attribs']['version'] . "\""; - if ($rest) { - $ret .= ' uri="' . $function['attribs']['uri'] . '"'; - } - $ret .= ">" . $function['_content'] . "</function>\n"; - } - return $ret; - } - - /** - * Validation error. Also marks the object contents as invalid - * @param error code - * @param array error information - * @access private - */ - function _validateError($code, $params = array()) - { - $this->_stack->push($code, 'error', $params); - $this->_isValid = false; - } - - /** - * Validation warning. Does not mark the object contents invalid. - * @param error code - * @param array error information - * @access private - */ - function _validateWarning($code, $params = array()) - { - $this->_stack->push($code, 'warning', $params); - } - - /** - * Validate parsed file. - * - * @access public - * @return boolean - */ - function validate() - { - $this->_isValid = true; - $info = $this->_channelInfo; - if (empty($info['name'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_NAME); - } elseif (!$this->validChannelServer($info['name'])) { - if ($info['name'] != '__uri') { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, array('tag' => 'name', - 'name' => $info['name'])); - } - } - if (empty($info['summary'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_SUMMARY); - } elseif (strpos(trim($info['summary']), "\n") !== false) { - $this->_validateWarning(PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY, - array('summary' => $info['summary'])); - } - if (isset($info['suggestedalias'])) { - if (!$this->validChannelServer($info['suggestedalias'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, - array('tag' => 'suggestedalias', 'name' =>$info['suggestedalias'])); - } - } - if (isset($info['localalias'])) { - if (!$this->validChannelServer($info['localalias'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, - array('tag' => 'localalias', 'name' =>$info['localalias'])); - } - } - if (isset($info['validatepackage'])) { - if (!isset($info['validatepackage']['_content'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NOVALIDATE_NAME); - } - if (!isset($info['validatepackage']['attribs']['version'])) { - $content = isset($info['validatepackage']['_content']) ? - $info['validatepackage']['_content'] : - null; - $this->_validateError(PEAR_CHANNELFILE_ERROR_NOVALIDATE_VERSION, - array('package' => $content)); - } - } - if (isset($info['servers']['primary']['attribs']['port']) && - !is_numeric($info['servers']['primary']['attribs']['port'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_PORT, - array('port' => $info['servers']['primary']['attribs']['port'])); - } - if (isset($info['servers']['primary']['attribs']['ssl']) && - $info['servers']['primary']['attribs']['ssl'] != 'yes') { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_SSL, - array('ssl' => $info['servers']['primary']['attribs']['ssl'], - 'server' => $info['name'])); - } - - if (isset($info['servers']['primary']['xmlrpc']) && - isset($info['servers']['primary']['xmlrpc']['function'])) { - $this->_validateFunctions('xmlrpc', $info['servers']['primary']['xmlrpc']['function']); - } - if (isset($info['servers']['primary']['soap']) && - isset($info['servers']['primary']['soap']['function'])) { - $this->_validateFunctions('soap', $info['servers']['primary']['soap']['function']); - } - if (isset($info['servers']['primary']['rest']) && - isset($info['servers']['primary']['rest']['baseurl'])) { - $this->_validateFunctions('rest', $info['servers']['primary']['rest']['baseurl']); - } - if (isset($info['servers']['mirror'])) { - if ($this->_channelInfo['name'] == '__uri') { - $this->_validateError(PEAR_CHANNELFILE_URI_CANT_MIRROR); - } - if (!isset($info['servers']['mirror'][0])) { - $info['servers']['mirror'] = array($info['servers']['mirror']); - } - foreach ($info['servers']['mirror'] as $mirror) { - if (!isset($mirror['attribs']['host'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_HOST, - array('type' => 'mirror')); - } elseif (!$this->validChannelServer($mirror['attribs']['host'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_HOST, - array('server' => $mirror['attribs']['host'], 'type' => 'mirror')); - } - if (isset($mirror['attribs']['ssl']) && $mirror['attribs']['ssl'] != 'yes') { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_SSL, - array('ssl' => $info['ssl'], 'server' => $mirror['attribs']['host'])); - } - if (isset($mirror['xmlrpc'])) { - $this->_validateFunctions('xmlrpc', - $mirror['xmlrpc']['function'], $mirror['attribs']['host']); - } - if (isset($mirror['soap'])) { - $this->_validateFunctions('soap', $mirror['soap']['function'], - $mirror['attribs']['host']); - } - if (isset($mirror['rest'])) { - $this->_validateFunctions('rest', $mirror['rest']['baseurl'], - $mirror['attribs']['host']); - } - } - } - return $this->_isValid; - } - - /** - * @param string xmlrpc or soap - protocol name this function applies to - * @param array the functions - * @param string the name of the parent element (mirror name, for instance) - */ - function _validateFunctions($protocol, $functions, $parent = '') - { - if (!isset($functions[0])) { - $functions = array($functions); - } - foreach ($functions as $function) { - if (!isset($function['_content']) || empty($function['_content'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_FUNCTIONNAME, - array('parent' => $parent, 'protocol' => $protocol)); - } - if ($protocol == 'rest') { - if (!isset($function['attribs']['type']) || - empty($function['attribs']['type'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_BASEURLTYPE, - array('parent' => $parent, 'protocol' => $protocol)); - } - } else { - if (!isset($function['attribs']['version']) || - empty($function['attribs']['version'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_FUNCTIONVERSION, - array('parent' => $parent, 'protocol' => $protocol)); - } - } - } - } - - /** - * Test whether a string contains a valid channel server. - * @param string $ver the package version to test - * @return bool - */ - function validChannelServer($server) - { - if ($server == '__uri') { - return true; - } - return (bool) preg_match(PEAR_CHANNELS_SERVER_PREG, $server); - } - - /** - * @return string|false - */ - function getName() - { - if (isset($this->_channelInfo['name'])) { - return $this->_channelInfo['name']; - } else { - return false; - } - } - - /** - * @return string|false - */ - function getServer() - { - if (isset($this->_channelInfo['name'])) { - return $this->_channelInfo['name']; - } else { - return false; - } - } - - /** - * @return int|80 port number to connect to - */ - function getPort($mirror = false) - { - if ($mirror) { - if ($mir = $this->getMirror($mirror)) { - if (isset($mir['attribs']['port'])) { - return $mir['attribs']['port']; - } else { - if ($this->getSSL($mirror)) { - return 443; - } - return 80; - } - } - return false; - } - if (isset($this->_channelInfo['servers']['primary']['attribs']['port'])) { - return $this->_channelInfo['servers']['primary']['attribs']['port']; - } - if ($this->getSSL()) { - return 443; - } - return 80; - } - - /** - * @return bool Determines whether secure sockets layer (SSL) is used to connect to this channel - */ - function getSSL($mirror = false) - { - if ($mirror) { - if ($mir = $this->getMirror($mirror)) { - if (isset($mir['attribs']['ssl'])) { - return true; - } else { - return false; - } - } - return false; - } - if (isset($this->_channelInfo['servers']['primary']['attribs']['ssl'])) { - return true; - } - return false; - } - - /** - * @return string|false - */ - function getSummary() - { - if (isset($this->_channelInfo['summary'])) { - return $this->_channelInfo['summary']; - } else { - return false; - } - } - - /** - * @param string xmlrpc or soap - * @param string|false mirror name or false for primary server - */ - function getPath($protocol, $mirror = false) - { - if (!in_array($protocol, array('xmlrpc', 'soap'))) { - return false; - } - if ($mirror) { - if (!($mir = $this->getMirror($mirror))) { - return false; - } - if (isset($mir[$protocol]['attribs']['path'])) { - return $mir[$protocol]['attribs']['path']; - } else { - return $protocol . '.php'; - } - } elseif (isset($this->_channelInfo['servers']['primary'][$protocol]['attribs']['path'])) { - return $this->_channelInfo['servers']['primary'][$protocol]['attribs']['path']; - } - return $protocol . '.php'; - } - - /** - * @param string protocol type (xmlrpc, soap) - * @param string Mirror name - * @return array|false - */ - function getFunctions($protocol, $mirror = false) - { - if ($this->getName() == '__uri') { - return false; - } - if ($protocol == 'rest') { - $function = 'baseurl'; - } else { - $function = 'function'; - } - if ($mirror) { - if ($mir = $this->getMirror($mirror)) { - if (isset($mir[$protocol][$function])) { - return $mir[$protocol][$function]; - } - } - return false; - } - if (isset($this->_channelInfo['servers']['primary'][$protocol][$function])) { - return $this->_channelInfo['servers']['primary'][$protocol][$function]; - } else { - return false; - } - } - - /** - * @param string Protocol type - * @param string Function name (null to return the - * first protocol of the type requested) - * @param string Mirror name, if any - * @return array - */ - function getFunction($type, $name = null, $mirror = false) - { - $protocols = $this->getFunctions($type, $mirror); - if (!$protocols) { - return false; - } - foreach ($protocols as $protocol) { - if ($name === null) { - return $protocol; - } - if ($protocol['_content'] != $name) { - continue; - } - return $protocol; - } - return false; - } - - /** - * @param string protocol type - * @param string protocol name - * @param string version - * @param string mirror name - * @return boolean - */ - function supports($type, $name = null, $mirror = false, $version = '1.0') - { - $protocols = $this->getFunctions($type, $mirror); - if (!$protocols) { - return false; - } - foreach ($protocols as $protocol) { - if ($protocol['attribs']['version'] != $version) { - continue; - } - if ($name === null) { - return true; - } - if ($protocol['_content'] != $name) { - continue; - } - return true; - } - return false; - } - - /** - * Determines whether a channel supports Representational State Transfer (REST) protocols - * for retrieving channel information - * @param string - * @return bool - */ - function supportsREST($mirror = false) - { - if ($mirror == $this->_channelInfo['name']) { - $mirror = false; - } - if ($mirror) { - if ($mir = $this->getMirror($mirror)) { - return isset($mir['rest']); - } - return false; - } - return isset($this->_channelInfo['servers']['primary']['rest']); - } - - /** - * Get the URL to access a base resource. - * - * Hyperlinks in the returned xml will be used to retrieve the proper information - * needed. This allows extreme extensibility and flexibility in implementation - * @param string Resource Type to retrieve - */ - function getBaseURL($resourceType, $mirror = false) - { - if ($mirror == $this->_channelInfo['name']) { - $mirror = false; - } - if ($mirror) { - if ($mir = $this->getMirror($mirror)) { - $rest = $mir['rest']; - } else { - return false; - } - } else { - $rest = $this->_channelInfo['servers']['primary']['rest']; - } - if (!isset($rest['baseurl'][0])) { - $rest['baseurl'] = array($rest['baseurl']); - } - foreach ($rest['baseurl'] as $baseurl) { - if (strtolower($baseurl['attribs']['type']) == strtolower($resourceType)) { - return $baseurl['_content']; - } - } - return false; - } - - /** - * Since REST does not implement RPC, provide this as a logical wrapper around - * resetFunctions for REST - * @param string|false mirror name, if any - */ - function resetREST($mirror = false) - { - return $this->resetFunctions('rest', $mirror); - } - - /** - * Empty all protocol definitions - * @param string protocol type (xmlrpc, soap) - * @param string|false mirror name, if any - */ - function resetFunctions($type, $mirror = false) - { - if ($mirror) { - if (isset($this->_channelInfo['servers']['mirror'])) { - $mirrors = $this->_channelInfo['servers']['mirror']; - if (!isset($mirrors[0])) { - $mirrors = array($mirrors); - } - foreach ($mirrors as $i => $mir) { - if ($mir['attribs']['host'] == $mirror) { - if (isset($this->_channelInfo['servers']['mirror'][$i][$type])) { - unset($this->_channelInfo['servers']['mirror'][$i][$type]); - } - return true; - } - } - return false; - } else { - return false; - } - } else { - if (isset($this->_channelInfo['servers']['primary'][$type])) { - unset($this->_channelInfo['servers']['primary'][$type]); - } - return true; - } - } - - /** - * Set a channel's protocols to the protocols supported by pearweb - */ - function setDefaultPEARProtocols($version = '1.0', $mirror = false) - { - switch ($version) { - case '1.0' : - $this->resetFunctions('xmlrpc', $mirror); - $this->resetFunctions('soap', $mirror); - $this->resetREST($mirror); - $this->addFunction('xmlrpc', '1.0', 'logintest', $mirror); - $this->addFunction('xmlrpc', '1.0', 'package.listLatestReleases', $mirror); - $this->addFunction('xmlrpc', '1.0', 'package.listAll', $mirror); - $this->addFunction('xmlrpc', '1.0', 'package.info', $mirror); - $this->addFunction('xmlrpc', '1.0', 'package.getDownloadURL', $mirror); - $this->addFunction('xmlrpc', '1.1', 'package.getDownloadURL', $mirror); - $this->addFunction('xmlrpc', '1.0', 'package.getDepDownloadURL', $mirror); - $this->addFunction('xmlrpc', '1.1', 'package.getDepDownloadURL', $mirror); - $this->addFunction('xmlrpc', '1.0', 'package.search', $mirror); - $this->addFunction('xmlrpc', '1.0', 'channel.listAll', $mirror); - return true; - break; - default : - return false; - break; - } - } - - /** - * @return array - */ - function getMirrors() - { - if (isset($this->_channelInfo['servers']['mirror'])) { - $mirrors = $this->_channelInfo['servers']['mirror']; - if (!isset($mirrors[0])) { - $mirrors = array($mirrors); - } - return $mirrors; - } else { - return array(); - } - } - - /** - * Get the unserialized XML representing a mirror - * @return array|false - */ - function getMirror($server) - { - foreach ($this->getMirrors() as $mirror) { - if ($mirror['attribs']['host'] == $server) { - return $mirror; - } - } - return false; - } - - /** - * @param string - * @return string|false - * @error PEAR_CHANNELFILE_ERROR_NO_NAME - * @error PEAR_CHANNELFILE_ERROR_INVALID_NAME - */ - function setName($name) - { - return $this->setServer($name); - } - - /** - * Set the socket number (port) that is used to connect to this channel - * @param integer - * @param string|false name of the mirror server, or false for the primary - */ - function setPort($port, $mirror = false) - { - if ($mirror) { - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - if (isset($this->_channelInfo['servers']['mirror'][0])) { - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - $this->_channelInfo['servers']['mirror'][$i]['attribs']['port'] = $port; - return true; - } - } - return false; - } elseif ($this->_channelInfo['servers']['mirror']['attribs']['host'] == $mirror) { - $this->_channelInfo['servers']['mirror']['attribs']['port'] = $port; - $this->_isValid = false; - return true; - } - } - $this->_channelInfo['servers']['primary']['attribs']['port'] = $port; - $this->_isValid = false; - return true; - } - - /** - * Set the socket number (port) that is used to connect to this channel - * @param bool Determines whether to turn on SSL support or turn it off - * @param string|false name of the mirror server, or false for the primary - */ - function setSSL($ssl = true, $mirror = false) - { - if ($mirror) { - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - if (isset($this->_channelInfo['servers']['mirror'][0])) { - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - if (!$ssl) { - if (isset($this->_channelInfo['servers']['mirror'][$i] - ['attribs']['ssl'])) { - unset($this->_channelInfo['servers']['mirror'][$i]['attribs']['ssl']); - } - } else { - $this->_channelInfo['servers']['mirror'][$i]['attribs']['ssl'] = 'yes'; - } - return true; - } - } - return false; - } elseif ($this->_channelInfo['servers']['mirror']['attribs']['host'] == $mirror) { - if (!$ssl) { - if (isset($this->_channelInfo['servers']['mirror']['attribs']['ssl'])) { - unset($this->_channelInfo['servers']['mirror']['attribs']['ssl']); - } - } else { - $this->_channelInfo['servers']['mirror']['attribs']['ssl'] = 'yes'; - } - $this->_isValid = false; - return true; - } - } - if ($ssl) { - $this->_channelInfo['servers']['primary']['attribs']['ssl'] = 'yes'; - } else { - if (isset($this->_channelInfo['servers']['primary']['attribs']['ssl'])) { - unset($this->_channelInfo['servers']['primary']['attribs']['ssl']); - } - } - $this->_isValid = false; - return true; - } - - /** - * Set the socket number (port) that is used to connect to this channel - * @param integer - * @param string|false name of the mirror server, or false for the primary - */ - function setPath($protocol, $path, $mirror = false) - { - if (!in_array($protocol, array('xmlrpc', 'soap'))) { - return false; - } - if ($mirror) { - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - if (isset($this->_channelInfo['servers']['mirror'][0])) { - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - $this->_channelInfo['servers']['mirror'][$i][$protocol]['attribs']['path'] = - $path; - return true; - } - } - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } elseif ($this->_channelInfo['servers']['mirror']['attribs']['host'] == $mirror) { - $this->_channelInfo['servers']['mirror'][$protocol]['attribs']['path'] = $path; - $this->_isValid = false; - return true; - } - } - $this->_channelInfo['servers']['primary'][$protocol]['attribs']['path'] = $path; - $this->_isValid = false; - return true; - } - - /** - * @param string - * @return string|false - * @error PEAR_CHANNELFILE_ERROR_NO_SERVER - * @error PEAR_CHANNELFILE_ERROR_INVALID_SERVER - */ - function setServer($server, $mirror = false) - { - if (empty($server)) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_SERVER); - return false; - } elseif (!$this->validChannelServer($server)) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, - array('tag' => 'name', 'name' => $server)); - return false; - } - if ($mirror) { - $found = false; - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - $found = true; - break; - } - } - if (!$found) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - $this->_channelInfo['mirror'][$i]['attribs']['host'] = $server; - return true; - } - $this->_channelInfo['name'] = $server; - return true; - } - - /** - * @param string - * @return boolean success - * @error PEAR_CHANNELFILE_ERROR_NO_SUMMARY - * @warning PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY - */ - function setSummary($summary) - { - if (empty($summary)) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_NO_SUMMARY); - return false; - } elseif (strpos(trim($summary), "\n") !== false) { - $this->_validateWarning(PEAR_CHANNELFILE_ERROR_MULTILINE_SUMMARY, - array('summary' => $summary)); - } - $this->_channelInfo['summary'] = $summary; - return true; - } - - /** - * @param string - * @param boolean determines whether the alias is in channel.xml or local - * @return boolean success - */ - function setAlias($alias, $local = false) - { - if (!$this->validChannelServer($alias)) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_INVALID_NAME, - array('tag' => 'suggestedalias', 'name' => $alias)); - return false; - } - if ($local) { - $this->_channelInfo['localalias'] = $alias; - } else { - $this->_channelInfo['suggestedalias'] = $alias; - } - return true; - } - - /** - * @return string - */ - function getAlias() - { - if (isset($this->_channelInfo['localalias'])) { - return $this->_channelInfo['localalias']; - } - if (isset($this->_channelInfo['suggestedalias'])) { - return $this->_channelInfo['suggestedalias']; - } - if (isset($this->_channelInfo['name'])) { - return $this->_channelInfo['name']; - } - return ''; - } - - /** - * Set the package validation object if it differs from PEAR's default - * The class must be includeable via changing _ in the classname to path separator, - * but no checking of this is made. - * @param string|false pass in false to reset to the default packagename regex - * @return boolean success - */ - function setValidationPackage($validateclass, $version) - { - if (empty($validateclass)) { - unset($this->_channelInfo['validatepackage']); - } - $this->_channelInfo['validatepackage'] = array('_content' => $validateclass); - $this->_channelInfo['validatepackage']['attribs'] = array('version' => $version); - } - - /** - * Add a protocol to the provides section - * @param string protocol type - * @param string protocol version - * @param string protocol name, if any - * @param string mirror name, if this is a mirror's protocol - * @return bool - */ - function addFunction($type, $version, $name = '', $mirror = false) - { - if ($mirror) { - return $this->addMirrorFunction($mirror, $type, $version, $name); - } - $set = array('attribs' => array('version' => $version), '_content' => $name); - if (!isset($this->_channelInfo['servers']['primary'][$type]['function'])) { - if (!isset($this->_channelInfo['servers'])) { - $this->_channelInfo['servers'] = array('primary' => - array($type => array())); - } elseif (!isset($this->_channelInfo['servers']['primary'])) { - $this->_channelInfo['servers']['primary'] = array($type => array()); - } - $this->_channelInfo['servers']['primary'][$type]['function'] = $set; - $this->_isValid = false; - return true; - } elseif (!isset($this->_channelInfo['servers']['primary'][$type]['function'][0])) { - $this->_channelInfo['servers']['primary'][$type]['function'] = array( - $this->_channelInfo['servers']['primary'][$type]['function']); - } - $this->_channelInfo['servers']['primary'][$type]['function'][] = $set; - return true; - } - /** - * Add a protocol to a mirror's provides section - * @param string mirror name (server) - * @param string protocol type - * @param string protocol version - * @param string protocol name, if any - */ - function addMirrorFunction($mirror, $type, $version, $name = '') - { - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - $setmirror = false; - if (isset($this->_channelInfo['servers']['mirror'][0])) { - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - $setmirror = &$this->_channelInfo['servers']['mirror'][$i]; - break; - } - } - } else { - if ($this->_channelInfo['servers']['mirror']['attribs']['host'] == $mirror) { - $setmirror = &$this->_channelInfo['servers']['mirror']; - } - } - if (!$setmirror) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - $set = array('attribs' => array('version' => $version), '_content' => $name); - if (!isset($setmirror[$type]['function'])) { - $setmirror[$type]['function'] = $set; - $this->_isValid = false; - return true; - } elseif (!isset($setmirror[$type]['function'][0])) { - $setmirror[$type]['function'] = array($setmirror[$type]['function']); - } - $setmirror[$type]['function'][] = $set; - $this->_isValid = false; - return true; - } - - /** - * @param string Resource Type this url links to - * @param string URL - * @param string|false mirror name, if this is not a primary server REST base URL - */ - function setBaseURL($resourceType, $url, $mirror = false) - { - if ($mirror) { - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_validateError(PEAR_CHANNELFILE_ERROR_MIRROR_NOT_FOUND, - array('mirror' => $mirror)); - return false; - } - $setmirror = false; - if (isset($this->_channelInfo['servers']['mirror'][0])) { - foreach ($this->_channelInfo['servers']['mirror'] as $i => $mir) { - if ($mirror == $mir['attribs']['host']) { - $setmirror = &$this->_channelInfo['servers']['mirror'][$i]; - break; - } - } - } else { - if ($this->_channelInfo['servers']['mirror']['attribs']['host'] == $mirror) { - $setmirror = &$this->_channelInfo['servers']['mirror']; - } - } - } else { - $setmirror = &$this->_channelInfo['servers']['primary']; - } - $set = array('attribs' => array('type' => $resourceType), '_content' => $url); - if (!isset($setmirror['rest'])) { - $setmirror['rest'] = array(); - } - if (!isset($setmirror['rest']['baseurl'])) { - $setmirror['rest']['baseurl'] = $set; - $this->_isValid = false; - return true; - } elseif (!isset($setmirror['rest']['baseurl'][0])) { - $setmirror['rest']['baseurl'] = array($setmirror['rest']['baseurl']); - } - foreach ($setmirror['rest']['baseurl'] as $i => $url) { - if ($url['attribs']['type'] == $resourceType) { - $this->_isValid = false; - $setmirror['rest']['baseurl'][$i] = $set; - return true; - } - } - $setmirror['rest']['baseurl'][] = $set; - $this->_isValid = false; - return true; - } - - /** - * @param string mirror server - * @param int mirror http port - * @return boolean - */ - function addMirror($server, $port = null) - { - if ($this->_channelInfo['name'] == '__uri') { - return false; // the __uri channel cannot have mirrors by definition - } - $set = array('attribs' => array('host' => $server)); - if (is_numeric($port)) { - $set['attribs']['port'] = $port; - } - if (!isset($this->_channelInfo['servers']['mirror'])) { - $this->_channelInfo['servers']['mirror'] = $set; - return true; - } else { - if (!isset($this->_channelInfo['servers']['mirror'][0])) { - $this->_channelInfo['servers']['mirror'] = - array($this->_channelInfo['servers']['mirror']); - } - } - $this->_channelInfo['servers']['mirror'][] = $set; - return true; - } - - /** - * Retrieve the name of the validation package for this channel - * @return string|false - */ - function getValidationPackage() - { - if (!$this->_isValid && !$this->validate()) { - return false; - } - if (!isset($this->_channelInfo['validatepackage'])) { - return array('attribs' => array('version' => 'default'), - '_content' => 'PEAR_Validate'); - } - return $this->_channelInfo['validatepackage']; - } - - /** - * Retrieve the object that can be used for custom validation - * @param string|false the name of the package to validate. If the package is - * the channel validation package, PEAR_Validate is returned - * @return PEAR_Validate|false false is returned if the validation package - * cannot be located - */ - function &getValidationObject($package = false) - { - if (!class_exists('PEAR_Validate')) { - require_once 'PEAR/Validate.php'; - } - if (!$this->_isValid) { - if (!$this->validate()) { - $a = false; - return $a; - } - } - if (isset($this->_channelInfo['validatepackage'])) { - if ($package == $this->_channelInfo['validatepackage']) { - // channel validation packages are always validated by PEAR_Validate - $val = &new PEAR_Validate; - return $val; - } - if (!class_exists(str_replace('.', '_', - $this->_channelInfo['validatepackage']['_content']))) { - if ($this->isIncludeable(str_replace('_', '/', - $this->_channelInfo['validatepackage']['_content']) . '.php')) { - include_once str_replace('_', '/', - $this->_channelInfo['validatepackage']['_content']) . '.php'; - $vclass = str_replace('.', '_', - $this->_channelInfo['validatepackage']['_content']); - $val = &new $vclass; - } else { - $a = false; - return $a; - } - } else { - $vclass = str_replace('.', '_', - $this->_channelInfo['validatepackage']['_content']); - $val = &new $vclass; - } - } else { - $val = &new PEAR_Validate; - } - return $val; - } - - function isIncludeable($path) - { - $possibilities = explode(PATH_SEPARATOR, ini_get('include_path')); - foreach ($possibilities as $dir) { - if (file_exists($dir . DIRECTORY_SEPARATOR . $path) - && is_readable($dir . DIRECTORY_SEPARATOR . $path)) { - return true; - } - } - return false; - } - - /** - * This function is used by the channel updater and retrieves a value set by - * the registry, or the current time if it has not been set - * @return string - */ - function lastModified() - { - if (isset($this->_channelInfo['_lastmodified'])) { - return $this->_channelInfo['_lastmodified']; - } - return time(); - } -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/ChannelFile/Parser.php b/src/vitis/vas/rest/class/PEAR/ChannelFile/Parser.php deleted file mode 100755 index 884024394a7eb4a0c800fc76aa103149e7edd846..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/ChannelFile/Parser.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php -/** - * PEAR_ChannelFile_Parser for parsing channel.xml - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Parser.php,v 1.5 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * base xml parser class - */ -require_once 'PEAR/XMLParser.php'; -require_once 'PEAR/ChannelFile.php'; -/** - * Parser for channel.xml - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_ChannelFile_Parser extends PEAR_XMLParser -{ - var $_config; - var $_logger; - var $_registry; - - function setConfig(&$c) - { - $this->_config = &$c; - $this->_registry = &$c->getRegistry(); - } - - function setLogger(&$l) - { - $this->_logger = &$l; - } - - function parse($data, $file) - { - if (PEAR::isError($err = parent::parse($data, $file))) { - return $err; - } - $ret = new PEAR_ChannelFile; - $ret->setConfig($this->_config); - if (isset($this->_logger)) { - $ret->setLogger($this->_logger); - } - $ret->fromArray($this->_unserializedData); - // make sure the filelist is in the easy to read format needed - $ret->flattenFilelist(); - $ret->setPackagefile($file, $archive); - return $ret; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command.php b/src/vitis/vas/rest/class/PEAR/Command.php deleted file mode 100755 index 38fe69c9eb4548f4aa636275443db88146c45ada..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command.php +++ /dev/null @@ -1,416 +0,0 @@ -<?php -/** - * PEAR_Command, command pattern class - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Command.php,v 1.39 2008/01/03 20:26:34 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * Needed for error handling - */ -require_once 'PEAR.php'; -require_once 'PEAR/Frontend.php'; -require_once 'PEAR/XMLParser.php'; - -/** - * List of commands and what classes they are implemented in. - * @var array command => implementing class - */ -$GLOBALS['_PEAR_Command_commandlist'] = array(); - -/** - * List of commands and their descriptions - * @var array command => description - */ -$GLOBALS['_PEAR_Command_commanddesc'] = array(); - -/** - * List of shortcuts to common commands. - * @var array shortcut => command - */ -$GLOBALS['_PEAR_Command_shortcuts'] = array(); - -/** - * Array of command objects - * @var array class => object - */ -$GLOBALS['_PEAR_Command_objects'] = array(); - -/** - * PEAR command class, a simple factory class for administrative - * commands. - * - * How to implement command classes: - * - * - The class must be called PEAR_Command_Nnn, installed in the - * "PEAR/Common" subdir, with a method called getCommands() that - * returns an array of the commands implemented by the class (see - * PEAR/Command/Install.php for an example). - * - * - The class must implement a run() function that is called with three - * params: - * - * (string) command name - * (array) assoc array with options, freely defined by each - * command, for example: - * array('force' => true) - * (array) list of the other parameters - * - * The run() function returns a PEAR_CommandResponse object. Use - * these methods to get information: - * - * int getStatus() Returns PEAR_COMMAND_(SUCCESS|FAILURE|PARTIAL) - * *_PARTIAL means that you need to issue at least - * one more command to complete the operation - * (used for example for validation steps). - * - * string getMessage() Returns a message for the user. Remember, - * no HTML or other interface-specific markup. - * - * If something unexpected happens, run() returns a PEAR error. - * - * - DON'T OUTPUT ANYTHING! Return text for output instead. - * - * - DON'T USE HTML! The text you return will be used from both Gtk, - * web and command-line interfaces, so for now, keep everything to - * plain text. - * - * - DON'T USE EXIT OR DIE! Always use pear errors. From static - * classes do PEAR::raiseError(), from other classes do - * $this->raiseError(). - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command -{ - // {{{ factory() - - /** - * Get the right object for executing a command. - * - * @param string $command The name of the command - * @param object $config Instance of PEAR_Config object - * - * @return object the command object or a PEAR error - * - * @access public - * @static - */ - function &factory($command, &$config) - { - if (empty($GLOBALS['_PEAR_Command_commandlist'])) { - PEAR_Command::registerCommands(); - } - if (isset($GLOBALS['_PEAR_Command_shortcuts'][$command])) { - $command = $GLOBALS['_PEAR_Command_shortcuts'][$command]; - } - if (!isset($GLOBALS['_PEAR_Command_commandlist'][$command])) { - $a = PEAR::raiseError("unknown command `$command'"); - return $a; - } - $class = $GLOBALS['_PEAR_Command_commandlist'][$command]; - if (!class_exists($class)) { - require_once $GLOBALS['_PEAR_Command_objects'][$class]; - } - if (!class_exists($class)) { - $a = PEAR::raiseError("unknown command `$command'"); - return $a; - } - $ui =& PEAR_Command::getFrontendObject(); - $obj = &new $class($ui, $config); - return $obj; - } - - // }}} - // {{{ & getObject() - function &getObject($command) - { - $class = $GLOBALS['_PEAR_Command_commandlist'][$command]; - if (!class_exists($class)) { - require_once $GLOBALS['_PEAR_Command_objects'][$class]; - } - if (!class_exists($class)) { - return PEAR::raiseError("unknown command `$command'"); - } - $ui =& PEAR_Command::getFrontendObject(); - $config = &PEAR_Config::singleton(); - $obj = &new $class($ui, $config); - return $obj; - } - - // }}} - // {{{ & getFrontendObject() - - /** - * Get instance of frontend object. - * - * @return object|PEAR_Error - * @static - */ - function &getFrontendObject() - { - $a = &PEAR_Frontend::singleton(); - return $a; - } - - // }}} - // {{{ & setFrontendClass() - - /** - * Load current frontend class. - * - * @param string $uiclass Name of class implementing the frontend - * - * @return object the frontend object, or a PEAR error - * @static - */ - function &setFrontendClass($uiclass) - { - $a = &PEAR_Frontend::setFrontendClass($uiclass); - return $a; - } - - // }}} - // {{{ setFrontendType() - - /** - * Set current frontend. - * - * @param string $uitype Name of the frontend type (for example "CLI") - * - * @return object the frontend object, or a PEAR error - * @static - */ - function setFrontendType($uitype) - { - $uiclass = 'PEAR_Frontend_' . $uitype; - return PEAR_Command::setFrontendClass($uiclass); - } - - // }}} - // {{{ registerCommands() - - /** - * Scan through the Command directory looking for classes - * and see what commands they implement. - * - * @param bool (optional) if FALSE (default), the new list of - * commands should replace the current one. If TRUE, - * new entries will be merged with old. - * - * @param string (optional) where (what directory) to look for - * classes, defaults to the Command subdirectory of - * the directory from where this file (__FILE__) is - * included. - * - * @return bool TRUE on success, a PEAR error on failure - * - * @access public - * @static - */ - function registerCommands($merge = false, $dir = null) - { - $parser = new PEAR_XMLParser; - if ($dir === null) { - $dir = dirname(__FILE__) . '/Command'; - } - if (!is_dir($dir)) { - return PEAR::raiseError("registerCommands: opendir($dir) '$dir' does not exist or is not a directory"); - } - $dp = @opendir($dir); - if (empty($dp)) { - return PEAR::raiseError("registerCommands: opendir($dir) failed"); - } - if (!$merge) { - $GLOBALS['_PEAR_Command_commandlist'] = array(); - } - while ($entry = readdir($dp)) { - if ($entry{0} == '.' || substr($entry, -4) != '.xml') { - continue; - } - $class = "PEAR_Command_".substr($entry, 0, -4); - $file = "$dir/$entry"; - $parser->parse(file_get_contents($file)); - $implements = $parser->getData(); - // List of commands - if (empty($GLOBALS['_PEAR_Command_objects'][$class])) { - $GLOBALS['_PEAR_Command_objects'][$class] = "$dir/" . substr($entry, 0, -4) . - '.php'; - } - foreach ($implements as $command => $desc) { - if ($command == 'attribs') { - continue; - } - if (isset($GLOBALS['_PEAR_Command_commandlist'][$command])) { - return PEAR::raiseError('Command "' . $command . '" already registered in ' . - 'class "' . $GLOBALS['_PEAR_Command_commandlist'][$command] . '"'); - } - $GLOBALS['_PEAR_Command_commandlist'][$command] = $class; - $GLOBALS['_PEAR_Command_commanddesc'][$command] = $desc['summary']; - if (isset($desc['shortcut'])) { - $shortcut = $desc['shortcut']; - if (isset($GLOBALS['_PEAR_Command_shortcuts'][$shortcut])) { - return PEAR::raiseError('Command shortcut "' . $shortcut . '" already ' . - 'registered to command "' . $command . '" in class "' . - $GLOBALS['_PEAR_Command_commandlist'][$command] . '"'); - } - $GLOBALS['_PEAR_Command_shortcuts'][$shortcut] = $command; - } - if (isset($desc['options']) && $desc['options']) { - foreach ($desc['options'] as $oname => $option) { - if (isset($option['shortopt']) && strlen($option['shortopt']) > 1) { - return PEAR::raiseError('Option "' . $oname . '" short option "' . - $option['shortopt'] . '" must be ' . - 'only 1 character in Command "' . $command . '" in class "' . - $class . '"'); - } - } - } - } - } - ksort($GLOBALS['_PEAR_Command_shortcuts']); - ksort($GLOBALS['_PEAR_Command_commandlist']); - @closedir($dp); - return true; - } - - // }}} - // {{{ getCommands() - - /** - * Get the list of currently supported commands, and what - * classes implement them. - * - * @return array command => implementing class - * - * @access public - * @static - */ - function getCommands() - { - if (empty($GLOBALS['_PEAR_Command_commandlist'])) { - PEAR_Command::registerCommands(); - } - return $GLOBALS['_PEAR_Command_commandlist']; - } - - // }}} - // {{{ getShortcuts() - - /** - * Get the list of command shortcuts. - * - * @return array shortcut => command - * - * @access public - * @static - */ - function getShortcuts() - { - if (empty($GLOBALS['_PEAR_Command_shortcuts'])) { - PEAR_Command::registerCommands(); - } - return $GLOBALS['_PEAR_Command_shortcuts']; - } - - // }}} - // {{{ getGetoptArgs() - - /** - * Compiles arguments for getopt. - * - * @param string $command command to get optstring for - * @param string $short_args (reference) short getopt format - * @param array $long_args (reference) long getopt format - * - * @return void - * - * @access public - * @static - */ - function getGetoptArgs($command, &$short_args, &$long_args) - { - if (empty($GLOBALS['_PEAR_Command_commandlist'])) { - PEAR_Command::registerCommands(); - } - if (isset($GLOBALS['_PEAR_Command_shortcuts'][$command])) { - $command = $GLOBALS['_PEAR_Command_shortcuts'][$command]; - } - if (!isset($GLOBALS['_PEAR_Command_commandlist'][$command])) { - return null; - } - $obj = &PEAR_Command::getObject($command); - return $obj->getGetoptArgs($command, $short_args, $long_args); - } - - // }}} - // {{{ getDescription() - - /** - * Get description for a command. - * - * @param string $command Name of the command - * - * @return string command description - * - * @access public - * @static - */ - function getDescription($command) - { - if (!isset($GLOBALS['_PEAR_Command_commanddesc'][$command])) { - return null; - } - return $GLOBALS['_PEAR_Command_commanddesc'][$command]; - } - - // }}} - // {{{ getHelp() - - /** - * Get help for command. - * - * @param string $command Name of the command to return help for - * - * @access public - * @static - */ - function getHelp($command) - { - $cmds = PEAR_Command::getCommands(); - if (isset($GLOBALS['_PEAR_Command_shortcuts'][$command])) { - $command = $GLOBALS['_PEAR_Command_shortcuts'][$command]; - } - if (isset($cmds[$command])) { - $obj = &PEAR_Command::getObject($command); - return $obj->getHelp($command); - } - return false; - } - // }}} -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Auth.php b/src/vitis/vas/rest/class/PEAR/Command/Auth.php deleted file mode 100755 index 005235b63b4906ca7181f6976da920ed2f6ce2d0..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Auth.php +++ /dev/null @@ -1,203 +0,0 @@ -<?php -/** - * PEAR_Command_Auth (login, logout commands) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Auth.php,v 1.31 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; -require_once 'PEAR/Config.php'; - -/** - * PEAR commands for login/logout - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Auth extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'login' => array( - 'summary' => 'Connects and authenticates to remote server', - 'shortcut' => 'li', - 'function' => 'doLogin', - 'options' => array(), - 'doc' => '<channel name> -Log in to a remote channel server. If <channel name> is not supplied, -the default channel is used. To use remote functions in the installer -that require any kind of privileges, you need to log in first. The -username and password you enter here will be stored in your per-user -PEAR configuration (~/.pearrc on Unix-like systems). After logging -in, your username and password will be sent along in subsequent -operations on the remote server.', - ), - 'logout' => array( - 'summary' => 'Logs out from the remote server', - 'shortcut' => 'lo', - 'function' => 'doLogout', - 'options' => array(), - 'doc' => ' -Logs out from the remote server. This command does not actually -connect to the remote server, it only deletes the stored username and -password from your user configuration.', - ) - - ); - - // }}} - - // {{{ constructor - - /** - * PEAR_Command_Auth constructor. - * - * @access public - */ - function PEAR_Command_Auth(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - // {{{ doLogin() - - /** - * Execute the 'login' command. - * - * @param string $command command name - * - * @param array $options option_name => value - * - * @param array $params list of additional parameters - * - * @return bool TRUE on success or - * a PEAR error on failure - * - * @access public - */ - function doLogin($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - - // If a parameter is supplied, use that as the channel to log in to - if (isset($params[0])) { - $channel = $params[0]; - } else { - $channel = $this->config->get('default_channel'); - } - - $chan = $reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - $server = $this->config->get('preferred_mirror', null, $channel); - $remote = &$this->config->getRemote(); - $username = $this->config->get('username', null, $channel); - if (empty($username)) { - $username = isset($_ENV['USER']) ? $_ENV['USER'] : null; - } - $this->ui->outputData("Logging in to $server.", $command); - - list($username, $password) = $this->ui->userDialog( - $command, - array('Username', 'Password'), - array('text', 'password'), - array($username, '') - ); - $username = trim($username); - $password = trim($password); - - $ourfile = $this->config->getConfFile('user'); - if (!$ourfile) { - $ourfile = $this->config->getConfFile('system'); - } - - $this->config->set('username', $username, 'user', $channel); - $this->config->set('password', $password, 'user', $channel); - - if ($chan->supportsREST()) { - $ok = true; - } else { - $remote->expectError(401); - $ok = $remote->call('logintest'); - $remote->popExpect(); - } - if ($ok === true) { - $this->ui->outputData("Logged in.", $command); - // avoid changing any temporary settings changed with -d - $ourconfig = new PEAR_Config($ourfile, $ourfile); - $ourconfig->set('username', $username, 'user', $channel); - $ourconfig->set('password', $password, 'user', $channel); - $ourconfig->store(); - } else { - return $this->raiseError("Login failed!"); - } - return true; - } - - // }}} - // {{{ doLogout() - - /** - * Execute the 'logout' command. - * - * @param string $command command name - * - * @param array $options option_name => value - * - * @param array $params list of additional parameters - * - * @return bool TRUE on success or - * a PEAR error on failure - * - * @access public - */ - function doLogout($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - $channel = $this->config->get('default_channel'); - $chan = $reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - $server = $this->config->get('preferred_mirror'); - $this->ui->outputData("Logging out from $server.", $command); - $this->config->remove('username'); - $this->config->remove('password'); - $this->config->store(); - return true; - } - - // }}} -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Auth.xml b/src/vitis/vas/rest/class/PEAR/Command/Auth.xml deleted file mode 100755 index 17e3b34cf5b1b057cd733a2df00252d664f926bc..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Auth.xml +++ /dev/null @@ -1,26 +0,0 @@ -<commands version="1.0"> - <login> - <summary>Connects and authenticates to remote server</summary> - <shortcut>li</shortcut> - <function>doLogin</function> - <options /> - <doc><channel name> -Log in to a remote channel server. <channel name> is not supplied, -the default channel is used. To use remote functions in the installer -that require any kind of privileges, you need to log in first. The -username and password you enter here will be stored in your per-user -PEAR configuration (~/.pearrc on Unix-like systems). After logging -in, your username and password will be sent along in subsequent -operations on the remote server.</doc> - </login> - <logout> - <summary>Logs out from the remote server</summary> - <shortcut>lo</shortcut> - <function>doLogout</function> - <options /> - <doc> -Logs out from the remote server. This command does not actually -connect to the remote server, it only deletes the stored username and -password from your user configuration.</doc> - </logout> -</commands> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Build.php b/src/vitis/vas/rest/class/PEAR/Command/Build.php deleted file mode 100755 index d6773100e46c5853e0df549cb84a18132632b6c2..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Build.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php -/** - * PEAR_Command_Auth (build command) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V.V.Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Build.php,v 1.14 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for building extensions. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V.V.Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Build extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'build' => array( - 'summary' => 'Build an Extension From C Source', - 'function' => 'doBuild', - 'shortcut' => 'b', - 'options' => array(), - 'doc' => '[package.xml] -Builds one or more extensions contained in a package.' - ), - ); - - // }}} - - // {{{ constructor - - /** - * PEAR_Command_Build constructor. - * - * @access public - */ - function PEAR_Command_Build(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - // {{{ doBuild() - - function doBuild($command, $options, $params) - { - require_once 'PEAR/Builder.php'; - if (sizeof($params) < 1) { - $params[0] = 'package.xml'; - } - $builder = &new PEAR_Builder($this->ui); - $this->debug = $this->config->get('verbose'); - $err = $builder->build($params[0], array(&$this, 'buildCallback')); - if (PEAR::isError($err)) { - return $err; - } - return true; - } - - // }}} - // {{{ buildCallback() - - function buildCallback($what, $data) - { - if (($what == 'cmdoutput' && $this->debug > 1) || - ($what == 'output' && $this->debug > 0)) { - $this->ui->outputData(rtrim($data), 'build'); - } - } - - // }}} -} diff --git a/src/vitis/vas/rest/class/PEAR/Command/Build.xml b/src/vitis/vas/rest/class/PEAR/Command/Build.xml deleted file mode 100755 index ec4e6f554ca148bf583c77642aa087620a4a46cd..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Build.xml +++ /dev/null @@ -1,10 +0,0 @@ -<commands version="1.0"> - <build> - <summary>Build an Extension From C Source</summary> - <function>doBuild</function> - <shortcut>b</shortcut> - <options /> - <doc>[package.xml] -Builds one or more extensions contained in a package.</doc> - </build> -</commands> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Channels.php b/src/vitis/vas/rest/class/PEAR/Command/Channels.php deleted file mode 100755 index 5de0d39b9c25fb65539e983eaa92a5c4ebd57d82..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Channels.php +++ /dev/null @@ -1,737 +0,0 @@ -<?php -// /* vim: set expandtab tabstop=4 shiftwidth=4: */ -/** - * PEAR_Command_Channels (list-channels, update-channels, channel-delete, channel-add, - * channel-update, channel-info, channel-alias, channel-discover commands) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Channels.php,v 1.57 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for managing channels. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Command_Channels extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'list-channels' => array( - 'summary' => 'List Available Channels', - 'function' => 'doList', - 'shortcut' => 'lc', - 'options' => array(), - 'doc' => ' -List all available channels for installation. -', - ), - 'update-channels' => array( - 'summary' => 'Update the Channel List', - 'function' => 'doUpdateAll', - 'shortcut' => 'uc', - 'options' => array(), - 'doc' => ' -List all installed packages in all channels. -' - ), - 'channel-delete' => array( - 'summary' => 'Remove a Channel From the List', - 'function' => 'doDelete', - 'shortcut' => 'cde', - 'options' => array(), - 'doc' => '<channel name> -Delete a channel from the registry. You may not -remove any channel that has installed packages. -' - ), - 'channel-add' => array( - 'summary' => 'Add a Channel', - 'function' => 'doAdd', - 'shortcut' => 'ca', - 'options' => array(), - 'doc' => '<channel.xml> -Add a private channel to the channel list. Note that all -public channels should be synced using "update-channels". -Parameter may be either a local file or remote URL to a -channel.xml. -' - ), - 'channel-update' => array( - 'summary' => 'Update an Existing Channel', - 'function' => 'doUpdate', - 'shortcut' => 'cu', - 'options' => array( - 'force' => array( - 'shortopt' => 'f', - 'doc' => 'will force download of new channel.xml if an existing channel name is used', - ), - 'channel' => array( - 'shortopt' => 'c', - 'arg' => 'CHANNEL', - 'doc' => 'will force download of new channel.xml if an existing channel name is used', - ), -), - 'doc' => '[<channel.xml>|<channel name>] -Update a channel in the channel list directly. Note that all -public channels can be synced using "update-channels". -Parameter may be a local or remote channel.xml, or the name of -an existing channel. -' - ), - 'channel-info' => array( - 'summary' => 'Retrieve Information on a Channel', - 'function' => 'doInfo', - 'shortcut' => 'ci', - 'options' => array(), - 'doc' => '<package> -List the files in an installed package. -' - ), - 'channel-alias' => array( - 'summary' => 'Specify an alias to a channel name', - 'function' => 'doAlias', - 'shortcut' => 'cha', - 'options' => array(), - 'doc' => '<channel> <alias> -Specify a specific alias to use for a channel name. -The alias may not be an existing channel name or -alias. -' - ), - 'channel-discover' => array( - 'summary' => 'Initialize a Channel from its server', - 'function' => 'doDiscover', - 'shortcut' => 'di', - 'options' => array(), - 'doc' => '[<channel.xml>|<channel name>] -Initialize a channel from its server and create a local channel.xml. -If <channel name> is in the format "<username>:<password>@<channel>" then -<username> and <password> will be set as the login username/password for -<channel>. Use caution when passing the username/password in this way, as -it may allow other users on your computer to briefly view your username/ -password via the system\'s process list. -' - ), - ); - - // }}} - // {{{ constructor - - /** - * PEAR_Command_Registry constructor. - * - * @access public - */ - function PEAR_Command_Channels(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - // {{{ doList() - - function _sortChannels($a, $b) - { - return strnatcasecmp($a->getName(), $b->getName()); - } - - function doList($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - $registered = $reg->getChannels(); - usort($registered, array(&$this, '_sortchannels')); - $i = $j = 0; - $data = array( - 'caption' => 'Registered Channels:', - 'border' => true, - 'headline' => array('Channel', 'Summary') - ); - foreach ($registered as $channel) { - $data['data'][] = array($channel->getName(), - $channel->getSummary()); - } - if (count($registered)==0) { - $data = '(no registered channels)'; - } - $this->ui->outputData($data, $command); - return true; - } - - function doUpdateAll($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - $channels = $reg->getChannels(); - - $success = true; - foreach ($channels as $channel) { - if ($channel->getName() != '__uri') { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->doUpdate('channel-update', - $options, - array($channel->getName())); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage(), $command); - $success = false; - } else { - $success &= $err; - } - } - } - return $success; - } - - function doInfo($command, $options, $params) - { - if (sizeof($params) != 1) { - return $this->raiseError("No channel specified"); - } - $reg = &$this->config->getRegistry(); - $channel = strtolower($params[0]); - if ($reg->channelExists($channel)) { - $chan = $reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - } else { - if (strpos($channel, '://')) { - $downloader = &$this->getDownloader(); - $tmpdir = $this->config->get('temp_dir'); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $loc = $downloader->downloadHttp($channel, $this->ui, $tmpdir); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($loc)) { - return $this->raiseError('Cannot open "' . $channel . - '" (' . $loc->getMessage() . ')'); - } else { - $contents = implode('', file($loc)); - } - } else { - if (file_exists($params[0])) { - $fp = fopen($params[0], 'r'); - if (!$fp) { - return $this->raiseError('Cannot open "' . $params[0] . '"'); - } - } else { - return $this->raiseError('Unknown channel "' . $channel . '"'); - } - $contents = ''; - while (!feof($fp)) { - $contents .= fread($fp, 1024); - } - fclose($fp); - } - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $chan = new PEAR_ChannelFile; - $chan->fromXmlString($contents); - $chan->validate(); - if ($errs = $chan->getErrors(true)) { - foreach ($errs as $err) { - $this->ui->outputData($err['level'] . ': ' . $err['message']); - } - return $this->raiseError('Channel file "' . $params[0] . '" is not valid'); - } - } - if ($chan) { - $channel = $chan->getName(); - $caption = 'Channel ' . $channel . ' Information:'; - $data1 = array( - 'caption' => $caption, - 'border' => true); - $data1['data']['server'] = array('Name and Server', $chan->getName()); - if ($chan->getAlias() != $chan->getName()) { - $data1['data']['alias'] = array('Alias', $chan->getAlias()); - } - $data1['data']['summary'] = array('Summary', $chan->getSummary()); - $validate = $chan->getValidationPackage(); - $data1['data']['vpackage'] = array('Validation Package Name', $validate['_content']); - $data1['data']['vpackageversion'] = - array('Validation Package Version', $validate['attribs']['version']); - $d = array(); - $d['main'] = $data1; - - $data['data'] = array(); - $data['caption'] = 'Server Capabilities'; - $data['headline'] = array('Type', 'Version/REST type', 'Function Name/REST base'); - $capabilities = $chan->getFunctions('xmlrpc'); - $soaps = $chan->getFunctions('soap'); - if ($capabilities || $soaps || $chan->supportsREST()) { - if ($capabilities) { - if (!isset($capabilities[0])) { - $capabilities = array($capabilities); - } - foreach ($capabilities as $protocol) { - $data['data'][] = array('xmlrpc', $protocol['attribs']['version'], - $protocol['_content']); - } - } - if ($soaps) { - if (!isset($soaps[0])) { - $soaps = array($soaps); - } - foreach ($soaps as $protocol) { - $data['data'][] = array('soap', $protocol['attribs']['version'], - $protocol['_content']); - } - } - if ($chan->supportsREST()) { - $funcs = $chan->getFunctions('rest'); - if (!isset($funcs[0])) { - $funcs = array($funcs); - } - foreach ($funcs as $protocol) { - $data['data'][] = array('rest', $protocol['attribs']['type'], - $protocol['_content']); - } - } - } else { - $data['data'][] = array('No supported protocols'); - } - $d['protocols'] = $data; - $data['data'] = array(); - $mirrors = $chan->getMirrors(); - if ($mirrors) { - $data['caption'] = 'Channel ' . $channel . ' Mirrors:'; - unset($data['headline']); - foreach ($mirrors as $mirror) { - $data['data'][] = array($mirror['attribs']['host']); - $d['mirrors'] = $data; - } - foreach ($mirrors as $i => $mirror) { - $data['data'] = array(); - $data['caption'] = 'Mirror ' . $mirror['attribs']['host'] . ' Capabilities'; - $data['headline'] = array('Type', 'Version/REST type', 'Function Name/REST base'); - $capabilities = $chan->getFunctions('xmlrpc', $mirror['attribs']['host']); - $soaps = $chan->getFunctions('soap', $mirror['attribs']['host']); - if ($capabilities || $soaps || $chan->supportsREST($mirror['attribs']['host'])) { - if ($capabilities) { - if (!isset($capabilities[0])) { - $capabilities = array($capabilities); - } - foreach ($capabilities as $protocol) { - $data['data'][] = array('xmlrpc', $protocol['attribs']['version'], - $protocol['_content']); - } - } - if ($soaps) { - if (!isset($soaps[0])) { - $soaps = array($soaps); - } - foreach ($soaps as $protocol) { - $data['data'][] = array('soap', $protocol['attribs']['version'], - $protocol['_content']); - } - } - if ($chan->supportsREST($mirror['attribs']['host'])) { - $funcs = $chan->getFunctions('rest', $mirror['attribs']['host']); - if (!isset($funcs[0])) { - $funcs = array($funcs); - } - foreach ($funcs as $protocol) { - $data['data'][] = array('rest', $protocol['attribs']['type'], - $protocol['_content']); - } - } - } else { - $data['data'][] = array('No supported protocols'); - } - $d['mirrorprotocols' . $i] = $data; - } - } - $this->ui->outputData($d, 'channel-info'); - } else { - return $this->raiseError('Serious error: Channel "' . $params[0] . - '" has a corrupted registry entry'); - } - } - - // }}} - - function doDelete($command, $options, $params) - { - if (sizeof($params) != 1) { - return $this->raiseError('channel-delete: no channel specified'); - } - $reg = &$this->config->getRegistry(); - if (!$reg->channelExists($params[0])) { - return $this->raiseError('channel-delete: channel "' . $params[0] . '" does not exist'); - } - $channel = $reg->channelName($params[0]); - if ($channel == 'pear.php.net') { - return $this->raiseError('Cannot delete the pear.php.net channel'); - } - if ($channel == 'pecl.php.net') { - return $this->raiseError('Cannot delete the pecl.php.net channel'); - } - if ($channel == '__uri') { - return $this->raiseError('Cannot delete the __uri pseudo-channel'); - } - if (PEAR::isError($err = $reg->listPackages($channel))) { - return $err; - } - if (count($err)) { - return $this->raiseError('Channel "' . $channel . - '" has installed packages, cannot delete'); - } - if (!$reg->deleteChannel($channel)) { - return $this->raiseError('Channel "' . $channel . '" deletion failed'); - } else { - $this->config->deleteChannel($channel); - $this->ui->outputData('Channel "' . $channel . '" deleted', $command); - } - } - - function doAdd($command, $options, $params) - { - if (sizeof($params) != 1) { - return $this->raiseError('channel-add: no channel file specified'); - } - if (strpos($params[0], '://')) { - $downloader = &$this->getDownloader(); - $tmpdir = $this->config->get('temp_dir'); - if (!file_exists($tmpdir)) { - require_once 'System.php'; - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = System::mkdir(array('-p', $tmpdir)); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($err)) { - return $this->raiseError('channel-add: temp_dir does not exist: "' . - $tmpdir . - '" - You can change this location with "pear config-set temp_dir"'); - } - } - if (!is_writable($tmpdir)) { - return $this->raiseError('channel-add: temp_dir is not writable: "' . - $tmpdir . - '" - You can change this location with "pear config-set temp_dir"'); - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $loc = $downloader->downloadHttp($params[0], $this->ui, $tmpdir, null, false); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($loc)) { - return $this->raiseError('channel-add: Cannot open "' . $params[0] . - '" (' . $loc->getMessage() . ')'); - } else { - list($loc, $lastmodified) = $loc; - $contents = implode('', file($loc)); - } - } else { - $lastmodified = $fp = false; - if (file_exists($params[0])) { - $fp = fopen($params[0], 'r'); - } - if (!$fp) { - return $this->raiseError('channel-add: cannot open "' . $params[0] . '"'); - } - $contents = ''; - while (!feof($fp)) { - $contents .= fread($fp, 1024); - } - fclose($fp); - } - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $channel = new PEAR_ChannelFile; - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $result = $channel->fromXmlString($contents); - PEAR::staticPopErrorHandling(); - if (!$result) { - $exit = false; - if (count($errors = $channel->getErrors(true))) { - foreach ($errors as $error) { - $this->ui->outputData(ucfirst($error['level'] . ': ' . $error['message'])); - if (!$exit) { - $exit = $error['level'] == 'error' ? true : false; - } - } - if ($exit) { - return $this->raiseError('channel-add: invalid channel.xml file'); - } - } - } - $reg = &$this->config->getRegistry(); - if ($reg->channelExists($channel->getName())) { - return $this->raiseError('channel-add: Channel "' . $channel->getName() . - '" exists, use channel-update to update entry'); - } - $ret = $reg->addChannel($channel, $lastmodified); - if (PEAR::isError($ret)) { - return $ret; - } - if (!$ret) { - return $this->raiseError('channel-add: adding Channel "' . $channel->getName() . - '" to registry failed'); - } - $this->config->setChannels($reg->listChannels()); - $this->config->writeConfigFile(); - $this->ui->outputData('Adding Channel "' . $channel->getName() . '" succeeded', $command); - } - - function doUpdate($command, $options, $params) - { - $tmpdir = $this->config->get('temp_dir'); - if (!file_exists($tmpdir)) { - require_once 'System.php'; - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = System::mkdir(array('-p', $tmpdir)); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($err)) { - return $this->raiseError('channel-add: temp_dir does not exist: "' . - $tmpdir . - '" - You can change this location with "pear config-set temp_dir"'); - } - } - if (!is_writable($tmpdir)) { - return $this->raiseError('channel-add: temp_dir is not writable: "' . - $tmpdir . - '" - You can change this location with "pear config-set temp_dir"'); - } - $reg = &$this->config->getRegistry(); - if (sizeof($params) != 1) { - return $this->raiseError("No channel file specified"); - } - $lastmodified = false; - if ((!file_exists($params[0]) || is_dir($params[0])) - && $reg->channelExists(strtolower($params[0]))) { - $c = $reg->getChannel(strtolower($params[0])); - if (PEAR::isError($c)) { - return $this->raiseError($c); - } - $this->ui->outputData("Updating channel \"$params[0]\"", $command); - $dl = &$this->getDownloader(array()); - // if force is specified, use a timestamp of "1" to force retrieval - $lastmodified = isset($options['force']) ? false : $c->lastModified(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $contents = $dl->downloadHttp('http://' . $c->getName() . '/channel.xml', - $this->ui, $tmpdir, null, $lastmodified); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($contents)) { - return $this->raiseError('Cannot retrieve channel.xml for channel "' . - $c->getName() . '" (' . $contents->getMessage() . ')'); - } - list($contents, $lastmodified) = $contents; - if (!$contents) { - $this->ui->outputData("Channel \"$params[0]\" is up to date"); - return; - } - $contents = implode('', file($contents)); - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $channel = new PEAR_ChannelFile; - $channel->fromXmlString($contents); - if (!$channel->getErrors()) { - // security check: is the downloaded file for the channel we got it from? - if (strtolower($channel->getName()) != strtolower($c->getName())) { - if (isset($options['force'])) { - $this->ui->log(0, 'WARNING: downloaded channel definition file' . - ' for channel "' . $channel->getName() . '" from channel "' . - strtolower($c->getName()) . '"'); - } else { - return $this->raiseError('ERROR: downloaded channel definition file' . - ' for channel "' . $channel->getName() . '" from channel "' . - strtolower($c->getName()) . '"'); - } - } - } - } else { - if (strpos($params[0], '://')) { - $dl = &$this->getDownloader(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $loc = $dl->downloadHttp($params[0], - $this->ui, $tmpdir, null, $lastmodified); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($loc)) { - return $this->raiseError("Cannot open " . $params[0] . - ' (' . $loc->getMessage() . ')'); - } else { - list($loc, $lastmodified) = $loc; - $contents = implode('', file($loc)); - } - } else { - $fp = false; - if (file_exists($params[0])) { - $fp = fopen($params[0], 'r'); - } - if (!$fp) { - return $this->raiseError("Cannot open " . $params[0]); - } - $contents = ''; - while (!feof($fp)) { - $contents .= fread($fp, 1024); - } - fclose($fp); - } - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $channel = new PEAR_ChannelFile; - $channel->fromXmlString($contents); - } - $exit = false; - if (count($errors = $channel->getErrors(true))) { - foreach ($errors as $error) { - $this->ui->outputData(ucfirst($error['level'] . ': ' . $error['message'])); - if (!$exit) { - $exit = $error['level'] == 'error' ? true : false; - } - } - if ($exit) { - return $this->raiseError('Invalid channel.xml file'); - } - } - if (!$reg->channelExists($channel->getName())) { - return $this->raiseError('Error: Channel "' . $channel->getName() . - '" does not exist, use channel-add to add an entry'); - } - $ret = $reg->updateChannel($channel, $lastmodified); - if (PEAR::isError($ret)) { - return $ret; - } - if (!$ret) { - return $this->raiseError('Updating Channel "' . $channel->getName() . - '" in registry failed'); - } - $this->config->setChannels($reg->listChannels()); - $this->config->writeConfigFile(); - $this->ui->outputData('Update of Channel "' . $channel->getName() . '" succeeded'); - } - - function &getDownloader() - { - if (!class_exists('PEAR_Downloader')) { - require_once 'PEAR/Downloader.php'; - } - $a = new PEAR_Downloader($this->ui, array(), $this->config); - return $a; - } - - function doAlias($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - if (sizeof($params) == 1) { - return $this->raiseError('No channel alias specified'); - } - if (sizeof($params) != 2) { - return $this->raiseError( - 'Invalid format, correct is: channel-alias channel alias'); - } - if (!$reg->channelExists($params[0], true)) { - if ($reg->isAlias($params[0])) { - $extra = ' (use "channel-alias ' . $reg->channelName($params[0]) . ' ' . - strtolower($params[1]) . '")'; - } else { - $extra = ''; - } - return $this->raiseError('"' . $params[0] . '" is not a valid channel' . $extra); - } - if ($reg->isAlias($params[1])) { - return $this->raiseError('Channel "' . $reg->channelName($params[1]) . '" is ' . - 'already aliased to "' . strtolower($params[1]) . '", cannot re-alias'); - } - $chan = &$reg->getChannel($params[0]); - if (PEAR::isError($chan)) { - return $this->raiseError('Corrupt registry? Error retrieving channel "' . $params[0] . - '" information (' . $chan->getMessage() . ')'); - } - // make it a local alias - if (!$chan->setAlias(strtolower($params[1]), true)) { - return $this->raiseError('Alias "' . strtolower($params[1]) . - '" is not a valid channel alias'); - } - $reg->updateChannel($chan); - $this->ui->outputData('Channel "' . $chan->getName() . '" aliased successfully to "' . - strtolower($params[1]) . '"'); - } - - /** - * The channel-discover command - * - * @param string $command command name - * @param array $options option_name => value - * @param array $params list of additional parameters. - * $params[0] should contain a string with either: - * - <channel name> or - * - <username>:<password>@<channel name> - * @return null|PEAR_Error - */ - function doDiscover($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - if (sizeof($params) != 1) { - return $this->raiseError("No channel server specified"); - } - - // Look for the possible input format "<username>:<password>@<channel>" - if (preg_match('/^(.+):(.+)@(.+)\\z/', $params[0], $matches)) { - $username = $matches[1]; - $password = $matches[2]; - $channel = $matches[3]; - } else { - $channel = $params[0]; - } - - if ($reg->channelExists($channel)) { - if ($reg->isAlias($channel)) { - return $this->raiseError("A channel alias named \"$channel\" " . - 'already exists, aliasing channel "' . $reg->channelName($channel) - . '"'); - } else { - return $this->raiseError("Channel \"$channel\" is already initialized"); - } - } - $this->pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->doAdd($command, $options, array('http://' . $channel . '/channel.xml')); - $this->popErrorHandling(); - if (PEAR::isError($err)) { - return $this->raiseError("Discovery of channel \"$channel\" failed (" . - $err->getMessage() . ')'); - } - - // Store username/password if they were given - // Arguably we should do a logintest on the channel here, but since - // that's awkward on a REST-based channel (even "pear login" doesn't - // do it for those), and XML-RPC is deprecated, it's fairly pointless. - if (isset($username)) { - $this->config->set('username', $username, 'user', $channel); - $this->config->set('password', $password, 'user', $channel); - $this->config->store(); - $this->ui->outputData("Stored login for channel \"$channel\" using username \"$username\"", $command); - } - - $this->ui->outputData("Discovery of channel \"$channel\" succeeded", $command); - } -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Channels.xml b/src/vitis/vas/rest/class/PEAR/Command/Channels.xml deleted file mode 100755 index e7c7b7fe67f5f52ce4f8499856908834f68c4df4..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Channels.xml +++ /dev/null @@ -1,98 +0,0 @@ -<commands version="1.0"> - <list-channels> - <summary>List Available Channels</summary> - <function>doList</function> - <shortcut>lc</shortcut> - <options /> - <doc> -List all available channels for installation. -</doc> - </list-channels> - <update-channels> - <summary>Update the Channel List</summary> - <function>doUpdateAll</function> - <shortcut>uc</shortcut> - <options /> - <doc> -List all installed packages in all channels. -</doc> - </update-channels> - <channel-delete> - <summary>Remove a Channel From the List</summary> - <function>doDelete</function> - <shortcut>cde</shortcut> - <options /> - <doc><channel name> -Delete a channel from the registry. You may not -remove any channel that has installed packages. -</doc> - </channel-delete> - <channel-add> - <summary>Add a Channel</summary> - <function>doAdd</function> - <shortcut>ca</shortcut> - <options /> - <doc><channel.xml> -Add a private channel to the channel list. Note that all -public channels should be synced using "update-channels". -Parameter may be either a local file or remote URL to a -channel.xml. -</doc> - </channel-add> - <channel-update> - <summary>Update an Existing Channel</summary> - <function>doUpdate</function> - <shortcut>cu</shortcut> - <options> - <force> - <shortopt>f</shortopt> - <doc>will force download of new channel.xml if an existing channel name is used</doc> - </force> - <channel> - <shortopt>c</shortopt> - <arg>CHANNEL</arg> - <doc>will force download of new channel.xml if an existing channel name is used</doc> - </channel> - </options> - <doc>[<channel.xml>|<channel name>] -Update a channel in the channel list directly. Note that all -public channels can be synced using "update-channels". -Parameter may be a local or remote channel.xml, or the name of -an existing channel. -</doc> - </channel-update> - <channel-info> - <summary>Retrieve Information on a Channel</summary> - <function>doInfo</function> - <shortcut>ci</shortcut> - <options /> - <doc><package> -List the files in an installed package. -</doc> - </channel-info> - <channel-alias> - <summary>Specify an alias to a channel name</summary> - <function>doAlias</function> - <shortcut>cha</shortcut> - <options /> - <doc><channel> <alias> -Specify a specific alias to use for a channel name. -The alias may not be an existing channel name or -alias. -</doc> - </channel-alias> - <channel-discover> - <summary>Initialize a Channel from its server</summary> - <function>doDiscover</function> - <shortcut>di</shortcut> - <options /> - <doc>[<channel.xml>|<channel name>] -Initialize a channel from its server and create a local channel.xml. -If <channel name> is in the format "<username>:<password>@<channel>" then -<username> and <password> will be set as the login username/password for -<channel>. Use caution when passing the username/password in this way, as -it may allow other users on your computer to briefly view your username/ -password via the system's process list. -</doc> - </channel-discover> -</commands> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Common.php b/src/vitis/vas/rest/class/PEAR/Command/Common.php deleted file mode 100755 index 41595403bd28e74cc40def43e6e817f0b5eeb556..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Common.php +++ /dev/null @@ -1,291 +0,0 @@ -<?php -/** - * PEAR_Command_Common base class - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Common.php,v 1.36 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR.php'; - -/** - * PEAR commands base class - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Common extends PEAR -{ - // {{{ properties - - /** - * PEAR_Config object used to pass user system and configuration - * on when executing commands - * - * @var PEAR_Config - */ - var $config; - /** - * @var PEAR_Registry - * @access protected - */ - var $_registry; - - /** - * User Interface object, for all interaction with the user. - * @var object - */ - var $ui; - - var $_deps_rel_trans = array( - 'lt' => '<', - 'le' => '<=', - 'eq' => '=', - 'ne' => '!=', - 'gt' => '>', - 'ge' => '>=', - 'has' => '==' - ); - - var $_deps_type_trans = array( - 'pkg' => 'package', - 'ext' => 'extension', - 'php' => 'PHP', - 'prog' => 'external program', - 'ldlib' => 'external library for linking', - 'rtlib' => 'external runtime library', - 'os' => 'operating system', - 'websrv' => 'web server', - 'sapi' => 'SAPI backend' - ); - - // }}} - // {{{ constructor - - /** - * PEAR_Command_Common constructor. - * - * @access public - */ - function PEAR_Command_Common(&$ui, &$config) - { - parent::PEAR(); - $this->config = &$config; - $this->ui = &$ui; - } - - // }}} - - // {{{ getCommands() - - /** - * Return a list of all the commands defined by this class. - * @return array list of commands - * @access public - */ - function getCommands() - { - $ret = array(); - foreach (array_keys($this->commands) as $command) { - $ret[$command] = $this->commands[$command]['summary']; - } - return $ret; - } - - // }}} - // {{{ getShortcuts() - - /** - * Return a list of all the command shortcuts defined by this class. - * @return array shortcut => command - * @access public - */ - function getShortcuts() - { - $ret = array(); - foreach (array_keys($this->commands) as $command) { - if (isset($this->commands[$command]['shortcut'])) { - $ret[$this->commands[$command]['shortcut']] = $command; - } - } - return $ret; - } - - // }}} - // {{{ getOptions() - - function getOptions($command) - { - $shortcuts = $this->getShortcuts(); - if (isset($shortcuts[$command])) { - $command = $shortcuts[$command]; - } - if (isset($this->commands[$command]) && - isset($this->commands[$command]['options'])) { - return $this->commands[$command]['options']; - } else { - return null; - } - } - - // }}} - // {{{ getGetoptArgs() - - function getGetoptArgs($command, &$short_args, &$long_args) - { - $short_args = ""; - $long_args = array(); - if (empty($this->commands[$command]) || empty($this->commands[$command]['options'])) { - return; - } - reset($this->commands[$command]['options']); - while (list($option, $info) = each($this->commands[$command]['options'])) { - $larg = $sarg = ''; - if (isset($info['arg'])) { - if ($info['arg']{0} == '(') { - $larg = '=='; - $sarg = '::'; - $arg = substr($info['arg'], 1, -1); - } else { - $larg = '='; - $sarg = ':'; - $arg = $info['arg']; - } - } - if (isset($info['shortopt'])) { - $short_args .= $info['shortopt'] . $sarg; - } - $long_args[] = $option . $larg; - } - } - - // }}} - // {{{ getHelp() - /** - * Returns the help message for the given command - * - * @param string $command The command - * @return mixed A fail string if the command does not have help or - * a two elements array containing [0]=>help string, - * [1]=> help string for the accepted cmd args - */ - function getHelp($command) - { - $config = &PEAR_Config::singleton(); - if (!isset($this->commands[$command])) { - return "No such command \"$command\""; - } - $help = null; - if (isset($this->commands[$command]['doc'])) { - $help = $this->commands[$command]['doc']; - } - if (empty($help)) { - // XXX (cox) Fallback to summary if there is no doc (show both?) - if (!isset($this->commands[$command]['summary'])) { - return "No help for command \"$command\""; - } - $help = $this->commands[$command]['summary']; - } - if (preg_match_all('/{config\s+([^\}]+)}/e', $help, $matches)) { - foreach($matches[0] as $k => $v) { - $help = preg_replace("/$v/", $config->get($matches[1][$k]), $help); - } - } - return array($help, $this->getHelpArgs($command)); - } - - // }}} - // {{{ getHelpArgs() - /** - * Returns the help for the accepted arguments of a command - * - * @param string $command - * @return string The help string - */ - function getHelpArgs($command) - { - if (isset($this->commands[$command]['options']) && - count($this->commands[$command]['options'])) - { - $help = "Options:\n"; - foreach ($this->commands[$command]['options'] as $k => $v) { - if (isset($v['arg'])) { - if ($v['arg'][0] == '(') { - $arg = substr($v['arg'], 1, -1); - $sapp = " [$arg]"; - $lapp = "[=$arg]"; - } else { - $sapp = " $v[arg]"; - $lapp = "=$v[arg]"; - } - } else { - $sapp = $lapp = ""; - } - if (isset($v['shortopt'])) { - $s = $v['shortopt']; - $help .= " -$s$sapp, --$k$lapp\n"; - } else { - $help .= " --$k$lapp\n"; - } - $p = " "; - $doc = rtrim(str_replace("\n", "\n$p", $v['doc'])); - $help .= " $doc\n"; - } - return $help; - } - return null; - } - - // }}} - // {{{ run() - - function run($command, $options, $params) - { - if (empty($this->commands[$command]['function'])) { - // look for shortcuts - foreach (array_keys($this->commands) as $cmd) { - if (isset($this->commands[$cmd]['shortcut']) && $this->commands[$cmd]['shortcut'] == $command) { - if (empty($this->commands[$cmd]['function'])) { - return $this->raiseError("unknown command `$command'"); - } else { - $func = $this->commands[$cmd]['function']; - } - $command = $cmd; - break; - } - } - } else { - $func = $this->commands[$command]['function']; - } - return $this->$func($command, $options, $params); - } - - // }}} -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Config.php b/src/vitis/vas/rest/class/PEAR/Command/Config.php deleted file mode 100755 index d8179d3aa235aa65ce3f838e692bf2c0711ef001..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Config.php +++ /dev/null @@ -1,422 +0,0 @@ -<?php -/** - * PEAR_Command_Config (config-show, config-get, config-set, config-help, config-create commands) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Config.php,v 1.56 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for managing configuration data. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Config extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'config-show' => array( - 'summary' => 'Show All Settings', - 'function' => 'doConfigShow', - 'shortcut' => 'csh', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'show configuration variables for another channel', - 'arg' => 'CHAN', - ), -), - 'doc' => '[layer] -Displays all configuration values. An optional argument -may be used to tell which configuration layer to display. Valid -configuration layers are "user", "system" and "default". To display -configurations for different channels, set the default_channel -configuration variable and run config-show again. -', - ), - 'config-get' => array( - 'summary' => 'Show One Setting', - 'function' => 'doConfigGet', - 'shortcut' => 'cg', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'show configuration variables for another channel', - 'arg' => 'CHAN', - ), -), - 'doc' => '<parameter> [layer] -Displays the value of one configuration parameter. The -first argument is the name of the parameter, an optional second argument -may be used to tell which configuration layer to look in. Valid configuration -layers are "user", "system" and "default". If no layer is specified, a value -will be picked from the first layer that defines the parameter, in the order -just specified. The configuration value will be retrieved for the channel -specified by the default_channel configuration variable. -', - ), - 'config-set' => array( - 'summary' => 'Change Setting', - 'function' => 'doConfigSet', - 'shortcut' => 'cs', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'show configuration variables for another channel', - 'arg' => 'CHAN', - ), -), - 'doc' => '<parameter> <value> [layer] -Sets the value of one configuration parameter. The first argument is -the name of the parameter, the second argument is the new value. Some -parameters are subject to validation, and the command will fail with -an error message if the new value does not make sense. An optional -third argument may be used to specify in which layer to set the -configuration parameter. The default layer is "user". The -configuration value will be set for the current channel, which -is controlled by the default_channel configuration variable. -', - ), - 'config-help' => array( - 'summary' => 'Show Information About Setting', - 'function' => 'doConfigHelp', - 'shortcut' => 'ch', - 'options' => array(), - 'doc' => '[parameter] -Displays help for a configuration parameter. Without arguments it -displays help for all configuration parameters. -', - ), - 'config-create' => array( - 'summary' => 'Create a Default configuration file', - 'function' => 'doConfigCreate', - 'shortcut' => 'coc', - 'options' => array( - 'windows' => array( - 'shortopt' => 'w', - 'doc' => 'create a config file for a windows install', - ), - ), - 'doc' => '<root path> <filename> -Create a default configuration file with all directory configuration -variables set to subdirectories of <root path>, and save it as <filename>. -This is useful especially for creating a configuration file for a remote -PEAR installation (using the --remoteconfig option of install, upgrade, -and uninstall). -', - ), - ); - - // }}} - // {{{ constructor - - /** - * PEAR_Command_Config constructor. - * - * @access public - */ - function PEAR_Command_Config(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - // {{{ doConfigShow() - - function doConfigShow($command, $options, $params) - { - if (is_array($params)) { - $layer = isset($params[0]) ? $params[0] : NULL; - } else { - $layer = NULL; - } - - // $params[0] -> the layer - if ($error = $this->_checkLayer($layer)) { - return $this->raiseError("config-show:$error"); - } - $keys = $this->config->getKeys(); - sort($keys); - $channel = isset($options['channel']) ? $options['channel'] : - $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - if (!$reg->channelExists($channel)) { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - $data = array('caption' => 'Configuration (channel ' . $channel . '):'); - foreach ($keys as $key) { - $type = $this->config->getType($key); - $value = $this->config->get($key, $layer, $channel); - if ($type == 'password' && $value) { - $value = '********'; - } - if ($value === false) { - $value = 'false'; - } elseif ($value === true) { - $value = 'true'; - } - $data['data'][$this->config->getGroup($key)][] = array($this->config->getPrompt($key) , $key, $value); - } - foreach ($this->config->getLayers() as $layer) { - $data['data']['Config Files'][] = array(ucfirst($layer) . ' Configuration File', 'Filename' , $this->config->getConfFile($layer)); - } - - $this->ui->outputData($data, $command); - return true; - } - - // }}} - // {{{ doConfigGet() - - function doConfigGet($command, $options, $params) - { - if (!is_array($params)) { - $args_cnt = 0; - } else { - $args_cnt = count($params); - } - - switch ($args_cnt) { - case 1: - $config_key = $params[0]; - $layer = NULL; - break; - case 2: - $config_key = $params[0]; - $layer = $params[1]; - if ($error = $this->_checkLayer($layer)) { - return $this->raiseError("config-get:$error"); - } - break; - case 0: - default: - return $this->raiseError("config-get expects 1 or 2 parameters"); - } - - $channel = isset($options['channel']) ? $options['channel'] : $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - - if (!$reg->channelExists($channel)) { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - - $this->ui->outputData($this->config->get($config_key, $layer, $channel), $command); - - return true; - } - - // }}} - // {{{ doConfigSet() - - function doConfigSet($command, $options, $params) - { - // $param[0] -> a parameter to set - // $param[1] -> the value for the parameter - // $param[2] -> the layer - $failmsg = ''; - if (sizeof($params) < 2 || sizeof($params) > 3) { - $failmsg .= "config-set expects 2 or 3 parameters"; - return PEAR::raiseError($failmsg); - } - if (isset($params[2]) && ($error = $this->_checkLayer($params[2]))) { - $failmsg .= $error; - return PEAR::raiseError("config-set:$failmsg"); - } - $channel = isset($options['channel']) ? $options['channel'] : - $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - if (!$reg->channelExists($channel)) { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - if ($params[0] == 'default_channel') { - if (!$reg->channelExists($params[1])) { - return $this->raiseError('Channel "' . $params[1] . '" does not exist'); - } - } - if (count($params) == 2) { - array_push($params, 'user'); - $layer = 'user'; - } else { - $layer = $params[2]; - } - array_push($params, $channel); - if (!call_user_func_array(array(&$this->config, 'set'), $params)) - { - array_pop($params); - $failmsg = "config-set (" . implode(", ", $params) . ") failed, channel $channel"; - } else { - $this->config->store($layer); - } - if ($failmsg) { - return $this->raiseError($failmsg); - } - $this->ui->outputData('config-set succeeded', $command); - return true; - } - - // }}} - // {{{ doConfigHelp() - - function doConfigHelp($command, $options, $params) - { - if (empty($params)) { - $params = $this->config->getKeys(); - } - $data['caption'] = "Config help" . ((count($params) == 1) ? " for $params[0]" : ''); - $data['headline'] = array('Name', 'Type', 'Description'); - $data['border'] = true; - foreach ($params as $name) { - $type = $this->config->getType($name); - $docs = $this->config->getDocs($name); - if ($type == 'set') { - $docs = rtrim($docs) . "\nValid set: " . - implode(' ', $this->config->getSetValues($name)); - } - $data['data'][] = array($name, $type, $docs); - } - $this->ui->outputData($data, $command); - } - - // }}} - // {{{ doConfigCreate() - - function doConfigCreate($command, $options, $params) - { - if (count($params) != 2) { - return PEAR::raiseError('config-create: must have 2 parameters, root path and ' . - 'filename to save as'); - } - $root = $params[0]; - // Clean up the DIRECTORY_SEPARATOR mess - $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR; - $root = preg_replace(array('!\\\\+!', '!/+!', "!$ds2+!"), - array('/', '/', '/'), - $root); - if ($root{0} != '/') { - if (isset($options['windows'])) { - if (!preg_match('/^[A-Za-z]:/', $root)) { - return PEAR::raiseError('Root directory must be an absolute path beginning ' . - 'with "\\" or "C:\\", was: "' . $root . '"'); - } - } else { - return PEAR::raiseError('Root directory must be an absolute path beginning ' . - 'with "/", was: "' . $root . '"'); - } - } - $windows = isset($options['windows']); - if ($windows) { - $root = str_replace('/', '\\', $root); - } - if (!file_exists($params[1])) { - if (!@touch($params[1])) { - return PEAR::raiseError('Could not create "' . $params[1] . '"'); - } - } - $params[1] = realpath($params[1]); - $config = &new PEAR_Config($params[1], '#no#system#config#', false, false); - if ($root{strlen($root) - 1} == '/') { - $root = substr($root, 0, strlen($root) - 1); - } - $config->noRegistry(); - $config->set('php_dir', $windows ? "$root\\pear\\php" : "$root/pear/php", 'user'); - $config->set('data_dir', $windows ? "$root\\pear\\data" : "$root/pear/data"); - $config->set('www_dir', $windows ? "$root\\pear\\www" : "$root/pear/www"); - $config->set('cfg_dir', $windows ? "$root\\pear\\cfg" : "$root/pear/cfg"); - $config->set('ext_dir', $windows ? "$root\\pear\\ext" : "$root/pear/ext"); - $config->set('doc_dir', $windows ? "$root\\pear\\docs" : "$root/pear/docs"); - $config->set('test_dir', $windows ? "$root\\pear\\tests" : "$root/pear/tests"); - $config->set('cache_dir', $windows ? "$root\\pear\\cache" : "$root/pear/cache"); - $config->set('download_dir', $windows ? "$root\\pear\\download" : "$root/pear/download"); - $config->set('temp_dir', $windows ? "$root\\pear\\temp" : "$root/pear/temp"); - $config->set('bin_dir', $windows ? "$root\\pear" : "$root/pear"); - $config->writeConfigFile(); - $this->_showConfig($config); - $this->ui->outputData('Successfully created default configuration file "' . $params[1] . '"', - $command); - } - - // }}} - - function _showConfig(&$config) - { - $params = array('user'); - $keys = $config->getKeys(); - sort($keys); - $channel = 'pear.php.net'; - $data = array('caption' => 'Configuration (channel ' . $channel . '):'); - foreach ($keys as $key) { - $type = $config->getType($key); - $value = $config->get($key, 'user', $channel); - if ($type == 'password' && $value) { - $value = '********'; - } - if ($value === false) { - $value = 'false'; - } elseif ($value === true) { - $value = 'true'; - } - $data['data'][$config->getGroup($key)][] = - array($config->getPrompt($key) , $key, $value); - } - foreach ($config->getLayers() as $layer) { - $data['data']['Config Files'][] = - array(ucfirst($layer) . ' Configuration File', 'Filename' , - $config->getConfFile($layer)); - } - - $this->ui->outputData($data, 'config-show'); - return true; - } - // {{{ _checkLayer() - - /** - * Checks if a layer is defined or not - * - * @param string $layer The layer to search for - * @return mixed False on no error or the error message - */ - function _checkLayer($layer = null) - { - if (!empty($layer) && $layer != 'default') { - $layers = $this->config->getLayers(); - if (!in_array($layer, $layers)) { - return " only the layers: \"" . implode('" or "', $layers) . "\" are supported"; - } - } - return false; - } - - // }}} -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Config.xml b/src/vitis/vas/rest/class/PEAR/Command/Config.xml deleted file mode 100755 index f64a925f52c38a43c428f471b7b8ac8e6249ea82..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Config.xml +++ /dev/null @@ -1,92 +0,0 @@ -<commands version="1.0"> - <config-show> - <summary>Show All Settings</summary> - <function>doConfigShow</function> - <shortcut>csh</shortcut> - <options> - <channel> - <shortopt>c</shortopt> - <doc>show configuration variables for another channel</doc> - <arg>CHAN</arg> - </channel> - </options> - <doc>[layer] -Displays all configuration values. An optional argument -may be used to tell which configuration layer to display. Valid -configuration layers are "user", "system" and "default". To display -configurations for different channels, set the default_channel -configuration variable and run config-show again. -</doc> - </config-show> - <config-get> - <summary>Show One Setting</summary> - <function>doConfigGet</function> - <shortcut>cg</shortcut> - <options> - <channel> - <shortopt>c</shortopt> - <doc>show configuration variables for another channel</doc> - <arg>CHAN</arg> - </channel> - </options> - <doc><parameter> [layer] -Displays the value of one configuration parameter. The -first argument is the name of the parameter, an optional second argument -may be used to tell which configuration layer to look in. Valid configuration -layers are "user", "system" and "default". If no layer is specified, a value -will be picked from the first layer that defines the parameter, in the order -just specified. The configuration value will be retrieved for the channel -specified by the default_channel configuration variable. -</doc> - </config-get> - <config-set> - <summary>Change Setting</summary> - <function>doConfigSet</function> - <shortcut>cs</shortcut> - <options> - <channel> - <shortopt>c</shortopt> - <doc>show configuration variables for another channel</doc> - <arg>CHAN</arg> - </channel> - </options> - <doc><parameter> <value> [layer] -Sets the value of one configuration parameter. The first argument is -the name of the parameter, the second argument is the new value. Some -parameters are subject to validation, and the command will fail with -an error message if the new value does not make sense. An optional -third argument may be used to specify in which layer to set the -configuration parameter. The default layer is "user". The -configuration value will be set for the current channel, which -is controlled by the default_channel configuration variable. -</doc> - </config-set> - <config-help> - <summary>Show Information About Setting</summary> - <function>doConfigHelp</function> - <shortcut>ch</shortcut> - <options /> - <doc>[parameter] -Displays help for a configuration parameter. Without arguments it -displays help for all configuration parameters. -</doc> - </config-help> - <config-create> - <summary>Create a Default configuration file</summary> - <function>doConfigCreate</function> - <shortcut>coc</shortcut> - <options> - <windows> - <shortopt>w</shortopt> - <doc>create a config file for a windows install</doc> - </windows> - </options> - <doc><root path> <filename> -Create a default configuration file with all directory configuration -variables set to subdirectories of <root path>, and save it as <filename>. -This is useful especially for creating a configuration file for a remote -PEAR installation (using the --remoteconfig option of install, upgrade, -and uninstall). -</doc> - </config-create> -</commands> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Install.php b/src/vitis/vas/rest/class/PEAR/Command/Install.php deleted file mode 100755 index fba43820f5261a82a09381122bba9cfb50dd10b3..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Install.php +++ /dev/null @@ -1,1188 +0,0 @@ -<?php -/** - * PEAR_Command_Install (install, upgrade, upgrade-all, uninstall, bundle, run-scripts commands) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Install.php,v 1.141 2008/05/13 18:32:29 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for installation or deinstallation/upgrading of - * packages. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Install extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'install' => array( - 'summary' => 'Install Package', - 'function' => 'doInstall', - 'shortcut' => 'i', - 'options' => array( - 'force' => array( - 'shortopt' => 'f', - 'doc' => 'will overwrite newer installed packages', - ), - 'loose' => array( - 'shortopt' => 'l', - 'doc' => 'do not check for recommended dependency version', - ), - 'nodeps' => array( - 'shortopt' => 'n', - 'doc' => 'ignore dependencies, install anyway', - ), - 'register-only' => array( - 'shortopt' => 'r', - 'doc' => 'do not install files, only register the package as installed', - ), - 'soft' => array( - 'shortopt' => 's', - 'doc' => 'soft install, fail silently, or upgrade if already installed', - ), - 'nobuild' => array( - 'shortopt' => 'B', - 'doc' => 'don\'t build C extensions', - ), - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'request uncompressed files when downloading', - ), - 'installroot' => array( - 'shortopt' => 'R', - 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT), use packagingroot for RPM', - ), - 'packagingroot' => array( - 'shortopt' => 'P', - 'arg' => 'DIR', - 'doc' => 'root directory used when packaging files, like RPM packaging', - ), - 'ignore-errors' => array( - 'doc' => 'force install even if there were errors', - ), - 'alldeps' => array( - 'shortopt' => 'a', - 'doc' => 'install all required and optional dependencies', - ), - 'onlyreqdeps' => array( - 'shortopt' => 'o', - 'doc' => 'install all required dependencies', - ), - 'offline' => array( - 'shortopt' => 'O', - 'doc' => 'do not attempt to download any urls or contact channels', - ), - 'pretend' => array( - 'shortopt' => 'p', - 'doc' => 'Only list the packages that would be downloaded', - ), - ), - 'doc' => '[channel/]<package> ... -Installs one or more PEAR packages. You can specify a package to -install in four ways: - -"Package-1.0.tgz" : installs from a local file - -"http://example.com/Package-1.0.tgz" : installs from -anywhere on the net. - -"package.xml" : installs the package described in -package.xml. Useful for testing, or for wrapping a PEAR package in -another package manager such as RPM. - -"Package[-version/state][.tar]" : queries your default channel\'s server -({config master_server}) and downloads the newest package with -the preferred quality/state ({config preferred_state}). - -To retrieve Package version 1.1, use "Package-1.1," to retrieve -Package state beta, use "Package-beta." To retrieve an uncompressed -file, append .tar (make sure there is no file by the same name first) - -To download a package from another channel, prefix with the channel name like -"channel/Package" - -More than one package may be specified at once. It is ok to mix these -four ways of specifying packages. -'), - 'upgrade' => array( - 'summary' => 'Upgrade Package', - 'function' => 'doInstall', - 'shortcut' => 'up', - 'options' => array( - 'force' => array( - 'shortopt' => 'f', - 'doc' => 'overwrite newer installed packages', - ), - 'loose' => array( - 'shortopt' => 'l', - 'doc' => 'do not check for recommended dependency version', - ), - 'nodeps' => array( - 'shortopt' => 'n', - 'doc' => 'ignore dependencies, upgrade anyway', - ), - 'register-only' => array( - 'shortopt' => 'r', - 'doc' => 'do not install files, only register the package as upgraded', - ), - 'nobuild' => array( - 'shortopt' => 'B', - 'doc' => 'don\'t build C extensions', - ), - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'request uncompressed files when downloading', - ), - 'installroot' => array( - 'shortopt' => 'R', - 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT)', - ), - 'ignore-errors' => array( - 'doc' => 'force install even if there were errors', - ), - 'alldeps' => array( - 'shortopt' => 'a', - 'doc' => 'install all required and optional dependencies', - ), - 'onlyreqdeps' => array( - 'shortopt' => 'o', - 'doc' => 'install all required dependencies', - ), - 'offline' => array( - 'shortopt' => 'O', - 'doc' => 'do not attempt to download any urls or contact channels', - ), - 'pretend' => array( - 'shortopt' => 'p', - 'doc' => 'Only list the packages that would be downloaded', - ), - ), - 'doc' => '<package> ... -Upgrades one or more PEAR packages. See documentation for the -"install" command for ways to specify a package. - -When upgrading, your package will be updated if the provided new -package has a higher version number (use the -f option if you need to -upgrade anyway). - -More than one package may be specified at once. -'), - 'upgrade-all' => array( - 'summary' => 'Upgrade All Packages', - 'function' => 'doUpgradeAll', - 'shortcut' => 'ua', - 'options' => array( - 'nodeps' => array( - 'shortopt' => 'n', - 'doc' => 'ignore dependencies, upgrade anyway', - ), - 'register-only' => array( - 'shortopt' => 'r', - 'doc' => 'do not install files, only register the package as upgraded', - ), - 'nobuild' => array( - 'shortopt' => 'B', - 'doc' => 'don\'t build C extensions', - ), - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'request uncompressed files when downloading', - ), - 'installroot' => array( - 'shortopt' => 'R', - 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT), use packagingroot for RPM', - ), - 'ignore-errors' => array( - 'doc' => 'force install even if there were errors', - ), - 'loose' => array( - 'doc' => 'do not check for recommended dependency version', - ), - ), - 'doc' => ' -Upgrades all packages that have a newer release available. Upgrades are -done only if there is a release available of the state specified in -"preferred_state" (currently {config preferred_state}), or a state considered -more stable. -'), - 'uninstall' => array( - 'summary' => 'Un-install Package', - 'function' => 'doUninstall', - 'shortcut' => 'un', - 'options' => array( - 'nodeps' => array( - 'shortopt' => 'n', - 'doc' => 'ignore dependencies, uninstall anyway', - ), - 'register-only' => array( - 'shortopt' => 'r', - 'doc' => 'do not remove files, only register the packages as not installed', - ), - 'installroot' => array( - 'shortopt' => 'R', - 'arg' => 'DIR', - 'doc' => 'root directory used when installing files (ala PHP\'s INSTALL_ROOT)', - ), - 'ignore-errors' => array( - 'doc' => 'force install even if there were errors', - ), - 'offline' => array( - 'shortopt' => 'O', - 'doc' => 'do not attempt to uninstall remotely', - ), - ), - 'doc' => '[channel/]<package> ... -Uninstalls one or more PEAR packages. More than one package may be -specified at once. Prefix with channel name to uninstall from a -channel not in your default channel ({config default_channel}) -'), - 'bundle' => array( - 'summary' => 'Unpacks a Pecl Package', - 'function' => 'doBundle', - 'shortcut' => 'bun', - 'options' => array( - 'destination' => array( - 'shortopt' => 'd', - 'arg' => 'DIR', - 'doc' => 'Optional destination directory for unpacking (defaults to current path or "ext" if exists)', - ), - 'force' => array( - 'shortopt' => 'f', - 'doc' => 'Force the unpacking even if there were errors in the package', - ), - ), - 'doc' => '<package> -Unpacks a Pecl Package into the selected location. It will download the -package if needed. -'), - 'run-scripts' => array( - 'summary' => 'Run Post-Install Scripts bundled with a package', - 'function' => 'doRunScripts', - 'shortcut' => 'rs', - 'options' => array( - ), - 'doc' => '<package> -Run post-installation scripts in package <package>, if any exist. -'), - ); - - // }}} - // {{{ constructor - - /** - * PEAR_Command_Install constructor. - * - * @access public - */ - function PEAR_Command_Install(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - /** - * For unit testing purposes - */ - function &getDownloader(&$ui, $options, &$config) - { - if (!class_exists('PEAR_Downloader')) { - require_once 'PEAR/Downloader.php'; - } - $a = &new PEAR_Downloader($ui, $options, $config); - return $a; - } - - /** - * For unit testing purposes - */ - function &getInstaller(&$ui) - { - if (!class_exists('PEAR_Installer')) { - require_once 'PEAR/Installer.php'; - } - $a = &new PEAR_Installer($ui); - return $a; - } - - function enableExtension($binaries, $type) - { - if (!($phpini = $this->config->get('php_ini', null, 'pear.php.net'))) { - return PEAR::raiseError('configuration option "php_ini" is not set to php.ini location'); - } - $ini = $this->_parseIni($phpini); - if (PEAR::isError($ini)) { - return $ini; - } - $line = 0; - if ($type == 'extsrc' || $type == 'extbin') { - $search = 'extensions'; - $enable = 'extension'; - } else { - $search = 'zend_extensions'; - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('Thread Safety.+enabled', $info) ? '_ts' : ''; - $enable = 'zend_extension' . $debug . $ts; - } - foreach ($ini[$search] as $line => $extension) { - if (in_array($extension, $binaries, true) || in_array( - $ini['extension_dir'] . DIRECTORY_SEPARATOR . $extension, $binaries, true)) { - // already enabled - assume if one is, all are - return true; - } - } - if ($line) { - $newini = array_slice($ini['all'], 0, $line); - } else { - $newini = array(); - } - foreach ($binaries as $binary) { - if ($ini['extension_dir']) { - $binary = basename($binary); - } - $newini[] = $enable . '="' . $binary . '"' . (OS_UNIX ? "\n" : "\r\n"); - } - $newini = array_merge($newini, array_slice($ini['all'], $line)); - $fp = @fopen($phpini, 'wb'); - if (!$fp) { - return PEAR::raiseError('cannot open php.ini "' . $phpini . '" for writing'); - } - foreach ($newini as $line) { - fwrite($fp, $line); - } - fclose($fp); - return true; - } - - function disableExtension($binaries, $type) - { - if (!($phpini = $this->config->get('php_ini', null, 'pear.php.net'))) { - return PEAR::raiseError('configuration option "php_ini" is not set to php.ini location'); - } - $ini = $this->_parseIni($phpini); - if (PEAR::isError($ini)) { - return $ini; - } - $line = 0; - if ($type == 'extsrc' || $type == 'extbin') { - $search = 'extensions'; - $enable = 'extension'; - } else { - $search = 'zend_extensions'; - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('Thread Safety.+enabled', $info) ? '_ts' : ''; - $enable = 'zend_extension' . $debug . $ts; - } - $found = false; - foreach ($ini[$search] as $line => $extension) { - if (in_array($extension, $binaries, true) || in_array( - $ini['extension_dir'] . DIRECTORY_SEPARATOR . $extension, $binaries, true)) { - $found = true; - break; - } - } - if (!$found) { - // not enabled - return true; - } - $fp = @fopen($phpini, 'wb'); - if (!$fp) { - return PEAR::raiseError('cannot open php.ini "' . $phpini . '" for writing'); - } - if ($line) { - $newini = array_slice($ini['all'], 0, $line); - // delete the enable line - $newini = array_merge($newini, array_slice($ini['all'], $line + 1)); - } else { - $newini = array_slice($ini['all'], 1); - } - foreach ($newini as $line) { - fwrite($fp, $line); - } - fclose($fp); - return true; - } - - function _parseIni($filename) - { - if (file_exists($filename)) { - if (filesize($filename) > 300000) { - return PEAR::raiseError('php.ini "' . $filename . '" is too large, aborting'); - } - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('/Thread Safety.+enabled/', $info) ? '_ts' : ''; - $zend_extension_line = 'zend_extension' . $debug . $ts; - $all = @file($filename); - if (!$all) { - return PEAR::raiseError('php.ini "' . $filename .'" could not be read'); - } - $zend_extensions = $extensions = array(); - // assume this is right, but pull from the php.ini if it is found - $extension_dir = ini_get('extension_dir'); - foreach ($all as $linenum => $line) { - $line = trim($line); - if (!$line) { - continue; - } - if ($line[0] == ';') { - continue; - } - if (strtolower(substr($line, 0, 13)) == 'extension_dir') { - $line = trim(substr($line, 13)); - if ($line[0] == '=') { - $x = trim(substr($line, 1)); - $x = explode(';', $x); - $extension_dir = str_replace('"', '', array_shift($x)); - continue; - } - } - if (strtolower(substr($line, 0, 9)) == 'extension') { - $line = trim(substr($line, 9)); - if ($line[0] == '=') { - $x = trim(substr($line, 1)); - $x = explode(';', $x); - $extensions[$linenum] = str_replace('"', '', array_shift($x)); - continue; - } - } - if (strtolower(substr($line, 0, strlen($zend_extension_line))) == - $zend_extension_line) { - $line = trim(substr($line, strlen($zend_extension_line))); - if ($line[0] == '=') { - $x = trim(substr($line, 1)); - $x = explode(';', $x); - $zend_extensions[$linenum] = str_replace('"', '', array_shift($x)); - continue; - } - } - } - return array( - 'extensions' => $extensions, - 'zend_extensions' => $zend_extensions, - 'extension_dir' => $extension_dir, - 'all' => $all, - ); - } else { - return PEAR::raiseError('php.ini "' . $filename . '" does not exist'); - } - } - - // {{{ doInstall() - - function doInstall($command, $options, $params) - { - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - if (empty($this->installer)) { - $this->installer = &$this->getInstaller($this->ui); - } - if ($command == 'upgrade' || $command == 'upgrade-all') { - $options['upgrade'] = true; - } else { - $packages = $params; - } - if (isset($options['installroot']) && isset($options['packagingroot'])) { - return $this->raiseError('ERROR: cannot use both --installroot and --packagingroot'); - } - $reg = &$this->config->getRegistry(); - $instreg = &$reg; // instreg used to check if package is installed - if (isset($options['packagingroot']) && !isset($options['upgrade'])) { - $packrootphp_dir = $this->installer->_prependPath( - $this->config->get('php_dir', null, 'pear.php.net'), - $options['packagingroot']); - $instreg = new PEAR_Registry($packrootphp_dir); // other instreg! - - if ($this->config->get('verbose') > 2) { - $this->ui->outputData('using package root: ' . $options['packagingroot']); - } - } - $abstractpackages = array(); - $otherpackages = array(); - // parse params - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - foreach($params as $param) { - if (strpos($param, 'http://') === 0) { - $otherpackages[] = $param; - continue; - } - if (strpos($param, 'channel://') === false && @file_exists($param)) { - if (isset($options['force'])) { - $otherpackages[] = $param; - continue; - } - $pkg = new PEAR_PackageFile($this->config); - $pf = $pkg->fromAnyFile($param, PEAR_VALIDATE_DOWNLOADING); - if (PEAR::isError($pf)) { - $otherpackages[] = $param; - continue; - } - if ($reg->packageExists($pf->getPackage(), $pf->getChannel()) && - version_compare($pf->getVersion(), - $reg->packageInfo($pf->getPackage(), 'version', $pf->getChannel()), - '<=')) { - if ($this->config->get('verbose')) { - $this->ui->outputData('Ignoring installed package ' . - $reg->parsedPackageNameToString( - array('package' => $pf->getPackage(), - 'channel' => $pf->getChannel()), true)); - } - continue; - } - $otherpackages[] = $param; - continue; - } - $e = $reg->parsePackageName($param, $this->config->get('default_channel')); - if (PEAR::isError($e)) { - $otherpackages[] = $param; - } else { - $abstractpackages[] = $e; - } - } - PEAR::staticPopErrorHandling(); - - // if there are any local package .tgz or remote static url, we can't - // filter. The filter only works for abstract packages - if (count($abstractpackages) && !isset($options['force'])) { - // when not being forced, only do necessary upgrades/installs - if (isset($options['upgrade'])) { - $abstractpackages = $this->_filterUptodatePackages($abstractpackages, - $command); - } else { - foreach ($abstractpackages as $i => $package) { - if (isset($package['group'])) { - // do not filter out install groups - continue; - } - if ($instreg->packageExists($package['package'], $package['channel'])) { - if ($this->config->get('verbose')) { - $this->ui->outputData('Ignoring installed package ' . - $reg->parsedPackageNameToString($package, true)); - } - unset($abstractpackages[$i]); - } - } - } - $abstractpackages = - array_map(array($reg, 'parsedPackageNameToString'), $abstractpackages); - } elseif (count($abstractpackages)) { - $abstractpackages = - array_map(array($reg, 'parsedPackageNameToString'), $abstractpackages); - } - - - $packages = array_merge($abstractpackages, $otherpackages); - if (!count($packages)) { - $this->ui->outputData('Nothing to ' . $command); - return true; - } - - $this->downloader = &$this->getDownloader($this->ui, $options, $this->config); - $errors = array(); - $binaries = array(); - $downloaded = array(); - $downloaded = &$this->downloader->download($packages); - if (PEAR::isError($downloaded)) { - return $this->raiseError($downloaded); - } - $errors = $this->downloader->getErrorMsgs(); - if (count($errors)) { - $err = array(); - $err['data'] = array(); - foreach ($errors as $error) { - $err['data'][] = array($error); - } - $err['headline'] = 'Install Errors'; - $this->ui->outputData($err); - if (!count($downloaded)) { - return $this->raiseError("$command failed"); - } - } - $data = array( - 'headline' => 'Packages that would be Installed' - ); - if (isset($options['pretend'])) { - foreach ($downloaded as $package) { - $data['data'][] = array($reg->parsedPackageNameToString($package->getParsedPackage())); - } - $this->ui->outputData($data, 'pretend'); - return true; - } - $this->installer->setOptions($options); - $this->installer->sortPackagesForInstall($downloaded); - if (PEAR::isError($err = $this->installer->setDownloadedPackages($downloaded))) { - $this->raiseError($err->getMessage()); - return true; - } - $extrainfo = array(); - $binaries = array(); - foreach ($downloaded as $param) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $info = $this->installer->install($param, $options); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($info)) { - $oldinfo = $info; - $pkg = &$param->getPackageFile(); - if ($info->getCode() != PEAR_INSTALLER_NOBINARY) { - if (!($info = $pkg->installBinary($this->installer))) { - $this->ui->outputData('ERROR: ' .$oldinfo->getMessage()); - continue; - } - // we just installed a different package than requested, - // let's change the param and info so that the rest of this works - $param = $info[0]; - $info = $info[1]; - } - } - if (is_array($info)) { - if ($param->getPackageType() == 'extsrc' || - $param->getPackageType() == 'extbin' || - $param->getPackageType() == 'zendextsrc' || - $param->getPackageType() == 'zendextbin') { - $pkg = &$param->getPackageFile(); - if ($instbin = $pkg->getInstalledBinary()) { - $instpkg = &$instreg->getPackage($instbin, $pkg->getChannel()); - } else { - $instpkg = &$instreg->getPackage($pkg->getPackage(), $pkg->getChannel()); - } - - foreach ($instpkg->getFilelist() as $name => $atts) { - $pinfo = pathinfo($atts['installed_as']); - if (!isset($pinfo['extension']) || - in_array($pinfo['extension'], array('c', 'h'))) { - continue; // make sure we don't match php_blah.h - } - if ((strpos($pinfo['basename'], 'php_') === 0 && - $pinfo['extension'] == 'dll') || - // most unices - $pinfo['extension'] == 'so' || - // hp-ux - $pinfo['extension'] == 'sl') { - $binaries[] = array($atts['installed_as'], $pinfo); - break; - } - } - if (count($binaries)) { - foreach ($binaries as $pinfo) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $ret = $this->enableExtension(array($pinfo[0]), $param->getPackageType()); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($ret)) { - $extrainfo[] = $ret->getMessage(); - if ($param->getPackageType() == 'extsrc' || - $param->getPackageType() == 'extbin') { - $exttype = 'extension'; - } else { - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('Thread Safety.+enabled', $info) ? '_ts' : ''; - $exttype = 'zend_extension' . $debug . $ts; - } - $extrainfo[] = 'You should add "' . $exttype . '=' . - $pinfo[1]['basename'] . '" to php.ini'; - } else { - $extrainfo[] = 'Extension ' . $instpkg->getProvidesExtension() . - ' enabled in php.ini'; - } - } - } - } - if ($this->config->get('verbose') > 0) { - $channel = $param->getChannel(); - $label = $reg->parsedPackageNameToString( - array( - 'channel' => $channel, - 'package' => $param->getPackage(), - 'version' => $param->getVersion(), - )); - $out = array('data' => "$command ok: $label"); - if (isset($info['release_warnings'])) { - $out['release_warnings'] = $info['release_warnings']; - } - $this->ui->outputData($out, $command); - if (!isset($options['register-only']) && !isset($options['offline'])) { - if ($this->config->isDefinedLayer('ftp')) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $info = $this->installer->ftpInstall($param); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($info)) { - $this->ui->outputData($info->getMessage()); - $this->ui->outputData("remote install failed: $label"); - } else { - $this->ui->outputData("remote install ok: $label"); - } - } - } - } - $deps = $param->getDeps(); - if ($deps) { - if (isset($deps['group'])) { - $groups = $deps['group']; - if (!isset($groups[0])) { - $groups = array($groups); - } - foreach ($groups as $group) { - if ($group['attribs']['name'] == 'default') { - // default group is always installed, unless the user - // explicitly chooses to install another group - continue; - } - $extrainfo[] = $param->getPackage() . ': Optional feature ' . - $group['attribs']['name'] . ' available (' . - $group['attribs']['hint'] . ')'; - } - $extrainfo[] = $param->getPackage() . - ': To install optional features use "pear install ' . - $reg->parsedPackageNameToString( - array('package' => $param->getPackage(), - 'channel' => $param->getChannel()), true) . - '#featurename"'; - } - } - $pkg = &$instreg->getPackage($param->getPackage(), $param->getChannel()); - // $pkg may be NULL if install is a 'fake' install via --packagingroot - if (is_object($pkg)) { - $pkg->setConfig($this->config); - if ($list = $pkg->listPostinstallScripts()) { - $pn = $reg->parsedPackageNameToString(array('channel' => - $param->getChannel(), 'package' => $param->getPackage()), true); - $extrainfo[] = $pn . ' has post-install scripts:'; - foreach ($list as $file) { - $extrainfo[] = $file; - } - $extrainfo[] = $param->getPackage() . - ': Use "pear run-scripts ' . $pn . '" to finish setup.'; - $extrainfo[] = 'DO NOT RUN SCRIPTS FROM UNTRUSTED SOURCES'; - } - } - } else { - return $this->raiseError("$command failed"); - } - } - if (count($extrainfo)) { - foreach ($extrainfo as $info) { - $this->ui->outputData($info); - } - } - return true; - } - - // }}} - // {{{ doUpgradeAll() - - function doUpgradeAll($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - $toUpgrade = array(); - foreach ($reg->listChannels() as $channel) { - if ($channel == '__uri') { - continue; - } - - // parse name with channel - foreach ($reg->listPackages($channel) as $name) { - $toUpgrade[] = $reg->parsedPackageNameToString(array( - 'channel' => $channel, - 'package' => $name - )); - } - } - - $err = $this->doInstall('upgrade-all', $options, $toUpgrade); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage(), $command); - } - } - - // }}} - // {{{ doUninstall() - - function doUninstall($command, $options, $params) - { - if (empty($this->installer)) { - $this->installer = &$this->getInstaller($this->ui); - } - if (isset($options['remoteconfig'])) { - $e = $this->config->readFTPConfigFile($options['remoteconfig']); - if (!PEAR::isError($e)) { - $this->installer->setConfig($this->config); - } - } - if (sizeof($params) < 1) { - return $this->raiseError("Please supply the package(s) you want to uninstall"); - } - $reg = &$this->config->getRegistry(); - $newparams = array(); - $binaries = array(); - $badparams = array(); - foreach ($params as $pkg) { - $channel = $this->config->get('default_channel'); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $parsed = $reg->parsePackageName($pkg, $channel); - PEAR::staticPopErrorHandling(); - if (!$parsed || PEAR::isError($parsed)) { - $badparams[] = $pkg; - continue; - } - $package = $parsed['package']; - $channel = $parsed['channel']; - $info = &$reg->getPackage($package, $channel); - if ($info === null && - ($channel == 'pear.php.net' || $channel == 'pecl.php.net')) { - // make sure this isn't a package that has flipped from pear to pecl but - // used a package.xml 1.0 - $testc = ($channel == 'pear.php.net') ? 'pecl.php.net' : 'pear.php.net'; - $info = &$reg->getPackage($package, $testc); - if ($info !== null) { - $channel = $testc; - } - } - if ($info === null) { - $badparams[] = $pkg; - } else { - $newparams[] = &$info; - // check for binary packages (this is an alias for those packages if so) - if ($installedbinary = $info->getInstalledBinary()) { - $this->ui->log('adding binary package ' . - $reg->parsedPackageNameToString(array('channel' => $channel, - 'package' => $installedbinary), true)); - $newparams[] = &$reg->getPackage($installedbinary, $channel); - } - // add the contents of a dependency group to the list of installed packages - if (isset($parsed['group'])) { - $group = $info->getDependencyGroup($parsed['group']); - if ($group) { - $installed = $reg->getInstalledGroup($group); - if ($installed) { - foreach ($installed as $i => $p) { - $newparams[] = &$installed[$i]; - } - } - } - } - } - } - $err = $this->installer->sortPackagesForUninstall($newparams); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage(), $command); - return true; - } - $params = $newparams; - // twist this to use it to check on whether dependent packages are also being uninstalled - // for circular dependencies like subpackages - $this->installer->setUninstallPackages($newparams); - $params = array_merge($params, $badparams); - $binaries = array(); - foreach ($params as $pkg) { - $this->installer->pushErrorHandling(PEAR_ERROR_RETURN); - if ($err = $this->installer->uninstall($pkg, $options)) { - $this->installer->popErrorHandling(); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage(), $command); - continue; - } - if ($pkg->getPackageType() == 'extsrc' || - $pkg->getPackageType() == 'extbin' || - $pkg->getPackageType() == 'zendextsrc' || - $pkg->getPackageType() == 'zendextbin') { - if ($instbin = $pkg->getInstalledBinary()) { - continue; // this will be uninstalled later - } - - foreach ($pkg->getFilelist() as $name => $atts) { - $pinfo = pathinfo($atts['installed_as']); - if (!isset($pinfo['extension']) || - in_array($pinfo['extension'], array('c', 'h'))) { - continue; // make sure we don't match php_blah.h - } - if ((strpos($pinfo['basename'], 'php_') === 0 && - $pinfo['extension'] == 'dll') || - // most unices - $pinfo['extension'] == 'so' || - // hp-ux - $pinfo['extension'] == 'sl') { - $binaries[] = array($atts['installed_as'], $pinfo); - break; - } - } - if (count($binaries)) { - foreach ($binaries as $pinfo) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $ret = $this->disableExtension(array($pinfo[0]), $pkg->getPackageType()); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($ret)) { - $extrainfo[] = $ret->getMessage(); - if ($pkg->getPackageType() == 'extsrc' || - $pkg->getPackageType() == 'extbin') { - $exttype = 'extension'; - } else { - ob_start(); - phpinfo(INFO_GENERAL); - $info = ob_get_contents(); - ob_end_clean(); - $debug = function_exists('leak') ? '_debug' : ''; - $ts = preg_match('Thread Safety.+enabled', $info) ? '_ts' : ''; - $exttype = 'zend_extension' . $debug . $ts; - } - $this->ui->outputData('Unable to remove "' . $exttype . '=' . - $pinfo[1]['basename'] . '" from php.ini', $command); - } else { - $this->ui->outputData('Extension ' . $pkg->getProvidesExtension() . - ' disabled in php.ini', $command); - } - } - } - } - $savepkg = $pkg; - if ($this->config->get('verbose') > 0) { - if (is_object($pkg)) { - $pkg = $reg->parsedPackageNameToString($pkg); - } - $this->ui->outputData("uninstall ok: $pkg", $command); - } - if (!isset($options['offline']) && is_object($savepkg) && - defined('PEAR_REMOTEINSTALL_OK')) { - if ($this->config->isDefinedLayer('ftp')) { - $this->installer->pushErrorHandling(PEAR_ERROR_RETURN); - $info = $this->installer->ftpUninstall($savepkg); - $this->installer->popErrorHandling(); - if (PEAR::isError($info)) { - $this->ui->outputData($info->getMessage()); - $this->ui->outputData("remote uninstall failed: $pkg"); - } else { - $this->ui->outputData("remote uninstall ok: $pkg"); - } - } - } - } else { - $this->installer->popErrorHandling(); - if (is_object($pkg)) { - $pkg = $reg->parsedPackageNameToString($pkg); - } - return $this->raiseError("uninstall failed: $pkg"); - } - } - return true; - } - - // }}} - - - // }}} - // {{{ doBundle() - /* - (cox) It just downloads and untars the package, does not do - any check that the PEAR_Installer::_installFile() does. - */ - - function doBundle($command, $options, $params) - { - $downloader = &$this->getDownloader($this->ui, array('force' => true, 'nodeps' => true, - 'soft' => true, 'downloadonly' => true), $this->config); - $reg = &$this->config->getRegistry(); - if (sizeof($params) < 1) { - return $this->raiseError("Please supply the package you want to bundle"); - } - - if (isset($options['destination'])) { - if (!is_dir($options['destination'])) { - System::mkdir('-p ' . $options['destination']); - } - $dest = realpath($options['destination']); - } else { - $pwd = getcwd(); - if (is_dir($pwd . DIRECTORY_SEPARATOR . 'ext')) { - $dest = $pwd . DIRECTORY_SEPARATOR . 'ext'; - } else { - $dest = $pwd; - } - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $downloader->setDownloadDir($dest); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($err)) { - return PEAR::raiseError('download directory "' . $dest . - '" is not writeable.'); - } - $result = &$downloader->download(array($params[0])); - if (PEAR::isError($result)) { - return $result; - } - if (!isset($result[0])) { - return $this->raiseError('unable to unpack ' . $params[0]); - } - $pkgfile = &$result[0]->getPackageFile(); - $pkgname = $pkgfile->getName(); - $pkgversion = $pkgfile->getVersion(); - - // Unpacking ------------------------------------------------- - $dest .= DIRECTORY_SEPARATOR . $pkgname; - $orig = $pkgname . '-' . $pkgversion; - - $tar = &new Archive_Tar($pkgfile->getArchiveFile()); - if (!$tar->extractModify($dest, $orig)) { - return $this->raiseError('unable to unpack ' . $pkgfile->getArchiveFile()); - } - $this->ui->outputData("Package ready at '$dest'"); - // }}} - } - - // }}} - - function doRunScripts($command, $options, $params) - { - if (!isset($params[0])) { - return $this->raiseError('run-scripts expects 1 parameter: a package name'); - } - $reg = &$this->config->getRegistry(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $parsed = $reg->parsePackageName($params[0], $this->config->get('default_channel')); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($parsed)) { - return $this->raiseError($parsed); - } - $package = &$reg->getPackage($parsed['package'], $parsed['channel']); - if (is_object($package)) { - $package->setConfig($this->config); - $package->runPostinstallScripts(); - } else { - return $this->raiseError('Could not retrieve package "' . $params[0] . '" from registry'); - } - $this->ui->outputData('Install scripts complete', $command); - return true; - } - - /** - * Given a list of packages, filter out those ones that are already up to date - * - * @param $packages: packages, in parsed array format ! - * @return list of packages that can be upgraded - */ - function _filterUptodatePackages($packages, $command) - { - $reg = &$this->config->getRegistry(); - $latestReleases = array(); - - $ret = array(); - foreach($packages as $package) { - if (isset($package['group'])) { - $ret[] = $package; - continue; - } - $channel = $package['channel']; - $name = $package['package']; - - if (!$reg->packageExists($name, $channel)) { - $ret[] = $package; - continue; - } - if (!isset($latestReleases[$channel])) { - // fill in cache for this channel - $chan = &$reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - if ($chan->supportsREST($this->config->get('preferred_mirror', - null, $channel)) && - $base = $chan->getBaseURL('REST1.0', - $this->config->get('preferred_mirror', - null, $channel))) - { - $dorest = true; - } else { - $dorest = false; - $remote = &$this->config->getRemote($this->config); - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if ($dorest) { - $rest = &$this->config->getREST('1.0', array()); - $installed = array_flip($reg->listPackages($channel)); - $latest = $rest->listLatestUpgrades($base, - $this->config->get('preferred_state', null, $channel), $installed, - $channel, $reg); - } else { - $latest = $remote->call("package.listLatestReleases", - $this->config->get('preferred_state', null, $channel)); - unset($remote); - } - PEAR::staticPopErrorHandling(); - if (PEAR::isError($latest)) { - $this->ui->outputData('Error getting channel info from ' . $channel . - ': ' . $latest->getMessage()); - continue; - } - - $latestReleases[$channel] = array_change_key_case($latest); - } - - // check package for latest release - if (isset($latestReleases[$channel][strtolower($name)])) { - // if not set, up to date - $inst_version = $reg->packageInfo($name, 'version', $channel); - $channel_version = $latestReleases[$channel][strtolower($name)]['version']; - if (version_compare($channel_version, $inst_version, "le")) { - // installed version is up-to-date - continue; - } - // maintain BC - if ($command == 'upgrade-all') { - $this->ui->outputData(array('data' => 'Will upgrade ' . - $reg->parsedPackageNameToString($package)), $command); - } - $ret[] = $package; - } - } - - return $ret; - } - -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Install.xml b/src/vitis/vas/rest/class/PEAR/Command/Install.xml deleted file mode 100755 index 94044c26f0b3169a26f14095aa8a8e99801adb6f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Install.xml +++ /dev/null @@ -1,259 +0,0 @@ -<commands version="1.0"> - <install> - <summary>Install Package</summary> - <function>doInstall</function> - <shortcut>i</shortcut> - <options> - <force> - <shortopt>f</shortopt> - <doc>will overwrite newer installed packages</doc> - </force> - <loose> - <shortopt>l</shortopt> - <doc>do not check for recommended dependency version</doc> - </loose> - <nodeps> - <shortopt>n</shortopt> - <doc>ignore dependencies, install anyway</doc> - </nodeps> - <register-only> - <shortopt>r</shortopt> - <doc>do not install files, only register the package as installed</doc> - </register-only> - <soft> - <shortopt>s</shortopt> - <doc>soft install, fail silently, or upgrade if already installed</doc> - </soft> - <nobuild> - <shortopt>B</shortopt> - <doc>don't build C extensions</doc> - </nobuild> - <nocompress> - <shortopt>Z</shortopt> - <doc>request uncompressed files when downloading</doc> - </nocompress> - <installroot> - <shortopt>R</shortopt> - <arg>DIR</arg> - <doc>root directory used when installing files (ala PHP's INSTALL_ROOT), use packagingroot for RPM</doc> - </installroot> - <packagingroot> - <shortopt>P</shortopt> - <arg>DIR</arg> - <doc>root directory used when packaging files, like RPM packaging</doc> - </packagingroot> - <ignore-errors> - <doc>force install even if there were errors</doc> - </ignore-errors> - <alldeps> - <shortopt>a</shortopt> - <doc>install all required and optional dependencies</doc> - </alldeps> - <onlyreqdeps> - <shortopt>o</shortopt> - <doc>install all required dependencies</doc> - </onlyreqdeps> - <offline> - <shortopt>O</shortopt> - <doc>do not attempt to download any urls or contact channels</doc> - </offline> - <pretend> - <shortopt>p</shortopt> - <doc>Only list the packages that would be downloaded</doc> - </pretend> - </options> - <doc>[channel/]<package> ... -Installs one or more PEAR packages. You can specify a package to -install in four ways: - -"Package-1.0.tgz" : installs from a local file - -"http://example.com/Package-1.0.tgz" : installs from -anywhere on the net. - -"package.xml" : installs the package described in -package.xml. Useful for testing, or for wrapping a PEAR package in -another package manager such as RPM. - -"Package[-version/state][.tar]" : queries your default channel's server -({config master_server}) and downloads the newest package with -the preferred quality/state ({config preferred_state}). - -To retrieve Package version 1.1, use "Package-1.1," to retrieve -Package state beta, use "Package-beta." To retrieve an uncompressed -file, append .tar (make sure there is no file by the same name first) - -To download a package from another channel, prefix with the channel name like -"channel/Package" - -More than one package may be specified at once. It is ok to mix these -four ways of specifying packages. -</doc> - </install> - <upgrade> - <summary>Upgrade Package</summary> - <function>doInstall</function> - <shortcut>up</shortcut> - <options> - <force> - <shortopt>f</shortopt> - <doc>overwrite newer installed packages</doc> - </force> - <loose> - <shortopt>l</shortopt> - <doc>do not check for recommended dependency version</doc> - </loose> - <nodeps> - <shortopt>n</shortopt> - <doc>ignore dependencies, upgrade anyway</doc> - </nodeps> - <register-only> - <shortopt>r</shortopt> - <doc>do not install files, only register the package as upgraded</doc> - </register-only> - <nobuild> - <shortopt>B</shortopt> - <doc>don't build C extensions</doc> - </nobuild> - <nocompress> - <shortopt>Z</shortopt> - <doc>request uncompressed files when downloading</doc> - </nocompress> - <installroot> - <shortopt>R</shortopt> - <arg>DIR</arg> - <doc>root directory used when installing files (ala PHP's INSTALL_ROOT)</doc> - </installroot> - <ignore-errors> - <doc>force install even if there were errors</doc> - </ignore-errors> - <alldeps> - <shortopt>a</shortopt> - <doc>install all required and optional dependencies</doc> - </alldeps> - <onlyreqdeps> - <shortopt>o</shortopt> - <doc>install all required dependencies</doc> - </onlyreqdeps> - <offline> - <shortopt>O</shortopt> - <doc>do not attempt to download any urls or contact channels</doc> - </offline> - <pretend> - <shortopt>p</shortopt> - <doc>Only list the packages that would be downloaded</doc> - </pretend> - </options> - <doc><package> ... -Upgrades one or more PEAR packages. See documentation for the -"install" command for ways to specify a package. - -When upgrading, your package will be updated if the provided new -package has a higher version number (use the -f option if you need to -upgrade anyway). - -More than one package may be specified at once. -</doc> - </upgrade> - <upgrade-all> - <summary>Upgrade All Packages</summary> - <function>doInstall</function> - <shortcut>ua</shortcut> - <options> - <nodeps> - <shortopt>n</shortopt> - <doc>ignore dependencies, upgrade anyway</doc> - </nodeps> - <register-only> - <shortopt>r</shortopt> - <doc>do not install files, only register the package as upgraded</doc> - </register-only> - <nobuild> - <shortopt>B</shortopt> - <doc>don't build C extensions</doc> - </nobuild> - <nocompress> - <shortopt>Z</shortopt> - <doc>request uncompressed files when downloading</doc> - </nocompress> - <installroot> - <shortopt>R</shortopt> - <arg>DIR</arg> - <doc>root directory used when installing files (ala PHP's INSTALL_ROOT)</doc> - </installroot> - <ignore-errors> - <doc>force install even if there were errors</doc> - </ignore-errors> - <loose> - <doc>do not check for recommended dependency version</doc> - </loose> - </options> - <doc> -Upgrades all packages that have a newer release available. Upgrades are -done only if there is a release available of the state specified in -"preferred_state" (currently {config preferred_state}), or a state considered -more stable. -</doc> - </upgrade-all> - <uninstall> - <summary>Un-install Package</summary> - <function>doUninstall</function> - <shortcut>un</shortcut> - <options> - <nodeps> - <shortopt>n</shortopt> - <doc>ignore dependencies, uninstall anyway</doc> - </nodeps> - <register-only> - <shortopt>r</shortopt> - <doc>do not remove files, only register the packages as not installed</doc> - </register-only> - <installroot> - <shortopt>R</shortopt> - <arg>DIR</arg> - <doc>root directory used when installing files (ala PHP's INSTALL_ROOT)</doc> - </installroot> - <ignore-errors> - <doc>force install even if there were errors</doc> - </ignore-errors> - <offline> - <shortopt>O</shortopt> - <doc>do not attempt to uninstall remotely</doc> - </offline> - </options> - <doc>[channel/]<package> ... -Uninstalls one or more PEAR packages. More than one package may be -specified at once. Prefix with channel name to uninstall from a -channel not in your default channel ({config default_channel}) -</doc> - </uninstall> - <bundle> - <summary>Unpacks a Pecl Package</summary> - <function>doBundle</function> - <shortcut>bun</shortcut> - <options> - <destination> - <shortopt>d</shortopt> - <arg>DIR</arg> - <doc>Optional destination directory for unpacking (defaults to current path or "ext" if exists)</doc> - </destination> - <force> - <shortopt>f</shortopt> - <doc>Force the unpacking even if there were errors in the package</doc> - </force> - </options> - <doc><package> -Unpacks a Pecl Package into the selected location. It will download the -package if needed. -</doc> - </bundle> - <run-scripts> - <summary>Run Post-Install Scripts bundled with a package</summary> - <function>doRunScripts</function> - <shortcut>rs</shortcut> - <options /> - <doc><package> -Run post-installation scripts in package <package>, if any exist. -</doc> - </run-scripts> -</commands> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Mirror.php b/src/vitis/vas/rest/class/PEAR/Command/Mirror.php deleted file mode 100755 index f1256e0a5a30c38f49ca5cc1d7697c7b98255993..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Mirror.php +++ /dev/null @@ -1,153 +0,0 @@ -<?php -/** - * PEAR_Command_Mirror (download-all command) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Alexander Merz <alexmerz@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Mirror.php,v 1.20 2008/04/11 01:16:40 dufuz Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.2.0 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for providing file mirrors - * - * @category pear - * @package PEAR - * @author Alexander Merz <alexmerz@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.2.0 - */ -class PEAR_Command_Mirror extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'download-all' => array( - 'summary' => 'Downloads each available package from the default channel', - 'function' => 'doDownloadAll', - 'shortcut' => 'da', - 'options' => array( - 'channel' => - array( - 'shortopt' => 'c', - 'doc' => 'specify a channel other than the default channel', - 'arg' => 'CHAN', - ), - ), - 'doc' => ' -Requests a list of available packages from the default channel ({config default_channel}) -and downloads them to current working directory. Note: only -packages within preferred_state ({config preferred_state}) will be downloaded' - ), - ); - - // }}} - - // {{{ constructor - - /** - * PEAR_Command_Mirror constructor. - * - * @access public - * @param object PEAR_Frontend a reference to an frontend - * @param object PEAR_Config a reference to the configuration data - */ - function PEAR_Command_Mirror(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - /** - * For unit-testing - */ - function &factory($a) - { - $a = &PEAR_Command::factory($a, $this->config); - return $a; - } - - // {{{ doDownloadAll() - /** - * retrieves a list of avaible Packages from master server - * and downloads them - * - * @access public - * @param string $command the command - * @param array $options the command options before the command - * @param array $params the stuff after the command name - * @return bool true if succesful - * @throw PEAR_Error - */ - function doDownloadAll($command, $options, $params) - { - $savechannel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - $channel = isset($options['channel']) ? $options['channel'] : - $this->config->get('default_channel'); - if (!$reg->channelExists($channel)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - $this->config->set('default_channel', $channel); - $this->ui->outputData('Using Channel ' . $this->config->get('default_channel')); - $chan = $reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $this->raiseError($chan); - } - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - $remoteInfo = array_flip($rest->listPackages($base, $channel)); - } else { - $remote = &$this->config->getRemote(); - $stable = ($this->config->get('preferred_state') == 'stable'); - $remoteInfo = $remote->call("package.listAll", true, $stable, false); - } - if (PEAR::isError($remoteInfo)) { - return $remoteInfo; - } - $cmd = &$this->factory("download"); - if (PEAR::isError($cmd)) { - return $cmd; - } - $this->ui->outputData('Using Preferred State of ' . - $this->config->get('preferred_state')); - $this->ui->outputData('Gathering release information, please wait...'); - /** - * Error handling not necessary, because already done by - * the download command - */ - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $cmd->run('download', array('downloadonly' => true), array_keys($remoteInfo)); - PEAR::staticPopErrorHandling(); - $this->config->set('default_channel', $savechannel); - if (PEAR::isError($err)) { - $this->ui->outputData($err->getMessage()); - } - return true; - } - - // }}} -} diff --git a/src/vitis/vas/rest/class/PEAR/Command/Mirror.xml b/src/vitis/vas/rest/class/PEAR/Command/Mirror.xml deleted file mode 100755 index fe8be9d03bf94a11aae5fb1fbbe338932bd2c9c8..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Mirror.xml +++ /dev/null @@ -1,18 +0,0 @@ -<commands version="1.0"> - <download-all> - <summary>Downloads each available package from the default channel</summary> - <function>doDownloadAll</function> - <shortcut>da</shortcut> - <options> - <channel> - <shortopt>c</shortopt> - <doc>specify a channel other than the default channel</doc> - <arg>CHAN</arg> - </channel> - </options> - <doc> -Requests a list of available packages from the default channel ({config default_channel}) -and downloads them to current working directory. Note: only -packages within preferred_state ({config preferred_state}) will be downloaded</doc> - </download-all> -</commands> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Package.php b/src/vitis/vas/rest/class/PEAR/Command/Package.php deleted file mode 100755 index 8eb16df75f2e9df13471a24563f32016acffc8b0..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Package.php +++ /dev/null @@ -1,843 +0,0 @@ -<?php -/** - * PEAR_Command_Package (package, package-validate, cvsdiff, cvstag, package-dependencies, - * sign, makerpm, convert commands) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Martin Jansen <mj@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Package.php,v 1.128 2008/03/29 21:06:58 dufuz Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for login/logout - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Martin Jansen <mj@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: @package_version@ - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ - -class PEAR_Command_Package extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'package' => array( - 'summary' => 'Build Package', - 'function' => 'doPackage', - 'shortcut' => 'p', - 'options' => array( - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'Do not gzip the package file' - ), - 'showname' => array( - 'shortopt' => 'n', - 'doc' => 'Print the name of the packaged file.', - ), - ), - 'doc' => '[descfile] [descfile2] -Creates a PEAR package from its description file (usually called -package.xml). If a second packagefile is passed in, then -the packager will check to make sure that one is a package.xml -version 1.0, and the other is a package.xml version 2.0. The -package.xml version 1.0 will be saved as "package.xml" in the archive, -and the other as "package2.xml" in the archive" -' - ), - 'package-validate' => array( - 'summary' => 'Validate Package Consistency', - 'function' => 'doPackageValidate', - 'shortcut' => 'pv', - 'options' => array(), - 'doc' => ' -', - ), - 'cvsdiff' => array( - 'summary' => 'Run a "cvs diff" for all files in a package', - 'function' => 'doCvsDiff', - 'shortcut' => 'cd', - 'options' => array( - 'quiet' => array( - 'shortopt' => 'q', - 'doc' => 'Be quiet', - ), - 'reallyquiet' => array( - 'shortopt' => 'Q', - 'doc' => 'Be really quiet', - ), - 'date' => array( - 'shortopt' => 'D', - 'doc' => 'Diff against revision of DATE', - 'arg' => 'DATE', - ), - 'release' => array( - 'shortopt' => 'R', - 'doc' => 'Diff against tag for package release REL', - 'arg' => 'REL', - ), - 'revision' => array( - 'shortopt' => 'r', - 'doc' => 'Diff against revision REV', - 'arg' => 'REV', - ), - 'context' => array( - 'shortopt' => 'c', - 'doc' => 'Generate context diff', - ), - 'unified' => array( - 'shortopt' => 'u', - 'doc' => 'Generate unified diff', - ), - 'ignore-case' => array( - 'shortopt' => 'i', - 'doc' => 'Ignore case, consider upper- and lower-case letters equivalent', - ), - 'ignore-whitespace' => array( - 'shortopt' => 'b', - 'doc' => 'Ignore changes in amount of white space', - ), - 'ignore-blank-lines' => array( - 'shortopt' => 'B', - 'doc' => 'Ignore changes that insert or delete blank lines', - ), - 'brief' => array( - 'doc' => 'Report only whether the files differ, no details', - ), - 'dry-run' => array( - 'shortopt' => 'n', - 'doc' => 'Don\'t do anything, just pretend', - ), - ), - 'doc' => '<package.xml> -Compares all the files in a package. Without any options, this -command will compare the current code with the last checked-in code. -Using the -r or -R option you may compare the current code with that -of a specific release. -', - ), - 'cvstag' => array( - 'summary' => 'Set CVS Release Tag', - 'function' => 'doCvsTag', - 'shortcut' => 'ct', - 'options' => array( - 'quiet' => array( - 'shortopt' => 'q', - 'doc' => 'Be quiet', - ), - 'reallyquiet' => array( - 'shortopt' => 'Q', - 'doc' => 'Be really quiet', - ), - 'slide' => array( - 'shortopt' => 'F', - 'doc' => 'Move (slide) tag if it exists', - ), - 'delete' => array( - 'shortopt' => 'd', - 'doc' => 'Remove tag', - ), - 'dry-run' => array( - 'shortopt' => 'n', - 'doc' => 'Don\'t do anything, just pretend', - ), - ), - 'doc' => '<package.xml> [files...] -Sets a CVS tag on all files in a package. Use this command after you have -packaged a distribution tarball with the "package" command to tag what -revisions of what files were in that release. If need to fix something -after running cvstag once, but before the tarball is released to the public, -use the "slide" option to move the release tag. - -to include files (such as a second package.xml, or tests not included in the -release), pass them as additional parameters. -', - ), - 'package-dependencies' => array( - 'summary' => 'Show package dependencies', - 'function' => 'doPackageDependencies', - 'shortcut' => 'pd', - 'options' => array(), - 'doc' => ' -List all dependencies the package has.' - ), - 'sign' => array( - 'summary' => 'Sign a package distribution file', - 'function' => 'doSign', - 'shortcut' => 'si', - 'options' => array( - 'verbose' => array( - 'shortopt' => 'v', - 'doc' => 'Display GnuPG output', - ), - ), - 'doc' => '<package-file> -Signs a package distribution (.tar or .tgz) file with GnuPG.', - ), - 'makerpm' => array( - 'summary' => 'Builds an RPM spec file from a PEAR package', - 'function' => 'doMakeRPM', - 'shortcut' => 'rpm', - 'options' => array( - 'spec-template' => array( - 'shortopt' => 't', - 'arg' => 'FILE', - 'doc' => 'Use FILE as RPM spec file template' - ), - 'rpm-pkgname' => array( - 'shortopt' => 'p', - 'arg' => 'FORMAT', - 'doc' => 'Use FORMAT as format string for RPM package name, %s is replaced -by the PEAR package name, defaults to "PEAR::%s".', - ), - ), - 'doc' => '<package-file> - -Creates an RPM .spec file for wrapping a PEAR package inside an RPM -package. Intended to be used from the SPECS directory, with the PEAR -package tarball in the SOURCES directory: - -$ pear makerpm ../SOURCES/Net_Socket-1.0.tgz -Wrote RPM spec file PEAR::Net_Geo-1.0.spec -$ rpm -bb PEAR::Net_Socket-1.0.spec -... -Wrote: /usr/src/redhat/RPMS/i386/PEAR::Net_Socket-1.0-1.i386.rpm -', - ), - 'convert' => array( - 'summary' => 'Convert a package.xml 1.0 to package.xml 2.0 format', - 'function' => 'doConvert', - 'shortcut' => 'c2', - 'options' => array( - 'flat' => array( - 'shortopt' => 'f', - 'doc' => 'do not beautify the filelist.', - ), - ), - 'doc' => '[descfile] [descfile2] -Converts a package.xml in 1.0 format into a package.xml -in 2.0 format. The new file will be named package2.xml by default, -and package.xml will be used as the old file by default. -This is not the most intelligent conversion, and should only be -used for automated conversion or learning the format. -' - ), - ); - - var $output; - - // }}} - // {{{ constructor - - /** - * PEAR_Command_Package constructor. - * - * @access public - */ - function PEAR_Command_Package(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - // {{{ _displayValidationResults() - - function _displayValidationResults($err, $warn, $strict = false) - { - foreach ($err as $e) { - $this->output .= "Error: $e\n"; - } - foreach ($warn as $w) { - $this->output .= "Warning: $w\n"; - } - $this->output .= sprintf('Validation: %d error(s), %d warning(s)'."\n", - sizeof($err), sizeof($warn)); - if ($strict && sizeof($err) > 0) { - $this->output .= "Fix these errors and try again."; - return false; - } - return true; - } - - // }}} - function &getPackager() - { - if (!class_exists('PEAR_Packager')) { - require_once 'PEAR/Packager.php'; - } - $a = &new PEAR_Packager; - return $a; - } - - function &getPackageFile($config, $debug = false, $tmpdir = null) - { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - $a = &new PEAR_PackageFile($config, $debug, $tmpdir); - $common = new PEAR_Common; - $common->ui = $this->ui; - $a->setLogger($common); - return $a; - } - // {{{ doPackage() - - function doPackage($command, $options, $params) - { - $this->output = ''; - $pkginfofile = isset($params[0]) ? $params[0] : 'package.xml'; - $pkg2 = isset($params[1]) ? $params[1] : null; - if (!$pkg2 && !isset($params[0])) { - if (file_exists('package2.xml')) { - $pkg2 = 'package2.xml'; - } - } - $packager = &$this->getPackager(); - $compress = empty($options['nocompress']) ? true : false; - $result = $packager->package($pkginfofile, $compress, $pkg2); - if (PEAR::isError($result)) { - return $this->raiseError($result); - } - // Don't want output, only the package file name just created - if (isset($options['showname'])) { - $this->output = $result; - } - if ($this->output) { - $this->ui->outputData($this->output, $command); - } - return true; - } - - // }}} - // {{{ doPackageValidate() - - function doPackageValidate($command, $options, $params) - { - $this->output = ''; - if (sizeof($params) < 1) { - $params[0] = "package.xml"; - } - $obj = &$this->getPackageFile($this->config, $this->_debug); - $obj->rawReturn(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $info = $obj->fromTgzFile($params[0], PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - $info = $obj->fromPackageFile($params[0], PEAR_VALIDATE_NORMAL); - } else { - $archive = $info->getArchiveFile(); - $tar = &new Archive_Tar($archive); - $tar->extract(dirname($info->getPackageFile())); - $info->setPackageFile(dirname($info->getPackageFile()) . DIRECTORY_SEPARATOR . - $info->getPackage() . '-' . $info->getVersion() . DIRECTORY_SEPARATOR . - basename($info->getPackageFile())); - } - PEAR::staticPopErrorHandling(); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - $valid = false; - if ($info->getPackagexmlVersion() == '2.0') { - if ($valid = $info->validate(PEAR_VALIDATE_NORMAL)) { - $info->flattenFileList(); - $valid = $info->validate(PEAR_VALIDATE_PACKAGING); - } - } else { - $valid = $info->validate(PEAR_VALIDATE_PACKAGING); - } - $err = $warn = array(); - if ($errors = $info->getValidationWarnings()) { - foreach ($errors as $error) { - if ($error['level'] == 'warning') { - $warn[] = $error['message']; - } else { - $err[] = $error['message']; - } - } - } - $this->_displayValidationResults($err, $warn); - $this->ui->outputData($this->output, $command); - return true; - } - - // }}} - // {{{ doCvsTag() - - function doCvsTag($command, $options, $params) - { - $this->output = ''; - $_cmd = $command; - if (sizeof($params) < 1) { - $help = $this->getHelp($command); - return $this->raiseError("$command: missing parameter: $help[0]"); - } - $obj = &$this->getPackageFile($this->config, $this->_debug); - $info = $obj->fromAnyFile($params[0], PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - $err = $warn = array(); - if (!$info->validate()) { - foreach ($info->getValidationWarnings() as $error) { - if ($error['level'] == 'warning') { - $warn[] = $error['message']; - } else { - $err[] = $error['message']; - } - } - } - if (!$this->_displayValidationResults($err, $warn, true)) { - $this->ui->outputData($this->output, $command); - return $this->raiseError('CVS tag failed'); - } - $version = $info->getVersion(); - $cvsversion = preg_replace('/[^a-z0-9]/i', '_', $version); - $cvstag = "RELEASE_$cvsversion"; - $files = array_keys($info->getFilelist()); - $command = "cvs"; - if (isset($options['quiet'])) { - $command .= ' -q'; - } - if (isset($options['reallyquiet'])) { - $command .= ' -Q'; - } - $command .= ' tag'; - if (isset($options['slide'])) { - $command .= ' -F'; - } - if (isset($options['delete'])) { - $command .= ' -d'; - } - $command .= ' ' . $cvstag . ' ' . escapeshellarg($params[0]); - array_shift($params); - if (count($params)) { - // add in additional files to be tagged - $files = array_merge($files, $params); - } - foreach ($files as $file) { - $command .= ' ' . escapeshellarg($file); - } - if ($this->config->get('verbose') > 1) { - $this->output .= "+ $command\n"; - } - $this->output .= "+ $command\n"; - if (empty($options['dry-run'])) { - $fp = popen($command, "r"); - while ($line = fgets($fp, 1024)) { - $this->output .= rtrim($line)."\n"; - } - pclose($fp); - } - $this->ui->outputData($this->output, $_cmd); - return true; - } - - // }}} - // {{{ doCvsDiff() - - function doCvsDiff($command, $options, $params) - { - $this->output = ''; - if (sizeof($params) < 1) { - $help = $this->getHelp($command); - return $this->raiseError("$command: missing parameter: $help[0]"); - } - $obj = &$this->getPackageFile($this->config, $this->_debug); - $info = $obj->fromAnyFile($params[0], PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - $err = $warn = array(); - if (!$info->validate()) { - foreach ($info->getValidationWarnings() as $error) { - if ($error['level'] == 'warning') { - $warn[] = $error['message']; - } else { - $err[] = $error['message']; - } - } - } - if (!$this->_displayValidationResults($err, $warn, true)) { - $this->ui->outputData($this->output, $command); - return $this->raiseError('CVS diff failed'); - } - $info1 = $info->getFilelist(); - $files = $info1; - $cmd = "cvs"; - if (isset($options['quiet'])) { - $cmd .= ' -q'; - unset($options['quiet']); - } - if (isset($options['reallyquiet'])) { - $cmd .= ' -Q'; - unset($options['reallyquiet']); - } - if (isset($options['release'])) { - $cvsversion = preg_replace('/[^a-z0-9]/i', '_', $options['release']); - $cvstag = "RELEASE_$cvsversion"; - $options['revision'] = $cvstag; - unset($options['release']); - } - $execute = true; - if (isset($options['dry-run'])) { - $execute = false; - unset($options['dry-run']); - } - $cmd .= ' diff'; - // the rest of the options are passed right on to "cvs diff" - foreach ($options as $option => $optarg) { - $arg = $short = false; - if (isset($this->commands[$command]['options'][$option])) { - $arg = $this->commands[$command]['options'][$option]['arg']; - $short = $this->commands[$command]['options'][$option]['shortopt']; - } - $cmd .= $short ? " -$short" : " --$option"; - if ($arg && $optarg) { - $cmd .= ($short ? '' : '=') . escapeshellarg($optarg); - } - } - foreach ($files as $file) { - $cmd .= ' ' . escapeshellarg($file['name']); - } - if ($this->config->get('verbose') > 1) { - $this->output .= "+ $cmd\n"; - } - if ($execute) { - $fp = popen($cmd, "r"); - while ($line = fgets($fp, 1024)) { - $this->output .= rtrim($line)."\n"; - } - pclose($fp); - } - $this->ui->outputData($this->output, $command); - return true; - } - - // }}} - // {{{ doPackageDependencies() - - function doPackageDependencies($command, $options, $params) - { - // $params[0] -> the PEAR package to list its information - if (sizeof($params) != 1) { - return $this->raiseError("bad parameter(s), try \"help $command\""); - } - $obj = &$this->getPackageFile($this->config, $this->_debug); - $info = $obj->fromAnyFile($params[0], PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - $deps = $info->getDeps(); - if (is_array($deps)) { - if ($info->getPackagexmlVersion() == '1.0') { - $data = array( - 'caption' => 'Dependencies for pear/' . $info->getPackage(), - 'border' => true, - 'headline' => array("Required?", "Type", "Name", "Relation", "Version"), - ); - - foreach ($deps as $d) { - if (isset($d['optional'])) { - if ($d['optional'] == 'yes') { - $req = 'No'; - } else { - $req = 'Yes'; - } - } else { - $req = 'Yes'; - } - if (isset($this->_deps_rel_trans[$d['rel']])) { - $rel = $this->_deps_rel_trans[$d['rel']]; - } else { - $rel = $d['rel']; - } - - if (isset($this->_deps_type_trans[$d['type']])) { - $type = ucfirst($this->_deps_type_trans[$d['type']]); - } else { - $type = $d['type']; - } - - if (isset($d['name'])) { - $name = $d['name']; - } else { - $name = ''; - } - - if (isset($d['version'])) { - $version = $d['version']; - } else { - $version = ''; - } - - $data['data'][] = array($req, $type, $name, $rel, $version); - } - } else { // package.xml 2.0 dependencies display - require_once 'PEAR/Dependency2.php'; - $deps = $info->getDependencies(); - $reg = &$this->config->getRegistry(); - if (is_array($deps)) { - $d = new PEAR_Dependency2($this->config, array(), ''); - $data = array( - 'caption' => 'Dependencies for ' . $info->getPackage(), - 'border' => true, - 'headline' => array("Required?", "Type", "Name", 'Versioning', 'Group'), - ); - foreach ($deps as $type => $subd) { - $req = ($type == 'required') ? 'Yes' : 'No'; - if ($type == 'group') { - $group = $subd['attribs']['name']; - } else { - $group = ''; - } - if (!isset($subd[0])) { - $subd = array($subd); - } - foreach ($subd as $groupa) { - foreach ($groupa as $deptype => $depinfo) { - if ($deptype == 'attribs') { - continue; - } - if ($deptype == 'pearinstaller') { - $deptype = 'pear Installer'; - } - if (!isset($depinfo[0])) { - $depinfo = array($depinfo); - } - foreach ($depinfo as $inf) { - $name = ''; - if (isset($inf['channel'])) { - $alias = $reg->channelAlias($inf['channel']); - if (!$alias) { - $alias = '(channel?) ' .$inf['channel']; - } - $name = $alias . '/'; - } - if (isset($inf['name'])) { - $name .= $inf['name']; - } elseif (isset($inf['pattern'])) { - $name .= $inf['pattern']; - } else { - $name .= ''; - } - if (isset($inf['uri'])) { - $name .= ' [' . $inf['uri'] . ']'; - } - if (isset($inf['conflicts'])) { - $ver = 'conflicts'; - } else { - $ver = $d->_getExtraString($inf); - } - $data['data'][] = array($req, ucfirst($deptype), $name, - $ver, $group); - } - } - } - } - } - } - - $this->ui->outputData($data, $command); - return true; - } - - // Fallback - $this->ui->outputData("This package does not have any dependencies.", $command); - } - - // }}} - // {{{ doSign() - - function doSign($command, $options, $params) - { - require_once 'System.php'; - require_once 'Archive/Tar.php'; - // should move most of this code into PEAR_Packager - // so it'll be easy to implement "pear package --sign" - if (sizeof($params) != 1) { - return $this->raiseError("bad parameter(s), try \"help $command\""); - } - if (!file_exists($params[0])) { - return $this->raiseError("file does not exist: $params[0]"); - } - $obj = $this->getPackageFile($this->config, $this->_debug); - $info = $obj->fromTgzFile($params[0], PEAR_VALIDATE_NORMAL); - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - $tar = new Archive_Tar($params[0]); - $tmpdir = System::mktemp('-d pearsign'); - if (!$tar->extractList('package2.xml package.xml package.sig', $tmpdir)) { - return $this->raiseError("failed to extract tar file"); - } - if (file_exists("$tmpdir/package.sig")) { - return $this->raiseError("package already signed"); - } - $packagexml = 'package.xml'; - if (file_exists("$tmpdir/package2.xml")) { - $packagexml = 'package2.xml'; - } - if (file_exists("$tmpdir/package.sig")) { - unlink("$tmpdir/package.sig"); - } - if (!file_exists("$tmpdir/$packagexml")) { - return $this->raiseError("Extracted file $tmpdir/$packagexml not found."); - } - $input = $this->ui->userDialog($command, - array('GnuPG Passphrase'), - array('password')); - if (!isset($input[0])) { - //use empty passphrase - $input[0] = ''; - } - - $devnull = (isset($options['verbose'])) ? '' : ' 2>/dev/null'; - $gpg = popen("gpg --batch --passphrase-fd 0 --armor --detach-sign --output $tmpdir/package.sig $tmpdir/$packagexml" . $devnull, "w"); - if (!$gpg) { - return $this->raiseError("gpg command failed"); - } - fwrite($gpg, "$input[0]\n"); - if (pclose($gpg) || !file_exists("$tmpdir/package.sig")) { - return $this->raiseError("gpg sign failed"); - } - if (!$tar->addModify("$tmpdir/package.sig", '', $tmpdir)) { - return $this->raiseError('failed adding signature to file'); - } - - $this->ui->outputData("Package signed.", $command); - return true; - } - - // }}} - - /** - * For unit testing purposes - */ - function &getInstaller(&$ui) - { - if (!class_exists('PEAR_Installer')) { - require_once 'PEAR/Installer.php'; - } - $a = &new PEAR_Installer($ui); - return $a; - } - - /** - * For unit testing purposes - */ - function &getCommandPackaging(&$ui, &$config) - { - if (!class_exists('PEAR_Command_Packaging')) { - if ($fp = @fopen('PEAR/Command/Packaging.php', 'r', true)) { - fclose($fp); - include_once 'PEAR/Command/Packaging.php'; - } - } - - if (class_exists('PEAR_Command_Packaging')) { - $a = &new PEAR_Command_Packaging($ui, $config); - } else { - $a = null; - } - return $a; - } - - // {{{ doMakeRPM() - - function doMakeRPM($command, $options, $params) - { - - // Check to see if PEAR_Command_Packaging is installed, and - // transparently switch to use the "make-rpm-spec" command from it - // instead, if it does. Otherwise, continue to use the old version - // of "makerpm" supplied with this package (PEAR). - $packaging_cmd = $this->getCommandPackaging($this->ui, $this->config); - if ($packaging_cmd !== null) { - $this->ui->outputData('PEAR_Command_Packaging is installed; using '. - 'newer "make-rpm-spec" command instead'); - return $packaging_cmd->run('make-rpm-spec', $options, $params); - } else { - $this->ui->outputData('WARNING: "pear makerpm" is no longer available; an '. - 'improved version is available via "pear make-rpm-spec", which '. - 'is available by installing PEAR_Command_Packaging'); - } - return true; - } - - function doConvert($command, $options, $params) - { - $packagexml = isset($params[0]) ? $params[0] : 'package.xml'; - $newpackagexml = isset($params[1]) ? $params[1] : dirname($packagexml) . - DIRECTORY_SEPARATOR . 'package2.xml'; - $pkg = &$this->getPackageFile($this->config, $this->_debug); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pf = $pkg->fromPackageFile($packagexml, PEAR_VALIDATE_NORMAL); - PEAR::staticPopErrorHandling(); - if (!PEAR::isError($pf)) { - if (is_a($pf, 'PEAR_PackageFile_v2')) { - $this->ui->outputData($packagexml . ' is already a package.xml version 2.0'); - return true; - } - $gen = &$pf->getDefaultGenerator(); - $newpf = &$gen->toV2(); - $newpf->setPackagefile($newpackagexml); - $gen = &$newpf->getDefaultGenerator(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $state = (isset($options['flat']) ? PEAR_VALIDATE_PACKAGING : PEAR_VALIDATE_NORMAL); - $saved = $gen->toPackageFile(dirname($newpackagexml), $state, - basename($newpackagexml)); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($saved)) { - if (is_array($saved->getUserInfo())) { - foreach ($saved->getUserInfo() as $warning) { - $this->ui->outputData($warning['message']); - } - } - $this->ui->outputData($saved->getMessage()); - return true; - } - $this->ui->outputData('Wrote new version 2.0 package.xml to "' . $saved . '"'); - return true; - } else { - if (is_array($pf->getUserInfo())) { - foreach ($pf->getUserInfo() as $warning) { - $this->ui->outputData($warning['message']); - } - } - return $this->raiseError($pf); - } - } - - // }}} -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Package.xml b/src/vitis/vas/rest/class/PEAR/Command/Package.xml deleted file mode 100755 index e3f6a553790535dacd463fd3942fb37c665da44a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Package.xml +++ /dev/null @@ -1,194 +0,0 @@ -<commands version="1.0"> - <package> - <summary>Build Package</summary> - <function>doPackage</function> - <shortcut>p</shortcut> - <options> - <nocompress> - <shortopt>Z</shortopt> - <doc>Do not gzip the package file</doc> - </nocompress> - <showname> - <shortopt>n</shortopt> - <doc>Print the name of the packaged file.</doc> - </showname> - </options> - <doc>[descfile] [descfile2] -Creates a PEAR package from its description file (usually called -package.xml). If a second packagefile is passed in, then -the packager will check to make sure that one is a package.xml -version 1.0, and the other is a package.xml version 2.0. The -package.xml version 1.0 will be saved as "package.xml" in the archive, -and the other as "package2.xml" in the archive" -</doc> - </package> - <package-validate> - <summary>Validate Package Consistency</summary> - <function>doPackageValidate</function> - <shortcut>pv</shortcut> - <options /> - <doc> -</doc> - </package-validate> - <cvsdiff> - <summary>Run a "cvs diff" for all files in a package</summary> - <function>doCvsDiff</function> - <shortcut>cd</shortcut> - <options> - <quiet> - <shortopt>q</shortopt> - <doc>Be quiet</doc> - </quiet> - <reallyquiet> - <shortopt>Q</shortopt> - <doc>Be really quiet</doc> - </reallyquiet> - <date> - <shortopt>D</shortopt> - <doc>Diff against revision of DATE</doc> - <arg>DATE</arg> - </date> - <release> - <shortopt>R</shortopt> - <doc>Diff against tag for package release REL</doc> - <arg>REL</arg> - </release> - <revision> - <shortopt>r</shortopt> - <doc>Diff against revision REV</doc> - <arg>REV</arg> - </revision> - <context> - <shortopt>c</shortopt> - <doc>Generate context diff</doc> - </context> - <unified> - <shortopt>u</shortopt> - <doc>Generate unified diff</doc> - </unified> - <ignore-case> - <shortopt>i</shortopt> - <doc>Ignore case, consider upper- and lower-case letters equivalent</doc> - </ignore-case> - <ignore-whitespace> - <shortopt>b</shortopt> - <doc>Ignore changes in amount of white space</doc> - </ignore-whitespace> - <ignore-blank-lines> - <shortopt>B</shortopt> - <doc>Ignore changes that insert or delete blank lines</doc> - </ignore-blank-lines> - <brief> - <doc>Report only whether the files differ, no details</doc> - </brief> - <dry-run> - <shortopt>n</shortopt> - <doc>Don't do anything, just pretend</doc> - </dry-run> - </options> - <doc><package.xml> -Compares all the files in a package. Without any options, this -command will compare the current code with the last checked-in code. -Using the -r or -R option you may compare the current code with that -of a specific release. -</doc> - </cvsdiff> - <cvstag> - <summary>Set CVS Release Tag</summary> - <function>doCvsTag</function> - <shortcut>ct</shortcut> - <options> - <quiet> - <shortopt>q</shortopt> - <doc>Be quiet</doc> - </quiet> - <reallyquiet> - <shortopt>Q</shortopt> - <doc>Be really quiet</doc> - </reallyquiet> - <slide> - <shortopt>F</shortopt> - <doc>Move (slide) tag if it exists</doc> - </slide> - <delete> - <shortopt>d</shortopt> - <doc>Remove tag</doc> - </delete> - <dry-run> - <shortopt>n</shortopt> - <doc>Don't do anything, just pretend</doc> - </dry-run> - </options> - <doc><package.xml> -Sets a CVS tag on all files in a package. Use this command after you have -packaged a distribution tarball with the "package" command to tag what -revisions of what files were in that release. If need to fix something -after running cvstag once, but before the tarball is released to the public, -use the "slide" option to move the release tag. -</doc> - </cvstag> - <package-dependencies> - <summary>Show package dependencies</summary> - <function>doPackageDependencies</function> - <shortcut>pd</shortcut> - <options /> - <doc> -List all dependencies the package has.</doc> - </package-dependencies> - <sign> - <summary>Sign a package distribution file</summary> - <function>doSign</function> - <shortcut>si</shortcut> - <options /> - <doc><package-file> -Signs a package distribution (.tar or .tgz) file with GnuPG.</doc> - </sign> - <makerpm> - <summary>Builds an RPM spec file from a PEAR package</summary> - <function>doMakeRPM</function> - <shortcut>rpm</shortcut> - <options> - <spec-template> - <shortopt>t</shortopt> - <arg>FILE</arg> - <doc>Use FILE as RPM spec file template</doc> - </spec-template> - <rpm-pkgname> - <shortopt>p</shortopt> - <arg>FORMAT</arg> - <doc>Use FORMAT as format string for RPM package name, %s is replaced -by the PEAR package name, defaults to "PEAR::%s".</doc> - </rpm-pkgname> - </options> - <doc><package-file> - -Creates an RPM .spec file for wrapping a PEAR package inside an RPM -package. Intended to be used from the SPECS directory, with the PEAR -package tarball in the SOURCES directory: - -$ pear makerpm ../SOURCES/Net_Socket-1.0.tgz -Wrote RPM spec file PEAR::Net_Geo-1.0.spec -$ rpm -bb PEAR::Net_Socket-1.0.spec -... -Wrote: /usr/src/redhat/RPMS/i386/PEAR::Net_Socket-1.0-1.i386.rpm -</doc> - </makerpm> - <convert> - <summary>Convert a package.xml 1.0 to package.xml 2.0 format</summary> - <function>doConvert</function> - <shortcut>c2</shortcut> - <options> - <flat> - <shortopt>f</shortopt> - <doc>do not beautify the filelist.</doc> - </flat> - </options> - <doc>[descfile] [descfile2] -Converts a package.xml in 1.0 format into a package.xml -in 2.0 format. The new file will be named package2.xml by default, -and package.xml will be used as the old file by default. -This is not the most intelligent conversion, and should only be -used for automated conversion or learning the format. -</doc> - </convert> -</commands> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Pickle.php b/src/vitis/vas/rest/class/PEAR/Command/Pickle.php deleted file mode 100755 index d59396aca507f5c64873f1fac21e83d4a3c9780c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Pickle.php +++ /dev/null @@ -1,376 +0,0 @@ -<?php -/** - * PEAR_Command_Pickle (pickle command) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 2005-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Pickle.php,v 1.8 2008/01/29 03:21:01 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for login/logout - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 2005-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.1 - */ - -class PEAR_Command_Pickle extends PEAR_Command_Common -{ - var $commands = array( - 'pickle' => array( - 'summary' => 'Build PECL Package', - 'function' => 'doPackage', - 'shortcut' => 'pi', - 'options' => array( - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'Do not gzip the package file' - ), - 'showname' => array( - 'shortopt' => 'n', - 'doc' => 'Print the name of the packaged file.', - ), - ), - 'doc' => '[descfile] -Creates a PECL package from its package2.xml file. - -An automatic conversion will be made to a package.xml 1.0 and written out to -disk in the current directory as "package.xml". Note that -only simple package.xml 2.0 will be converted. package.xml 2.0 with: - - - dependency types other than required/optional PECL package/ext/php/pearinstaller - - more than one extsrcrelease or zendextsrcrelease - - zendextbinrelease, extbinrelease, phprelease, or bundle release type - - dependency groups - - ignore tags in release filelist - - tasks other than replace - - custom roles - -will cause pickle to fail, and output an error message. If your package2.xml -uses any of these features, you are best off using PEAR_PackageFileManager to -generate both package.xml. -' - ), - ); - - /** - * PEAR_Command_Package constructor. - * - * @access public - */ - function PEAR_Command_Pickle(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - - /** - * For unit-testing ease - * - * @return PEAR_Packager - */ - function &getPackager() - { - if (!class_exists('PEAR_Packager')) { - require_once 'PEAR/Packager.php'; - } - $a = &new PEAR_Packager; - return $a; - } - - /** - * For unit-testing ease - * - * @param PEAR_Config $config - * @param bool $debug - * @param string|null $tmpdir - * @return PEAR_PackageFile - */ - function &getPackageFile($config, $debug = false, $tmpdir = null) - { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - $a = &new PEAR_PackageFile($config, $debug, $tmpdir); - $common = new PEAR_Common; - $common->ui = $this->ui; - $a->setLogger($common); - return $a; - } - - function doPackage($command, $options, $params) - { - $this->output = ''; - $pkginfofile = isset($params[0]) ? $params[0] : 'package2.xml'; - $packager = &$this->getPackager(); - if (PEAR::isError($err = $this->_convertPackage($pkginfofile))) { - return $err; - } - $compress = empty($options['nocompress']) ? true : false; - $result = $packager->package($pkginfofile, $compress, 'package.xml'); - if (PEAR::isError($result)) { - return $this->raiseError($result); - } - // Don't want output, only the package file name just created - if (isset($options['showname'])) { - $this->ui->outputData($result, $command); - } - return true; - } - - function _convertPackage($packagexml) - { - $pkg = &$this->getPackageFile($this->config); - $pf2 = &$pkg->fromPackageFile($packagexml, PEAR_VALIDATE_NORMAL); - if (!is_a($pf2, 'PEAR_PackageFile_v2')) { - return $this->raiseError('Cannot process "' . - $packagexml . '", is not a package.xml 2.0'); - } - require_once 'PEAR/PackageFile/v1.php'; - $pf = new PEAR_PackageFile_v1; - $pf->setConfig($this->config); - if ($pf2->getPackageType() != 'extsrc' && $pf2->getPackageType() != 'zendextsrc') { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", is not an extension source package. Using a PEAR_PackageFileManager-based ' . - 'script is an option'); - } - if (is_array($pf2->getUsesRole())) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains custom roles. Using a PEAR_PackageFileManager-based script or ' . - 'the convert command is an option'); - } - if (is_array($pf2->getUsesTask())) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains custom tasks. Using a PEAR_PackageFileManager-based script or ' . - 'the convert command is an option'); - } - $deps = $pf2->getDependencies(); - if (isset($deps['group'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains dependency groups. Using a PEAR_PackageFileManager-based script ' . - 'or the convert command is an option'); - } - if (isset($deps['required']['subpackage']) || - isset($deps['optional']['subpackage'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains subpackage dependencies. Using a PEAR_PackageFileManager-based '. - 'script is an option'); - } - if (isset($deps['required']['os'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains os dependencies. Using a PEAR_PackageFileManager-based '. - 'script is an option'); - } - if (isset($deps['required']['arch'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains arch dependencies. Using a PEAR_PackageFileManager-based '. - 'script is an option'); - } - $pf->setPackage($pf2->getPackage()); - $pf->setSummary($pf2->getSummary()); - $pf->setDescription($pf2->getDescription()); - foreach ($pf2->getMaintainers() as $maintainer) { - $pf->addMaintainer($maintainer['role'], $maintainer['handle'], - $maintainer['name'], $maintainer['email']); - } - $pf->setVersion($pf2->getVersion()); - $pf->setDate($pf2->getDate()); - $pf->setLicense($pf2->getLicense()); - $pf->setState($pf2->getState()); - $pf->setNotes($pf2->getNotes()); - $pf->addPhpDep($deps['required']['php']['min'], 'ge'); - if (isset($deps['required']['php']['max'])) { - $pf->addPhpDep($deps['required']['php']['max'], 'le'); - } - if (isset($deps['required']['package'])) { - if (!isset($deps['required']['package'][0])) { - $deps['required']['package'] = array($deps['required']['package']); - } - foreach ($deps['required']['package'] as $dep) { - if (!isset($dep['channel'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains uri-based dependency on a package. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - if ($dep['channel'] != 'pear.php.net' && $dep['channel'] != 'pecl.php.net') { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains dependency on a non-standard channel package. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - if (isset($dep['conflicts'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains conflicts dependency. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - if (isset($dep['exclude'])) { - $this->ui->outputData('WARNING: exclude tags are ignored in conversion'); - } - if (isset($dep['min'])) { - $pf->addPackageDep($dep['name'], $dep['min'], 'ge'); - } - if (isset($dep['max'])) { - $pf->addPackageDep($dep['name'], $dep['max'], 'le'); - } - } - } - if (isset($deps['required']['extension'])) { - if (!isset($deps['required']['extension'][0])) { - $deps['required']['extension'] = array($deps['required']['extension']); - } - foreach ($deps['required']['extension'] as $dep) { - if (isset($dep['conflicts'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains conflicts dependency. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - if (isset($dep['exclude'])) { - $this->ui->outputData('WARNING: exclude tags are ignored in conversion'); - } - if (isset($dep['min'])) { - $pf->addExtensionDep($dep['name'], $dep['min'], 'ge'); - } - if (isset($dep['max'])) { - $pf->addExtensionDep($dep['name'], $dep['max'], 'le'); - } - } - } - if (isset($deps['optional']['package'])) { - if (!isset($deps['optional']['package'][0])) { - $deps['optional']['package'] = array($deps['optional']['package']); - } - foreach ($deps['optional']['package'] as $dep) { - if (!isset($dep['channel'])) { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains uri-based dependency on a package. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - if ($dep['channel'] != 'pear.php.net' && $dep['channel'] != 'pecl.php.net') { - return $this->raiseError('Cannot safely convert "' . $packagexml . '"' . - ' contains dependency on a non-standard channel package. Using a ' . - 'PEAR_PackageFileManager-based script is an option'); - } - if (isset($dep['exclude'])) { - $this->ui->outputData('WARNING: exclude tags are ignored in conversion'); - } - if (isset($dep['min'])) { - $pf->addPackageDep($dep['name'], $dep['min'], 'ge', 'yes'); - } - if (isset($dep['max'])) { - $pf->addPackageDep($dep['name'], $dep['max'], 'le', 'yes'); - } - } - } - if (isset($deps['optional']['extension'])) { - if (!isset($deps['optional']['extension'][0])) { - $deps['optional']['extension'] = array($deps['optional']['extension']); - } - foreach ($deps['optional']['extension'] as $dep) { - if (isset($dep['exclude'])) { - $this->ui->outputData('WARNING: exclude tags are ignored in conversion'); - } - if (isset($dep['min'])) { - $pf->addExtensionDep($dep['name'], $dep['min'], 'ge', 'yes'); - } - if (isset($dep['max'])) { - $pf->addExtensionDep($dep['name'], $dep['max'], 'le', 'yes'); - } - } - } - $contents = $pf2->getContents(); - $release = $pf2->getReleases(); - if (isset($releases[0])) { - return $this->raiseError('Cannot safely process "' . $packagexml . '" contains ' - . 'multiple extsrcrelease/zendextsrcrelease tags. Using a PEAR_PackageFileManager-based script ' . - 'or the convert command is an option'); - } - if ($configoptions = $pf2->getConfigureOptions()) { - foreach ($configoptions as $option) { - $pf->addConfigureOption($option['name'], $option['prompt'], - isset($option['default']) ? $option['default'] : false); - } - } - if (isset($release['filelist']['ignore'])) { - return $this->raiseError('Cannot safely process "' . $packagexml . '" contains ' - . 'ignore tags. Using a PEAR_PackageFileManager-based script or the convert' . - ' command is an option'); - } - if (isset($release['filelist']['install']) && - !isset($release['filelist']['install'][0])) { - $release['filelist']['install'] = array($release['filelist']['install']); - } - if (isset($contents['dir']['attribs']['baseinstalldir'])) { - $baseinstalldir = $contents['dir']['attribs']['baseinstalldir']; - } else { - $baseinstalldir = false; - } - if (!isset($contents['dir']['file'][0])) { - $contents['dir']['file'] = array($contents['dir']['file']); - } - foreach ($contents['dir']['file'] as $file) { - if ($baseinstalldir && !isset($file['attribs']['baseinstalldir'])) { - $file['attribs']['baseinstalldir'] = $baseinstalldir; - } - $processFile = $file; - unset($processFile['attribs']); - if (count($processFile)) { - foreach ($processFile as $name => $task) { - if ($name != $pf2->getTasksNs() . ':replace') { - return $this->raiseError('Cannot safely process "' . $packagexml . - '" contains tasks other than replace. Using a ' . - 'PEAR_PackageFileManager-based script is an option.'); - } - $file['attribs']['replace'][] = $task; - } - } - if (!in_array($file['attribs']['role'], PEAR_Common::getFileRoles())) { - return $this->raiseError('Cannot safely convert "' . $packagexml . - '", contains custom roles. Using a PEAR_PackageFileManager-based script ' . - 'or the convert command is an option'); - } - if (isset($release['filelist']['install'])) { - foreach ($release['filelist']['install'] as $installas) { - if ($installas['attribs']['name'] == $file['attribs']['name']) { - $file['attribs']['install-as'] = $installas['attribs']['as']; - } - } - } - $pf->addFile('/', $file['attribs']['name'], $file['attribs']); - } - if ($pf2->getChangeLog()) { - $this->ui->outputData('WARNING: changelog is not translated to package.xml ' . - '1.0, use PEAR_PackageFileManager-based script if you need changelog-' . - 'translation for package.xml 1.0'); - } - $gen = &$pf->getDefaultGenerator(); - $gen->toPackageFile('.'); - } -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Pickle.xml b/src/vitis/vas/rest/class/PEAR/Command/Pickle.xml deleted file mode 100755 index 04c85bc76d36cf391647f171c2dce636db986115..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Pickle.xml +++ /dev/null @@ -1,40 +0,0 @@ -<commands version="1.0"> - <pickle> - <summary>Build PECL Package</summary> - <function>doPackage</function> - <shortcut>pi</shortcut> - <options> - <nocompress> - <shortopt>Z</shortopt> - <doc>Do not gzip the package file</doc> - </nocompress> - <showname> - <shortopt>n</shortopt> - <doc>Print the name of the packaged file.</doc> - </showname> - </options> - <doc>[descfile] [descfile2] -Creates a PECL package from its description file (usually called -package.xml). If a second packagefile is passed in, then -the packager will check to make sure that one is a package.xml -version 1.0, and the other is a package.xml version 2.0. The -package.xml version 1.0 will be saved as "package.xml" in the archive, -and the other as "package2.xml" in the archive" - -If no second file is passed in, and [descfile] is a package.xml 2.0, -an automatic conversion will be made to a package.xml 1.0. Note that -only simple package.xml 2.0 will be converted. package.xml 2.0 with: - - - dependency types other than required/optional PECL package/ext/php/pearinstaller - - more than one extsrcrelease/zendextsrcrelease - - zendextbinrelease, extbinrelease, phprelease, or bundle release type - - dependency groups - - ignore tags in release filelist - - tasks other than replace - - custom roles - -will cause pickle to fail, and output an error message. If your package2.xml -uses any of these features, you are best off using PEAR_PackageFileManager to -generate both package.xml.</doc> - </pickle> -</commands> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Registry.php b/src/vitis/vas/rest/class/PEAR/Command/Registry.php deleted file mode 100755 index d2f1dd1b7871883e94af38635ad56ec68a08c08e..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Registry.php +++ /dev/null @@ -1,1070 +0,0 @@ -<?php -/** - * PEAR_Command_Registry (list, list-files, shell-test, info commands) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Registry.php,v 1.81 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for registry manipulation - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Registry extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'list' => array( - 'summary' => 'List Installed Packages In The Default Channel', - 'function' => 'doList', - 'shortcut' => 'l', - 'options' => array( - 'channel' => array( - 'shortopt' => 'c', - 'doc' => 'list installed packages from this channel', - 'arg' => 'CHAN', - ), - 'allchannels' => array( - 'shortopt' => 'a', - 'doc' => 'list installed packages from all channels', - ), - 'channelinfo' => array( - 'shortopt' => 'i', - 'doc' => 'output fully channel-aware data, even on failure', - ), - ), - 'doc' => '<package> -If invoked without parameters, this command lists the PEAR packages -installed in your php_dir ({config php_dir}). With a parameter, it -lists the files in a package. -', - ), - 'list-files' => array( - 'summary' => 'List Files In Installed Package', - 'function' => 'doFileList', - 'shortcut' => 'fl', - 'options' => array(), - 'doc' => '<package> -List the files in an installed package. -' - ), - 'shell-test' => array( - 'summary' => 'Shell Script Test', - 'function' => 'doShellTest', - 'shortcut' => 'st', - 'options' => array(), - 'doc' => '<package> [[relation] version] -Tests if a package is installed in the system. Will exit(1) if it is not. - <relation> The version comparison operator. One of: - <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne - <version> The version to compare with -'), - 'info' => array( - 'summary' => 'Display information about a package', - 'function' => 'doInfo', - 'shortcut' => 'in', - 'options' => array(), - 'doc' => '<package> -Displays information about a package. The package argument may be a -local package file, an URL to a package file, or the name of an -installed package.' - ) - ); - - // }}} - // {{{ constructor - - /** - * PEAR_Command_Registry constructor. - * - * @access public - */ - function PEAR_Command_Registry(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - // {{{ doList() - - function _sortinfo($a, $b) - { - $apackage = isset($a['package']) ? $a['package'] : $a['name']; - $bpackage = isset($b['package']) ? $b['package'] : $b['name']; - return strcmp($apackage, $bpackage); - } - - function doList($command, $options, $params) - { - $reg = &$this->config->getRegistry(); - $channelinfo = isset($options['channelinfo']); - if (isset($options['allchannels']) && !$channelinfo) { - return $this->doListAll($command, array(), $params); - } - if (isset($options['allchannels']) && $channelinfo) { - // allchannels with $channelinfo - unset($options['allchannels']); - $channels = $reg->getChannels(); - $errors = array(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - foreach ($channels as $channel) { - $options['channel'] = $channel->getName(); - $ret = $this->doList($command, $options, $params); - - if (PEAR::isError($ret)) { - $errors[] = $ret; - } - } - PEAR::staticPopErrorHandling(); - if (count($errors)) { - // for now, only give first error - return PEAR::raiseError($errors[0]); - } - return true; - } - - if (count($params) == 1) { - return $this->doFileList($command, $options, $params); - } - if (isset($options['channel'])) { - if ($reg->channelExists($options['channel'])) { - $channel = $reg->channelName($options['channel']); - } else { - return $this->raiseError('Channel "' . $options['channel'] .'" does not exist'); - } - } else { - $channel = $this->config->get('default_channel'); - } - $installed = $reg->packageInfo(null, null, $channel); - usort($installed, array(&$this, '_sortinfo')); - - $data = array( - 'caption' => 'Installed packages, channel ' . - $channel . ':', - 'border' => true, - 'headline' => array('Package', 'Version', 'State'), - 'channel' => $channel, - ); - if ($channelinfo) { - $data['headline'] = array('Channel', 'Package', 'Version', 'State'); - } - - if (count($installed) && !isset($data['data'])) { - $data['data'] = array(); - } - - foreach ($installed as $package) { - $pobj = $reg->getPackage(isset($package['package']) ? - $package['package'] : $package['name'], $channel); - if ($channelinfo) { - $packageinfo = array($pobj->getChannel(), $pobj->getPackage(), $pobj->getVersion(), - $pobj->getState() ? $pobj->getState() : null); - } else { - $packageinfo = array($pobj->getPackage(), $pobj->getVersion(), - $pobj->getState() ? $pobj->getState() : null); - } - $data['data'][] = $packageinfo; - } - if (count($installed) == 0) { - if (!$channelinfo) { - $data = '(no packages installed from channel ' . $channel . ')'; - } else { - $data = array( - 'caption' => 'Installed packages, channel ' . - $channel . ':', - 'border' => true, - 'channel' => $channel, - 'data' => '(no packages installed)', - ); - } - } - $this->ui->outputData($data, $command); - return true; - } - - function doListAll($command, $options, $params) - { - // This duplicate code is deprecated over - // list --channelinfo, which gives identical - // output for list and list --allchannels. - $reg = &$this->config->getRegistry(); - $installed = $reg->packageInfo(null, null, null); - foreach ($installed as $channel => $packages) { - usort($packages, array($this, '_sortinfo')); - $data = array( - 'caption' => 'Installed packages, channel ' . $channel . ':', - 'border' => true, - 'headline' => array('Package', 'Version', 'State'), - 'channel' => $channel - ); - foreach ($packages as $package) { - $pobj = $reg->getPackage(isset($package['package']) ? - $package['package'] : $package['name'], $channel); - $data['data'][] = array($pobj->getPackage(), $pobj->getVersion(), - $pobj->getState() ? $pobj->getState() : null); - } - if (count($packages)==0) { - $data = array( - 'caption' => 'Installed packages, channel ' . $channel . ':', - 'border' => true, - 'data' => array(array('(no packages installed)')), - 'channel' => $channel - ); - } - $this->ui->outputData($data, $command); - } - return true; - } - - function doFileList($command, $options, $params) - { - if (count($params) != 1) { - return $this->raiseError('list-files expects 1 parameter'); - } - $reg = &$this->config->getRegistry(); - $fp = false; - if (!is_dir($params[0]) && (file_exists($params[0]) || $fp = @fopen($params[0], - 'r'))) { - if ($fp) { - fclose($fp); - } - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - $pkg = &new PEAR_PackageFile($this->config, $this->_debug); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $info = &$pkg->fromAnyFile($params[0], PEAR_VALIDATE_NORMAL); - PEAR::staticPopErrorHandling(); - $headings = array('Package File', 'Install Path'); - $installed = false; - } else { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $parsed = $reg->parsePackageName($params[0], $this->config->get('default_channel')); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($parsed)) { - return $this->raiseError($parsed); - } - $info = &$reg->getPackage($parsed['package'], $parsed['channel']); - $headings = array('Type', 'Install Path'); - $installed = true; - } - if (PEAR::isError($info)) { - return $this->raiseError($info); - } - if ($info === null) { - return $this->raiseError("`$params[0]' not installed"); - } - $list = ($info->getPackagexmlVersion() == '1.0' || $installed) ? - $info->getFilelist() : $info->getContents(); - if ($installed) { - $caption = 'Installed Files For ' . $params[0]; - } else { - $caption = 'Contents of ' . basename($params[0]); - } - $data = array( - 'caption' => $caption, - 'border' => true, - 'headline' => $headings); - if ($info->getPackagexmlVersion() == '1.0' || $installed) { - foreach ($list as $file => $att) { - if ($installed) { - if (empty($att['installed_as'])) { - continue; - } - $data['data'][] = array($att['role'], $att['installed_as']); - } else { - if (isset($att['baseinstalldir']) && !in_array($att['role'], - array('test', 'data', 'doc'))) { - $dest = $att['baseinstalldir'] . DIRECTORY_SEPARATOR . - $file; - } else { - $dest = $file; - } - switch ($att['role']) { - case 'test': - case 'data': - case 'doc': - $role = $att['role']; - if ($role == 'test') { - $role .= 's'; - } - $dest = $this->config->get($role . '_dir') . DIRECTORY_SEPARATOR . - $info->getPackage() . DIRECTORY_SEPARATOR . $dest; - break; - case 'php': - default: - $dest = $this->config->get('php_dir') . DIRECTORY_SEPARATOR . - $dest; - } - $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR; - $dest = preg_replace(array('!\\\\+!', '!/!', "!$ds2+!"), - array(DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR), - $dest); - $file = preg_replace('!/+!', '/', $file); - $data['data'][] = array($file, $dest); - } - } - } else { // package.xml 2.0, not installed - if (!isset($list['dir']['file'][0])) { - $list['dir']['file'] = array($list['dir']['file']); - } - foreach ($list['dir']['file'] as $att) { - $att = $att['attribs']; - $file = $att['name']; - $role = &PEAR_Installer_Role::factory($info, $att['role'], $this->config); - $role->setup($this, $info, $att, $file); - if (!$role->isInstallable()) { - $dest = '(not installable)'; - } else { - $dest = $role->processInstallation($info, $att, $file, ''); - if (PEAR::isError($dest)) { - $dest = '(Unknown role "' . $att['role'] . ')'; - } else { - list(,, $dest) = $dest; - } - } - $data['data'][] = array($file, $dest); - } - } - $this->ui->outputData($data, $command); - return true; - } - - // }}} - // {{{ doShellTest() - - function doShellTest($command, $options, $params) - { - if (count($params) < 1) { - return PEAR::raiseError('ERROR, usage: pear shell-test packagename [[relation] version]'); - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $reg = &$this->config->getRegistry(); - $info = $reg->parsePackageName($params[0], $this->config->get('default_channel')); - if (PEAR::isError($info)) { - exit(1); // invalid package name - } - $package = $info['package']; - $channel = $info['channel']; - // "pear shell-test Foo" - if (!$reg->packageExists($package, $channel)) { - if ($channel == 'pecl.php.net') { - if ($reg->packageExists($package, 'pear.php.net')) { - $channel = 'pear.php.net'; // magically change channels for extensions - } - } - } - if (sizeof($params) == 1) { - if (!$reg->packageExists($package, $channel)) { - exit(1); - } - // "pear shell-test Foo 1.0" - } elseif (sizeof($params) == 2) { - $v = $reg->packageInfo($package, 'version', $channel); - if (!$v || !version_compare("$v", "{$params[1]}", "ge")) { - exit(1); - } - // "pear shell-test Foo ge 1.0" - } elseif (sizeof($params) == 3) { - $v = $reg->packageInfo($package, 'version', $channel); - if (!$v || !version_compare("$v", "{$params[2]}", $params[1])) { - exit(1); - } - } else { - PEAR::staticPopErrorHandling(); - $this->raiseError("$command: expects 1 to 3 parameters"); - exit(1); - } - } - - // }}} - // {{{ doInfo - - function doInfo($command, $options, $params) - { - if (count($params) != 1) { - return $this->raiseError('pear info expects 1 parameter'); - } - $info = $fp = false; - $reg = &$this->config->getRegistry(); - if ((file_exists($params[0]) && is_file($params[0]) && !is_dir($params[0])) || $fp = @fopen($params[0], 'r')) { - if ($fp) { - fclose($fp); - } - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - $pkg = &new PEAR_PackageFile($this->config, $this->_debug); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $obj = &$pkg->fromAnyFile($params[0], PEAR_VALIDATE_NORMAL); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($obj)) { - $uinfo = $obj->getUserInfo(); - if (is_array($uinfo)) { - foreach ($uinfo as $message) { - if (is_array($message)) { - $message = $message['message']; - } - $this->ui->outputData($message); - } - } - return $this->raiseError($obj); - } - if ($obj->getPackagexmlVersion() == '1.0') { - $info = $obj->toArray(); - } else { - return $this->_doInfo2($command, $options, $params, $obj, false); - } - } else { - $parsed = $reg->parsePackageName($params[0], $this->config->get('default_channel')); - if (PEAR::isError($parsed)) { - return $this->raiseError($parsed); - } - $package = $parsed['package']; - $channel = $parsed['channel']; - $info = $reg->packageInfo($package, null, $channel); - if (isset($info['old'])) { - $obj = $reg->getPackage($package, $channel); - return $this->_doInfo2($command, $options, $params, $obj, true); - } - } - if (PEAR::isError($info)) { - return $info; - } - if (empty($info)) { - $this->raiseError("No information found for `$params[0]'"); - return; - } - unset($info['filelist']); - unset($info['dirtree']); - unset($info['changelog']); - if (isset($info['xsdversion'])) { - $info['package.xml version'] = $info['xsdversion']; - unset($info['xsdversion']); - } - if (isset($info['packagerversion'])) { - $info['packaged with PEAR version'] = $info['packagerversion']; - unset($info['packagerversion']); - } - $keys = array_keys($info); - $longtext = array('description', 'summary'); - foreach ($keys as $key) { - if (is_array($info[$key])) { - switch ($key) { - case 'maintainers': { - $i = 0; - $mstr = ''; - foreach ($info[$key] as $m) { - if ($i++ > 0) { - $mstr .= "\n"; - } - $mstr .= $m['name'] . " <"; - if (isset($m['email'])) { - $mstr .= $m['email']; - } else { - $mstr .= $m['handle'] . '@php.net'; - } - $mstr .= "> ($m[role])"; - } - $info[$key] = $mstr; - break; - } - case 'release_deps': { - $i = 0; - $dstr = ''; - foreach ($info[$key] as $d) { - if (isset($this->_deps_rel_trans[$d['rel']])) { - $rel = $this->_deps_rel_trans[$d['rel']]; - } else { - $rel = $d['rel']; - } - if (isset($this->_deps_type_trans[$d['type']])) { - $type = ucfirst($this->_deps_type_trans[$d['type']]); - } else { - $type = $d['type']; - } - if (isset($d['name'])) { - $name = $d['name'] . ' '; - } else { - $name = ''; - } - if (isset($d['version'])) { - $version = $d['version'] . ' '; - } else { - $version = ''; - } - if (isset($d['optional']) && $d['optional'] == 'yes') { - $optional = ' (optional)'; - } else { - $optional = ''; - } - $dstr .= "$type $name$rel $version$optional\n"; - } - $info[$key] = $dstr; - break; - } - case 'provides' : { - $debug = $this->config->get('verbose'); - if ($debug < 2) { - $pstr = 'Classes: '; - } else { - $pstr = ''; - } - $i = 0; - foreach ($info[$key] as $p) { - if ($debug < 2 && $p['type'] != "class") { - continue; - } - // Only print classes when verbosity mode is < 2 - if ($debug < 2) { - if ($i++ > 0) { - $pstr .= ", "; - } - $pstr .= $p['name']; - } else { - if ($i++ > 0) { - $pstr .= "\n"; - } - $pstr .= ucfirst($p['type']) . " " . $p['name']; - if (isset($p['explicit']) && $p['explicit'] == 1) { - $pstr .= " (explicit)"; - } - } - } - $info[$key] = $pstr; - break; - } - case 'configure_options' : { - foreach ($info[$key] as $i => $p) { - $info[$key][$i] = array_map(null, array_keys($p), array_values($p)); - $info[$key][$i] = array_map(create_function('$a', - 'return join(" = ",$a);'), $info[$key][$i]); - $info[$key][$i] = implode(', ', $info[$key][$i]); - } - $info[$key] = implode("\n", $info[$key]); - break; - } - default: { - $info[$key] = implode(", ", $info[$key]); - break; - } - } - } - if ($key == '_lastmodified') { - $hdate = date('Y-m-d', $info[$key]); - unset($info[$key]); - $info['Last Modified'] = $hdate; - } elseif ($key == '_lastversion') { - $info['Previous Installed Version'] = $info[$key] ? $info[$key] : '- None -'; - unset($info[$key]); - } else { - $info[$key] = trim($info[$key]); - if (in_array($key, $longtext)) { - $info[$key] = preg_replace('/ +/', ' ', $info[$key]); - } - } - } - $caption = 'About ' . $info['package'] . '-' . $info['version']; - $data = array( - 'caption' => $caption, - 'border' => true); - foreach ($info as $key => $value) { - $key = ucwords(trim(str_replace('_', ' ', $key))); - $data['data'][] = array($key, $value); - } - $data['raw'] = $info; - - $this->ui->outputData($data, 'package-info'); - } - - // }}} - - /** - * @access private - */ - function _doInfo2($command, $options, $params, &$obj, $installed) - { - $reg = &$this->config->getRegistry(); - $caption = 'About ' . $obj->getChannel() . '/' .$obj->getPackage() . '-' . - $obj->getVersion(); - $data = array( - 'caption' => $caption, - 'border' => true); - switch ($obj->getPackageType()) { - case 'php' : - $release = 'PEAR-style PHP-based Package'; - break; - case 'extsrc' : - $release = 'PECL-style PHP extension (source code)'; - break; - case 'zendextsrc' : - $release = 'PECL-style Zend extension (source code)'; - break; - case 'extbin' : - $release = 'PECL-style PHP extension (binary)'; - break; - case 'zendextbin' : - $release = 'PECL-style Zend extension (binary)'; - break; - case 'bundle' : - $release = 'Package bundle (collection of packages)'; - break; - } - $extends = $obj->getExtends(); - $extends = $extends ? - $obj->getPackage() . ' (extends ' . $extends . ')' : $obj->getPackage(); - if ($src = $obj->getSourcePackage()) { - $extends .= ' (source package ' . $src['channel'] . '/' . $src['package'] . ')'; - } - $info = array( - 'Release Type' => $release, - 'Name' => $extends, - 'Channel' => $obj->getChannel(), - 'Summary' => preg_replace('/ +/', ' ', $obj->getSummary()), - 'Description' => preg_replace('/ +/', ' ', $obj->getDescription()), - ); - $info['Maintainers'] = ''; - foreach (array('lead', 'developer', 'contributor', 'helper') as $role) { - $leads = $obj->{"get{$role}s"}(); - if (!$leads) { - continue; - } - if (isset($leads['active'])) { - $leads = array($leads); - } - foreach ($leads as $lead) { - if (!empty($info['Maintainers'])) { - $info['Maintainers'] .= "\n"; - } - $info['Maintainers'] .= $lead['name'] . ' <'; - $info['Maintainers'] .= $lead['email'] . "> ($role)"; - } - } - $info['Release Date'] = $obj->getDate(); - if ($time = $obj->getTime()) { - $info['Release Date'] .= ' ' . $time; - } - $info['Release Version'] = $obj->getVersion() . ' (' . $obj->getState() . ')'; - $info['API Version'] = $obj->getVersion('api') . ' (' . $obj->getState('api') . ')'; - $info['License'] = $obj->getLicense(); - $uri = $obj->getLicenseLocation(); - if ($uri) { - if (isset($uri['uri'])) { - $info['License'] .= ' (' . $uri['uri'] . ')'; - } else { - $extra = $obj->getInstalledLocation($info['filesource']); - if ($extra) { - $info['License'] .= ' (' . $uri['filesource'] . ')'; - } - } - } - $info['Release Notes'] = $obj->getNotes(); - if ($compat = $obj->getCompatible()) { - if (!isset($compat[0])) { - $compat = array($compat); - } - $info['Compatible with'] = ''; - foreach ($compat as $package) { - $info['Compatible with'] .= $package['channel'] . '/' . $package['name'] . - "\nVersions >= " . $package['min'] . ', <= ' . $package['max']; - if (isset($package['exclude'])) { - if (is_array($package['exclude'])) { - $package['exclude'] = implode(', ', $package['exclude']); - } - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - $info['Not Compatible with'] .= $package['channel'] . '/' . - $package['name'] . "\nVersions " . $package['exclude']; - } - } - } - $usesrole = $obj->getUsesrole(); - if ($usesrole) { - if (!isset($usesrole[0])) { - $usesrole = array($usesrole); - } - foreach ($usesrole as $roledata) { - if (isset($info['Uses Custom Roles'])) { - $info['Uses Custom Roles'] .= "\n"; - } else { - $info['Uses Custom Roles'] = ''; - } - if (isset($roledata['package'])) { - $rolepackage = $reg->parsedPackageNameToString($roledata, true); - } else { - $rolepackage = $roledata['uri']; - } - $info['Uses Custom Roles'] .= $roledata['role'] . ' (' . $rolepackage . ')'; - } - } - $usestask = $obj->getUsestask(); - if ($usestask) { - if (!isset($usestask[0])) { - $usestask = array($usestask); - } - foreach ($usestask as $taskdata) { - if (isset($info['Uses Custom Tasks'])) { - $info['Uses Custom Tasks'] .= "\n"; - } else { - $info['Uses Custom Tasks'] = ''; - } - if (isset($taskdata['package'])) { - $taskpackage = $reg->parsedPackageNameToString($taskdata, true); - } else { - $taskpackage = $taskdata['uri']; - } - $info['Uses Custom Tasks'] .= $taskdata['task'] . ' (' . $taskpackage . ')'; - } - } - $deps = $obj->getDependencies(); - $info['Required Dependencies'] = 'PHP version ' . $deps['required']['php']['min']; - if (isset($deps['required']['php']['max'])) { - $info['Required Dependencies'] .= '-' . $deps['required']['php']['max'] . "\n"; - } else { - $info['Required Dependencies'] .= "\n"; - } - if (isset($deps['required']['php']['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - if (is_array($deps['required']['php']['exclude'])) { - $deps['required']['php']['exclude'] = - implode(', ', $deps['required']['php']['exclude']); - } - $info['Not Compatible with'] .= "PHP versions\n " . - $deps['required']['php']['exclude']; - } - $info['Required Dependencies'] .= 'PEAR installer version'; - if (isset($deps['required']['pearinstaller']['max'])) { - $info['Required Dependencies'] .= 's ' . - $deps['required']['pearinstaller']['min'] . '-' . - $deps['required']['pearinstaller']['max']; - } else { - $info['Required Dependencies'] .= ' ' . - $deps['required']['pearinstaller']['min'] . ' or newer'; - } - if (isset($deps['required']['pearinstaller']['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - if (is_array($deps['required']['pearinstaller']['exclude'])) { - $deps['required']['pearinstaller']['exclude'] = - implode(', ', $deps['required']['pearinstaller']['exclude']); - } - $info['Not Compatible with'] .= "PEAR installer\n Versions " . - $deps['required']['pearinstaller']['exclude']; - } - foreach (array('Package', 'Extension') as $type) { - $index = strtolower($type); - if (isset($deps['required'][$index])) { - if (isset($deps['required'][$index]['name'])) { - $deps['required'][$index] = array($deps['required'][$index]); - } - foreach ($deps['required'][$index] as $package) { - if (isset($package['conflicts'])) { - $infoindex = 'Not Compatible with'; - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - } else { - $infoindex = 'Required Dependencies'; - $info[$infoindex] .= "\n"; - } - if ($index == 'extension') { - $name = $package['name']; - } else { - if (isset($package['channel'])) { - $name = $package['channel'] . '/' . $package['name']; - } else { - $name = '__uri/' . $package['name'] . ' (static URI)'; - } - } - $info[$infoindex] .= "$type $name"; - if (isset($package['uri'])) { - $info[$infoindex] .= "\n Download URI: $package[uri]"; - continue; - } - if (isset($package['max']) && isset($package['min'])) { - $info[$infoindex] .= " \n Versions " . - $package['min'] . '-' . $package['max']; - } elseif (isset($package['min'])) { - $info[$infoindex] .= " \n Version " . - $package['min'] . ' or newer'; - } elseif (isset($package['max'])) { - $info[$infoindex] .= " \n Version " . - $package['max'] . ' or older'; - } - if (isset($package['recommended'])) { - $info[$infoindex] .= "\n Recommended version: $package[recommended]"; - } - if (isset($package['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - if (is_array($package['exclude'])) { - $package['exclude'] = implode(', ', $package['exclude']); - } - $package['package'] = $package['name']; // for parsedPackageNameToString - if (isset($package['conflicts'])) { - $info['Not Compatible with'] .= '=> except '; - } - $info['Not Compatible with'] .= 'Package ' . - $reg->parsedPackageNameToString($package, true); - $info['Not Compatible with'] .= "\n Versions " . $package['exclude']; - } - } - } - } - if (isset($deps['required']['os'])) { - if (isset($deps['required']['os']['name'])) { - $dep['required']['os']['name'] = array($dep['required']['os']['name']); - } - foreach ($dep['required']['os'] as $os) { - if (isset($os['conflicts']) && $os['conflicts'] == 'yes') { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - $info['Not Compatible with'] .= "$os[name] Operating System"; - } else { - $info['Required Dependencies'] .= "\n"; - $info['Required Dependencies'] .= "$os[name] Operating System"; - } - } - } - if (isset($deps['required']['arch'])) { - if (isset($deps['required']['arch']['pattern'])) { - $dep['required']['arch']['pattern'] = array($dep['required']['os']['pattern']); - } - foreach ($dep['required']['arch'] as $os) { - if (isset($os['conflicts']) && $os['conflicts'] == 'yes') { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - $info['Not Compatible with'] .= "OS/Arch matching pattern '/$os[pattern]/'"; - } else { - $info['Required Dependencies'] .= "\n"; - $info['Required Dependencies'] .= "OS/Arch matching pattern '/$os[pattern]/'"; - } - } - } - if (isset($deps['optional'])) { - foreach (array('Package', 'Extension') as $type) { - $index = strtolower($type); - if (isset($deps['optional'][$index])) { - if (isset($deps['optional'][$index]['name'])) { - $deps['optional'][$index] = array($deps['optional'][$index]); - } - foreach ($deps['optional'][$index] as $package) { - if (isset($package['conflicts']) && $package['conflicts'] == 'yes') { - $infoindex = 'Not Compatible with'; - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - } else { - $infoindex = 'Optional Dependencies'; - if (!isset($info['Optional Dependencies'])) { - $info['Optional Dependencies'] = ''; - } else { - $info['Optional Dependencies'] .= "\n"; - } - } - if ($index == 'extension') { - $name = $package['name']; - } else { - if (isset($package['channel'])) { - $name = $package['channel'] . '/' . $package['name']; - } else { - $name = '__uri/' . $package['name'] . ' (static URI)'; - } - } - $info[$infoindex] .= "$type $name"; - if (isset($package['uri'])) { - $info[$infoindex] .= "\n Download URI: $package[uri]"; - continue; - } - if ($infoindex == 'Not Compatible with') { - // conflicts is only used to say that all versions conflict - continue; - } - if (isset($package['max']) && isset($package['min'])) { - $info[$infoindex] .= " \n Versions " . - $package['min'] . '-' . $package['max']; - } elseif (isset($package['min'])) { - $info[$infoindex] .= " \n Version " . - $package['min'] . ' or newer'; - } elseif (isset($package['max'])) { - $info[$infoindex] .= " \n Version " . - $package['min'] . ' or older'; - } - if (isset($package['recommended'])) { - $info[$infoindex] .= "\n Recommended version: $package[recommended]"; - } - if (isset($package['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info['Not Compatible with'] .= "\n"; - } - if (is_array($package['exclude'])) { - $package['exclude'] = implode(', ', $package['exclude']); - } - $info['Not Compatible with'] .= "Package $package\n Versions " . - $package['exclude']; - } - } - } - } - } - if (isset($deps['group'])) { - if (!isset($deps['group'][0])) { - $deps['group'] = array($deps['group']); - } - foreach ($deps['group'] as $group) { - $info['Dependency Group ' . $group['attribs']['name']] = $group['attribs']['hint']; - $groupindex = $group['attribs']['name'] . ' Contents'; - $info[$groupindex] = ''; - foreach (array('Package', 'Extension') as $type) { - $index = strtolower($type); - if (isset($group[$index])) { - if (isset($group[$index]['name'])) { - $group[$index] = array($group[$index]); - } - foreach ($group[$index] as $package) { - if (!empty($info[$groupindex])) { - $info[$groupindex] .= "\n"; - } - if ($index == 'extension') { - $name = $package['name']; - } else { - if (isset($package['channel'])) { - $name = $package['channel'] . '/' . $package['name']; - } else { - $name = '__uri/' . $package['name'] . ' (static URI)'; - } - } - if (isset($package['uri'])) { - if (isset($package['conflicts']) && $package['conflicts'] == 'yes') { - $info[$groupindex] .= "Not Compatible with $type $name"; - } else { - $info[$groupindex] .= "$type $name"; - } - $info[$groupindex] .= "\n Download URI: $package[uri]"; - continue; - } - if (isset($package['conflicts']) && $package['conflicts'] == 'yes') { - $info[$groupindex] .= "Not Compatible with $type $name"; - continue; - } - $info[$groupindex] .= "$type $name"; - if (isset($package['max']) && isset($package['min'])) { - $info[$groupindex] .= " \n Versions " . - $package['min'] . '-' . $package['max']; - } elseif (isset($package['min'])) { - $info[$groupindex] .= " \n Version " . - $package['min'] . ' or newer'; - } elseif (isset($package['max'])) { - $info[$groupindex] .= " \n Version " . - $package['min'] . ' or older'; - } - if (isset($package['recommended'])) { - $info[$groupindex] .= "\n Recommended version: $package[recommended]"; - } - if (isset($package['exclude'])) { - if (!isset($info['Not Compatible with'])) { - $info['Not Compatible with'] = ''; - } else { - $info[$groupindex] .= "Not Compatible with\n"; - } - if (is_array($package['exclude'])) { - $package['exclude'] = implode(', ', $package['exclude']); - } - $info[$groupindex] .= " Package $package\n Versions " . - $package['exclude']; - } - } - } - } - } - } - if ($obj->getPackageType() == 'bundle') { - $info['Bundled Packages'] = ''; - foreach ($obj->getBundledPackages() as $package) { - if (!empty($info['Bundled Packages'])) { - $info['Bundled Packages'] .= "\n"; - } - if (isset($package['uri'])) { - $info['Bundled Packages'] .= '__uri/' . $package['name']; - $info['Bundled Packages'] .= "\n (URI: $package[uri]"; - } else { - $info['Bundled Packages'] .= $package['channel'] . '/' . $package['name']; - } - } - } - $info['package.xml version'] = '2.0'; - if ($installed) { - if ($obj->getLastModified()) { - $info['Last Modified'] = date('Y-m-d H:i', $obj->getLastModified()); - } - $v = $obj->getLastInstalledVersion(); - $info['Previous Installed Version'] = $v ? $v : '- None -'; - } - foreach ($info as $key => $value) { - $data['data'][] = array($key, $value); - } - $data['raw'] = $obj->getArray(); // no validation needed - - $this->ui->outputData($data, 'package-info'); - } -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Registry.xml b/src/vitis/vas/rest/class/PEAR/Command/Registry.xml deleted file mode 100755 index 9f4e2149672f9ed2b0b39947292108ac81444d1b..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Registry.xml +++ /dev/null @@ -1,58 +0,0 @@ -<commands version="1.0"> - <list> - <summary>List Installed Packages In The Default Channel</summary> - <function>doList</function> - <shortcut>l</shortcut> - <options> - <channel> - <shortopt>c</shortopt> - <doc>list installed packages from this channel</doc> - <arg>CHAN</arg> - </channel> - <allchannels> - <shortopt>a</shortopt> - <doc>list installed packages from all channels</doc> - </allchannels> - <channelinfo> - <shortopt>i</shortopt> - <doc>output fully channel-aware data, even on failure</doc> - </channelinfo> - </options> - <doc><package> -If invoked without parameters, this command lists the PEAR packages -installed in your php_dir ({config php_dir}). With a parameter, it -lists the files in a package. -</doc> - </list> - <list-files> - <summary>List Files In Installed Package</summary> - <function>doFileList</function> - <shortcut>fl</shortcut> - <options /> - <doc><package> -List the files in an installed package. -</doc> - </list-files> - <shell-test> - <summary>Shell Script Test</summary> - <function>doShellTest</function> - <shortcut>st</shortcut> - <options /> - <doc><package> [[relation] version] -Tests if a package is installed in the system. Will exit(1) if it is not. - <relation> The version comparison operator. One of: - <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne - <version> The version to compare with -</doc> - </shell-test> - <info> - <summary>Display information about a package</summary> - <function>doInfo</function> - <shortcut>in</shortcut> - <options /> - <doc><package> -Displays information about a package. The package argument may be a -local package file, an URL to a package file, or the name of an -installed package.</doc> - </info> -</commands> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Remote.php b/src/vitis/vas/rest/class/PEAR/Command/Remote.php deleted file mode 100755 index c4fa9088c6f6ab32c737e6707fcf2895026d8123..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Remote.php +++ /dev/null @@ -1,812 +0,0 @@ -<?php -/** - * PEAR_Command_Remote (remote-info, list-upgrades, remote-list, search, list-all, download, - * clear-cache commands) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Remote.php,v 1.107 2008/04/11 01:16:40 dufuz Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; -require_once 'PEAR/REST.php'; - -/** - * PEAR commands for remote server querying - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Command_Remote extends PEAR_Command_Common -{ - // {{{ command definitions - - var $commands = array( - 'remote-info' => array( - 'summary' => 'Information About Remote Packages', - 'function' => 'doRemoteInfo', - 'shortcut' => 'ri', - 'options' => array(), - 'doc' => '<package> -Get details on a package from the server.', - ), - 'list-upgrades' => array( - 'summary' => 'List Available Upgrades', - 'function' => 'doListUpgrades', - 'shortcut' => 'lu', - 'options' => array( - 'channelinfo' => array( - 'shortopt' => 'i', - 'doc' => 'output fully channel-aware data, even on failure', - ), - ), - 'doc' => '[preferred_state] -List releases on the server of packages you have installed where -a newer version is available with the same release state (stable etc.) -or the state passed as the second parameter.' - ), - 'remote-list' => array( - 'summary' => 'List Remote Packages', - 'function' => 'doRemoteList', - 'shortcut' => 'rl', - 'options' => array( - 'channel' => - array( - 'shortopt' => 'c', - 'doc' => 'specify a channel other than the default channel', - 'arg' => 'CHAN', - ) - ), - 'doc' => ' -Lists the packages available on the configured server along with the -latest stable release of each package.', - ), - 'search' => array( - 'summary' => 'Search remote package database', - 'function' => 'doSearch', - 'shortcut' => 'sp', - 'options' => array( - 'channel' => - array( - 'shortopt' => 'c', - 'doc' => 'specify a channel other than the default channel', - 'arg' => 'CHAN', - ), - 'allchannels' => array( - 'shortopt' => 'a', - 'doc' => 'search packages from all known channels', - ), - 'channelinfo' => array( - 'shortopt' => 'i', - 'doc' => 'output fully channel-aware data, even on failure', - ), - ), - 'doc' => '[packagename] [packageinfo] -Lists all packages which match the search parameters. The first -parameter is a fragment of a packagename. The default channel -will be used unless explicitly overridden. The second parameter -will be used to match any portion of the summary/description', - ), - 'list-all' => array( - 'summary' => 'List All Packages', - 'function' => 'doListAll', - 'shortcut' => 'la', - 'options' => array( - 'channel' => - array( - 'shortopt' => 'c', - 'doc' => 'specify a channel other than the default channel', - 'arg' => 'CHAN', - ), - 'channelinfo' => array( - 'shortopt' => 'i', - 'doc' => 'output fully channel-aware data, even on failure', - ), - ), - 'doc' => ' -Lists the packages available on the configured server along with the -latest stable release of each package.', - ), - 'download' => array( - 'summary' => 'Download Package', - 'function' => 'doDownload', - 'shortcut' => 'd', - 'options' => array( - 'nocompress' => array( - 'shortopt' => 'Z', - 'doc' => 'download an uncompressed (.tar) file', - ), - ), - 'doc' => '<package>... -Download package tarballs. The files will be named as suggested by the -server, for example if you download the DB package and the latest stable -version of DB is 1.6.5, the downloaded file will be DB-1.6.5.tgz.', - ), - 'clear-cache' => array( - 'summary' => 'Clear Web Services Cache', - 'function' => 'doClearCache', - 'shortcut' => 'cc', - 'options' => array(), - 'doc' => ' -Clear the XML-RPC/REST cache. See also the cache_ttl configuration -parameter. -', - ), - ); - - // }}} - // {{{ constructor - - /** - * PEAR_Command_Remote constructor. - * - * @access public - */ - function PEAR_Command_Remote(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - - function _checkChannelForStatus($channel, $chan) - { - if (PEAR::isError($chan)) { - $this->raiseError($chan); - } - if (!is_a($chan, 'PEAR_ChannelFile')) { - return $this->raiseError('Internal corruption error: invalid channel "' . - $channel . '"'); - } - $rest = new PEAR_REST($this->config); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $mirror = $this->config->get('preferred_mirror', null, - $channel); - $a = $rest->downloadHttp('http://' . $channel . - '/channel.xml', $chan->lastModified()); - PEAR::staticPopErrorHandling(); - if (!PEAR::isError($a) && $a) { - $this->ui->outputData('WARNING: channel "' . $channel . '" has ' . - 'updated its protocols, use "channel-update ' . $channel . - '" to update'); - } - } - - // {{{ doRemoteInfo() - - function doRemoteInfo($command, $options, $params) - { - if (sizeof($params) != 1) { - return $this->raiseError("$command expects one param: the remote package name"); - } - $savechannel = $channel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - $package = $params[0]; - $parsed = $reg->parsePackageName($package, $channel); - if (PEAR::isError($parsed)) { - return $this->raiseError('Invalid package name "' . $package . '"'); - } - - $channel = $parsed['channel']; - $this->config->set('default_channel', $channel); - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - $info = $rest->packageInfo($base, $parsed['package'], $channel); - } else { - $r = &$this->config->getRemote(); - $info = $r->call('package.info', $parsed['package']); - } - if (PEAR::isError($info)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError($info); - } - if (!isset($info['name'])) { - return $this->raiseError('No remote package "' . $package . '" was found'); - } - - $installed = $reg->packageInfo($info['name'], null, $channel); - $info['installed'] = $installed['version'] ? $installed['version'] : '- no -'; - if (is_array($info['installed'])) { - $info['installed'] = $info['installed']['release']; - } - - $this->ui->outputData($info, $command); - $this->config->set('default_channel', $savechannel); - - return true; - } - - // }}} - // {{{ doRemoteList() - - function doRemoteList($command, $options, $params) - { - $savechannel = $channel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - if (isset($options['channel'])) { - $channel = $options['channel']; - if ($reg->channelExists($channel)) { - $this->config->set('default_channel', $channel); - } else { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - } - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - $list_options = false; - if ($this->config->get('preferred_state') == 'stable') { - $list_options = true; - } - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.1', $this->config->get('preferred_mirror'))) { - // use faster list-all if available - $rest = &$this->config->getREST('1.1', array()); - $available = $rest->listAll($base, $list_options, true, false, false, $chan->getName()); - } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - $available = $rest->listAll($base, $list_options, true, false, false, $chan->getName()); - } else { - $r = &$this->config->getRemote(); - if ($channel == 'pear.php.net') { - // hack because of poor pearweb design - $available = $r->call('package.listAll', true, $list_options, false); - } else { - $available = $r->call('package.listAll', true, $list_options); - } - } - if (PEAR::isError($available)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError($available); - } - $i = $j = 0; - $data = array( - 'caption' => 'Channel ' . $channel . ' Available packages:', - 'border' => true, - 'headline' => array('Package', 'Version'), - 'channel' => $channel - ); - if (count($available)==0) { - $data = '(no packages available yet)'; - } else { - foreach ($available as $name => $info) { - $data['data'][] = array($name, (isset($info['stable']) && $info['stable']) - ? $info['stable'] : '-n/a-'); - } - } - $this->ui->outputData($data, $command); - $this->config->set('default_channel', $savechannel); - return true; - } - - // }}} - // {{{ doListAll() - - function doListAll($command, $options, $params) - { - $savechannel = $channel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - if (isset($options['channel'])) { - $channel = $options['channel']; - if ($reg->channelExists($channel)) { - $this->config->set('default_channel', $channel); - } else { - return $this->raiseError("Channel \"$channel\" does not exist"); - } - } - $list_options = false; - if ($this->config->get('preferred_state') == 'stable') { - $list_options = true; - } - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.1', $this->config->get('preferred_mirror'))) { - // use faster list-all if available - $rest = &$this->config->getREST('1.1', array()); - $available = $rest->listAll($base, $list_options, false, false, false, $chan->getName()); - } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - $available = $rest->listAll($base, $list_options, false, false, false, $chan->getName()); - } else { - $r = &$this->config->getRemote(); - if ($channel == 'pear.php.net') { - // hack because of poor pearweb design - $available = $r->call('package.listAll', true, $list_options, false); - } else { - $available = $r->call('package.listAll', true, $list_options); - } - } - if (PEAR::isError($available)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError('The package list could not be fetched from the remote server. Please try again. (Debug info: "' . $available->getMessage() . '")'); - } - $data = array( - 'caption' => 'All packages [Channel ' . $channel . ']:', - 'border' => true, - 'headline' => array('Package', 'Latest', 'Local'), - 'channel' => $channel, - ); - if (isset($options['channelinfo'])) { - // add full channelinfo - $data['caption'] = 'Channel ' . $channel . ' All packages:'; - $data['headline'] = array('Channel', 'Package', 'Latest', 'Local', - 'Description', 'Dependencies'); - } - $local_pkgs = $reg->listPackages($channel); - - foreach ($available as $name => $info) { - $installed = $reg->packageInfo($name, null, $channel); - if (is_array($installed['version'])) { - $installed['version'] = $installed['version']['release']; - } - $desc = $info['summary']; - if (isset($params[$name])) { - $desc .= "\n\n".$info['description']; - } - if (isset($options['mode'])) - { - if ($options['mode'] == 'installed' && !isset($installed['version'])) { - continue; - } - if ($options['mode'] == 'notinstalled' && isset($installed['version'])) { - continue; - } - if ($options['mode'] == 'upgrades' - && (!isset($installed['version']) || version_compare($installed['version'], - $info['stable'], '>='))) { - continue; - } - } - $pos = array_search(strtolower($name), $local_pkgs); - if ($pos !== false) { - unset($local_pkgs[$pos]); - } - - if (isset($info['stable']) && !$info['stable']) { - $info['stable'] = null; - } - - if (isset($options['channelinfo'])) { - // add full channelinfo - if ($info['stable'] === $info['unstable']) { - $state = $info['state']; - } else { - $state = 'stable'; - } - $latest = $info['stable'].' ('.$state.')'; - $local = ''; - if (isset($installed['version'])) { - $inst_state = $reg->packageInfo($name, 'release_state', $channel); - $local = $installed['version'].' ('.$inst_state.')'; - } - - $packageinfo = array( - $channel, - $name, - $latest, - $local, - isset($desc) ? $desc : null, - isset($info['deps']) ? $info['deps'] : null, - ); - } else { - $packageinfo = array( - $reg->channelAlias($channel) . '/' . $name, - isset($info['stable']) ? $info['stable'] : null, - isset($installed['version']) ? $installed['version'] : null, - isset($desc) ? $desc : null, - isset($info['deps']) ? $info['deps'] : null, - ); - } - $data['data'][$info['category']][] = $packageinfo; - } - - if (isset($options['mode']) && in_array($options['mode'], array('notinstalled', 'upgrades'))) { - $this->config->set('default_channel', $savechannel); - $this->ui->outputData($data, $command); - return true; - } - foreach ($local_pkgs as $name) { - $info = &$reg->getPackage($name, $channel); - $data['data']['Local'][] = array( - $reg->channelAlias($channel) . '/' . $info->getPackage(), - '', - $info->getVersion(), - $info->getSummary(), - $info->getDeps() - ); - } - - $this->config->set('default_channel', $savechannel); - $this->ui->outputData($data, $command); - return true; - } - - // }}} - // {{{ doSearch() - - function doSearch($command, $options, $params) - { - if ((!isset($params[0]) || empty($params[0])) - && (!isset($params[1]) || empty($params[1]))) - { - return $this->raiseError('no valid search string supplied'); - }; - - $channelinfo = isset($options['channelinfo']); - $reg = &$this->config->getRegistry(); - if (isset($options['allchannels'])) { - // search all channels - unset($options['allchannels']); - $channels = $reg->getChannels(); - $errors = array(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - foreach ($channels as $channel) { - if ($channel->getName() != '__uri') { - $options['channel'] = $channel->getName(); - $ret = $this->doSearch($command, $options, $params); - if (PEAR::isError($ret)) { - $errors[] = $ret; - } - } - } - PEAR::staticPopErrorHandling(); - if (count($errors) !== 0) { - // for now, only give first error - return PEAR::raiseError($errors[0]); - } - - return true; - } - - $savechannel = $channel = $this->config->get('default_channel'); - $package = $params[0]; - $summary = isset($params[1]) ? $params[1] : false; - if (isset($options['channel'])) { - $reg = &$this->config->getRegistry(); - $channel = $options['channel']; - if ($reg->channelExists($channel)) { - $this->config->set('default_channel', $channel); - } else { - return $this->raiseError('Channel "' . $channel . '" does not exist'); - } - } - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - $available = $rest->listAll($base, false, false, $package, $summary, $chan->getName()); - } else { - $r = &$this->config->getRemote(); - $available = $r->call('package.search', $package, $summary, true, - $this->config->get('preferred_state') == 'stable', true); - } - if (PEAR::isError($available)) { - $this->config->set('default_channel', $savechannel); - return $this->raiseError($available); - } - if (!$available && !$channelinfo) { - // clean exit when not found, no error ! - $data = 'no packages found that match pattern "' . $package . '", for channel '.$channel.'.'; - $this->ui->outputData($data); - $this->config->set('default_channel', $channel); - return true; - } - if ($channelinfo) { - $data = array( - 'caption' => 'Matched packages, channel ' . $channel . ':', - 'border' => true, - 'headline' => array('Channel', 'Package', 'Stable/(Latest)', 'Local'), - 'channel' => $channel - ); - } else { - $data = array( - 'caption' => 'Matched packages, channel ' . $channel . ':', - 'border' => true, - 'headline' => array('Package', 'Stable/(Latest)', 'Local'), - 'channel' => $channel - ); - } - - if (!$available && $channelinfo) { - unset($data['headline']); - $data['data'] = 'No packages found that match pattern "' . $package . '".'; - $available = array(); - } - foreach ($available as $name => $info) { - $installed = $reg->packageInfo($name, null, $channel); - $desc = $info['summary']; - if (isset($params[$name])) - $desc .= "\n\n".$info['description']; - - if (!isset($info['stable']) || !$info['stable']) { - $version_remote = 'none'; - } else { - if ($info['unstable']) { - $version_remote = $info['unstable']; - } else { - $version_remote = $info['stable']; - } - $version_remote .= ' ('.$info['state'].')'; - } - $version = is_array($installed['version']) ? $installed['version']['release'] : - $installed['version']; - if ($channelinfo) { - $packageinfo = array( - $channel, - $name, - $version_remote, - $version, - $desc, - ); - } else { - $packageinfo = array( - $name, - $version_remote, - $version, - $desc, - ); - } - $data['data'][$info['category']][] = $packageinfo; - } - $this->ui->outputData($data, $command); - $this->config->set('default_channel', $channel); - return true; - } - - // }}} - function &getDownloader($options) - { - if (!class_exists('PEAR_Downloader')) { - require_once 'PEAR/Downloader.php'; - } - $a = &new PEAR_Downloader($this->ui, $options, $this->config); - return $a; - } - // {{{ doDownload() - - function doDownload($command, $options, $params) - { - // make certain that dependencies are ignored - $options['downloadonly'] = 1; - - // eliminate error messages for preferred_state-related errors - /* TODO: Should be an option, but until now download does respect - prefered state */ - /* $options['ignorepreferred_state'] = 1; */ - // eliminate error messages for preferred_state-related errors - - $downloader = &$this->getDownloader($options); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $e = $downloader->setDownloadDir(getcwd()); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($e)) { - return $this->raiseError('Current directory is not writeable, cannot download'); - } - $errors = array(); - $downloaded = array(); - $err = $downloader->download($params); - if (PEAR::isError($err)) { - return $err; - } - $errors = $downloader->getErrorMsgs(); - if (count($errors)) { - foreach ($errors as $error) { - $this->ui->outputData($error); - } - return $this->raiseError("$command failed"); - } - $downloaded = $downloader->getDownloadedPackages(); - foreach ($downloaded as $pkg) { - $this->ui->outputData("File $pkg[file] downloaded", $command); - } - return true; - } - - function downloadCallback($msg, $params = null) - { - if ($msg == 'done') { - $this->bytes_downloaded = $params; - } - } - - // }}} - // {{{ doListUpgrades() - - function doListUpgrades($command, $options, $params) - { - require_once 'PEAR/Common.php'; - if (isset($params[0]) && !is_array(PEAR_Common::betterStates($params[0]))) { - return $this->raiseError($params[0] . ' is not a valid state (stable/beta/alpha/devel/etc.) try "pear help list-upgrades"'); - } - $savechannel = $channel = $this->config->get('default_channel'); - $reg = &$this->config->getRegistry(); - foreach ($reg->listChannels() as $channel) { - $inst = array_flip($reg->listPackages($channel)); - if (!count($inst)) { - continue; - } - if ($channel == '__uri') { - continue; - } - $this->config->set('default_channel', $channel); - if (empty($params[0])) { - $state = $this->config->get('preferred_state'); - } else { - $state = $params[0]; - } - $caption = $channel . ' Available Upgrades'; - $chan = $reg->getChannel($channel); - if (PEAR::isError($e = $this->_checkChannelForStatus($channel, $chan))) { - return $e; - } - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', array()); - if (empty($state) || $state == 'any') { - $state = false; - } else { - $caption .= ' (' . implode(', ', PEAR_Common::betterStates($state, true)) . ')'; - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $latest = $rest->listLatestUpgrades($base, $state, $inst, $channel, $reg); - PEAR::staticPopErrorHandling(); - } else { - $remote = &$this->config->getRemote(); - $remote->pushErrorHandling(PEAR_ERROR_RETURN); - if (empty($state) || $state == 'any') { - $latest = $remote->call("package.listLatestReleases"); - } else { - $latest = $remote->call("package.listLatestReleases", $state); - $caption .= ' (' . implode(', ', PEAR_Common::betterStates($state, true)) . ')'; - } - $remote->popErrorHandling(); - } - if (PEAR::isError($latest)) { - $this->ui->outputData($latest->getMessage()); - continue; - } - $caption .= ':'; - if (PEAR::isError($latest)) { - $this->config->set('default_channel', $savechannel); - return $latest; - } - $data = array( - 'caption' => $caption, - 'border' => 1, - 'headline' => array('Channel', 'Package', 'Local', 'Remote', 'Size'), - 'channel' => $channel - ); - foreach ((array)$latest as $pkg => $info) { - $package = strtolower($pkg); - if (!isset($inst[$package])) { - // skip packages we don't have installed - continue; - } - extract($info); - $inst_version = $reg->packageInfo($package, 'version', $channel); - $inst_state = $reg->packageInfo($package, 'release_state', $channel); - if (version_compare("$version", "$inst_version", "le")) { - // installed version is up-to-date - continue; - } - if ($filesize >= 20480) { - $filesize += 1024 - ($filesize % 1024); - $fs = sprintf("%dkB", $filesize / 1024); - } elseif ($filesize > 0) { - $filesize += 103 - ($filesize % 103); - $fs = sprintf("%.1fkB", $filesize / 1024.0); - } else { - $fs = " -"; // XXX center instead - } - $data['data'][] = array($channel, $pkg, "$inst_version ($inst_state)", "$version ($state)", $fs); - } - if (isset($options['channelinfo'])) { - if (empty($data['data'])) { - unset($data['headline']); - if (count($inst) == 0) { - $data['data'] = '(no packages installed)'; - } else { - $data['data'] = '(no upgrades available)'; - } - } - $this->ui->outputData($data, $command); - } else { - if (empty($data['data'])) { - $this->ui->outputData('Channel ' . $channel . ': No upgrades available'); - } else { - $this->ui->outputData($data, $command); - } - } - } - $this->config->set('default_channel', $savechannel); - return true; - } - - // }}} - // {{{ doClearCache() - - function doClearCache($command, $options, $params) - { - $cache_dir = $this->config->get('cache_dir'); - $verbose = $this->config->get('verbose'); - $output = ''; - if (!file_exists($cache_dir) || !is_dir($cache_dir)) { - return $this->raiseError("$cache_dir does not exist or is not a directory"); - } - if (!($dp = @opendir($cache_dir))) { - return $this->raiseError("opendir($cache_dir) failed: $php_errormsg"); - } - if ($verbose >= 1) { - $output .= "reading directory $cache_dir\n"; - } - $num = 0; - while ($ent = readdir($dp)) { - if (preg_match('/^xmlrpc_cache_[a-z0-9]{32}\\z/', $ent) || - preg_match('/rest.cache(file|id)\\z/', $ent)) { - $path = $cache_dir . DIRECTORY_SEPARATOR . $ent; - if (file_exists($path)) { - $ok = @unlink($path); - } else { - $ok = false; - $php_errormsg = ''; - } - if ($ok) { - if ($verbose >= 2) { - $output .= "deleted $path\n"; - } - $num++; - } elseif ($verbose >= 1) { - $output .= "failed to delete $path $php_errormsg\n"; - } - } - } - closedir($dp); - if ($verbose >= 1) { - $output .= "$num cache entries cleared\n"; - } - $this->ui->outputData(rtrim($output), $command); - return $num; - } - - // }}} -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Command/Remote.xml b/src/vitis/vas/rest/class/PEAR/Command/Remote.xml deleted file mode 100755 index d06f2227b2e48f01680baf945a860bcbd5b446de..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Remote.xml +++ /dev/null @@ -1,108 +0,0 @@ -<commands version="1.0"> - <remote-info> - <summary>Information About Remote Packages</summary> - <function>doRemoteInfo</function> - <shortcut>ri</shortcut> - <options /> - <doc><package> -Get details on a package from the server.</doc> - </remote-info> - <list-upgrades> - <summary>List Available Upgrades</summary> - <function>doListUpgrades</function> - <shortcut>lu</shortcut> - <options /> - <doc>[preferred_state] -List releases on the server of packages you have installed where -a newer version is available with the same release state (stable etc.) -or the state passed as the second parameter.</doc> - </list-upgrades> - <remote-list> - <summary>List Remote Packages</summary> - <function>doRemoteList</function> - <shortcut>rl</shortcut> - <options> - <channel> - <shortopt>c</shortopt> - <doc>specify a channel other than the default channel</doc> - <arg>CHAN</arg> - </channel> - <channelinfo> - <shortopt>i</shortopt> - <doc>output fully channel-aware data, even on failure</doc> - </channelinfo> - </options> - <doc> -Lists the packages available on the configured server along with the -latest stable release of each package.</doc> - </remote-list> - <search> - <summary>Search remote package database</summary> - <function>doSearch</function> - <shortcut>sp</shortcut> - <options> - <channel> - <shortopt>c</shortopt> - <doc>specify a channel other than the default channel</doc> - <arg>CHAN</arg> - </channel> - <allchannels> - <shortopt>a</shortopt> - <doc>search packages from all known channels</doc> - </allchannels> - <channelinfo> - <shortopt>i</shortopt> - <doc>output fully channel-aware data, even on failure</doc> - </channelinfo> - </options> - <doc>[packagename] [packageinfo] -Lists all packages which match the search parameters. The first -parameter is a fragment of a packagename. The default channel -will be used unless explicitly overridden. The second parameter -will be used to match any portion of the summary/description</doc> - </search> - <list-all> - <summary>List All Packages</summary> - <function>doListAll</function> - <shortcut>la</shortcut> - <options> - <channel> - <shortopt>c</shortopt> - <doc>specify a channel other than the default channel</doc> - <arg>CHAN</arg> - </channel> - <channelinfo> - <shortopt>i</shortopt> - <doc>output fully channel-aware data, even on failure</doc> - </channelinfo> - </options> - <doc> -Lists the packages available on the configured server along with the -latest stable release of each package.</doc> - </list-all> - <download> - <summary>Download Package</summary> - <function>doDownload</function> - <shortcut>d</shortcut> - <options> - <nocompress> - <shortopt>Z</shortopt> - <doc>download an uncompressed (.tar) file</doc> - </nocompress> - </options> - <doc><package>... -Download package tarballs. The files will be named as suggested by the -server, for example if you download the DB package and the latest stable -version of DB is 1.6.5, the downloaded file will be DB-1.6.5.tgz.</doc> - </download> - <clear-cache> - <summary>Clear Web Services Cache</summary> - <function>doClearCache</function> - <shortcut>cc</shortcut> - <options /> - <doc> -Clear the XML-RPC/REST cache. See also the cache_ttl configuration -parameter. -</doc> - </clear-cache> -</commands> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Test.php b/src/vitis/vas/rest/class/PEAR/Command/Test.php deleted file mode 100755 index 4cf40f61c2cc30cb4e98dfcab64e917d053f4861..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Test.php +++ /dev/null @@ -1,345 +0,0 @@ -<?php -/** - * PEAR_Command_Test (run-tests) - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Martin Jansen <mj@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Test.php,v 1.27 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Command/Common.php'; - -/** - * PEAR commands for login/logout - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Martin Jansen <mj@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ - -class PEAR_Command_Test extends PEAR_Command_Common -{ - // {{{ properties - - var $commands = array( - 'run-tests' => array( - 'summary' => 'Run Regression Tests', - 'function' => 'doRunTests', - 'shortcut' => 'rt', - 'options' => array( - 'recur' => array( - 'shortopt' => 'r', - 'doc' => 'Run tests in child directories, recursively. 4 dirs deep maximum', - ), - 'ini' => array( - 'shortopt' => 'i', - 'doc' => 'actual string of settings to pass to php in format " -d setting=blah"', - 'arg' => 'SETTINGS' - ), - 'realtimelog' => array( - 'shortopt' => 'l', - 'doc' => 'Log test runs/results as they are run', - ), - 'quiet' => array( - 'shortopt' => 'q', - 'doc' => 'Only display detail for failed tests', - ), - 'simple' => array( - 'shortopt' => 's', - 'doc' => 'Display simple output for all tests', - ), - 'package' => array( - 'shortopt' => 'p', - 'doc' => 'Treat parameters as installed packages from which to run tests', - ), - 'phpunit' => array( - 'shortopt' => 'u', - 'doc' => 'Search parameters for AllTests.php, and use that to run phpunit-based tests -If none is found, all .phpt tests will be tried instead.', - ), - 'tapoutput' => array( - 'shortopt' => 't', - 'doc' => 'Output run-tests.log in TAP-compliant format', - ), - 'cgi' => array( - 'shortopt' => 'c', - 'doc' => 'CGI php executable (needed for tests with POST/GET section)', - 'arg' => 'PHPCGI', - ), - 'coverage' => array( - 'shortopt' => 'x', - 'doc' => 'Generate a code coverage report (requires Xdebug 2.0.0+)', - ), - ), - 'doc' => '[testfile|dir ...] -Run regression tests with PHP\'s regression testing script (run-tests.php).', - ), - ); - - var $output; - - // }}} - // {{{ constructor - - /** - * PEAR_Command_Test constructor. - * - * @access public - */ - function PEAR_Command_Test(&$ui, &$config) - { - parent::PEAR_Command_Common($ui, $config); - } - - // }}} - // {{{ doRunTests() - - function doRunTests($command, $options, $params) - { - if (isset($options['phpunit']) && isset($options['tapoutput'])) { - return $this->raiseError('ERROR: cannot use both --phpunit and --tapoutput at the same time'); - } - require_once 'PEAR/Common.php'; - require_once 'System.php'; - $log = new PEAR_Common; - $log->ui = &$this->ui; // slightly hacky, but it will work - $tests = array(); - $depth = isset($options['recur']) ? 4 : 1; - - if (!count($params)) { - $params[] = '.'; - } - if (isset($options['package'])) { - $oldparams = $params; - $params = array(); - $reg = &$this->config->getRegistry(); - foreach ($oldparams as $param) { - $pname = $reg->parsePackageName($param, $this->config->get('default_channel')); - if (PEAR::isError($pname)) { - return $this->raiseError($pname); - } - - $package = &$reg->getPackage($pname['package'], $pname['channel']); - if (!$package) { - return PEAR::raiseError('Unknown package "' . - $reg->parsedPackageNameToString($pname) . '"'); - } - - $filelist = $package->getFilelist(); - foreach ($filelist as $name => $atts) { - if (isset($atts['role']) && $atts['role'] != 'test') { - continue; - } - - if (isset($options['phpunit']) && preg_match('/AllTests\.php\\z/i', $name)) { - $params[] = $atts['installed_as']; - continue; - } elseif (!preg_match('/\.phpt\\z/', $name)) { - continue; - } - $params[] = $atts['installed_as']; - } - } - } - - foreach ($params as $p) { - if (is_dir($p)) { - if (isset($options['phpunit'])) { - $dir = System::find(array($p, '-type', 'f', - '-maxdepth', $depth, - '-name', 'AllTests.php')); - if (count($dir)) { - foreach ($dir as $p) { - $p = realpath($p); - if (!count($tests) || - (count($tests) && strlen($p) < strlen($tests[0]))) { - // this is in a higher-level directory, use this one instead. - $tests = array($p); - } - } - } - continue; - } - $dir = System::find(array($p, '-type', 'f', - '-maxdepth', $depth, - '-name', '*.phpt')); - $tests = array_merge($tests, $dir); - } else { - if (isset($options['phpunit'])) { - if (preg_match('/AllTests\.php\\z/i', $p)) { - $p = realpath($p); - if (!count($tests) || - (count($tests) && strlen($p) < strlen($tests[0]))) { - // this is in a higher-level directory, use this one instead. - $tests = array($p); - } - } - continue; - } - - if (file_exists($p) && preg_match('/\.phpt$/', $p)) { - $tests[] = $p; - continue; - } - - if (!preg_match('/\.phpt\\z/', $p)) { - $p .= '.phpt'; - } - $dir = System::find(array(dirname($p), '-type', 'f', - '-maxdepth', $depth, - '-name', $p)); - $tests = array_merge($tests, $dir); - } - } - - $ini_settings = ''; - if (isset($options['ini'])) { - $ini_settings .= $options['ini']; - } - - if (isset($_ENV['TEST_PHP_INCLUDE_PATH'])) { - $ini_settings .= " -d include_path={$_ENV['TEST_PHP_INCLUDE_PATH']}"; - } - - if ($ini_settings) { - $this->ui->outputData('Using INI settings: "' . $ini_settings . '"'); - } - $skipped = $passed = $failed = array(); - $tests_count = count($tests); - $this->ui->outputData('Running ' . $tests_count . ' tests', $command); - $start = time(); - if (isset($options['realtimelog']) && file_exists('run-tests.log')) { - unlink('run-tests.log'); - } - - if (isset($options['tapoutput'])) { - $tap = '1..' . $tests_count . "\n"; - } - - require_once 'PEAR/RunTest.php'; - $run = new PEAR_RunTest($log, $options); - $run->tests_count = $tests_count; - - if (isset($options['coverage']) && extension_loaded('xdebug')){ - $run->xdebug_loaded = true; - } else { - $run->xdebug_loaded = false; - } - - $j = $i = 1; - foreach ($tests as $t) { - if (isset($options['realtimelog'])) { - $fp = @fopen('run-tests.log', 'a'); - if ($fp) { - fwrite($fp, "Running test [$i / $tests_count] $t..."); - fclose($fp); - } - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (isset($options['phpunit'])) { - $result = $run->runPHPUnit($t, $ini_settings); - } else { - $result = $run->run($t, $ini_settings, $j); - } - PEAR::staticPopErrorHandling(); - if (PEAR::isError($result)) { - $this->ui->log($result->getMessage()); - continue; - } - - if (isset($options['tapoutput'])) { - $tap .= $result[0] . ' ' . $i . $result[1] . "\n"; - continue; - } - - if (isset($options['realtimelog'])) { - $fp = @fopen('run-tests.log', 'a'); - if ($fp) { - fwrite($fp, "$result\n"); - fclose($fp); - } - } - - if ($result == 'FAILED') { - $failed[] = $t; - } - if ($result == 'PASSED') { - $passed[] = $t; - } - if ($result == 'SKIPPED') { - $skipped[] = $t; - } - - $j++; - } - - $total = date('i:s', time() - $start); - if (isset($options['tapoutput'])) { - $fp = @fopen('run-tests.log', 'w'); - if ($fp) { - fwrite($fp, $tap, strlen($tap)); - fclose($fp); - $this->ui->outputData('wrote TAP-format log to "' .realpath('run-tests.log') . - '"', $command); - } - } else { - if (count($failed)) { - $output = "TOTAL TIME: $total\n"; - $output .= count($passed) . " PASSED TESTS\n"; - $output .= count($skipped) . " SKIPPED TESTS\n"; - $output .= count($failed) . " FAILED TESTS:\n"; - foreach ($failed as $failure) { - $output .= $failure . "\n"; - } - - $mode = isset($options['realtimelog']) ? 'a' : 'w'; - $fp = @fopen('run-tests.log', $mode); - - if ($fp) { - fwrite($fp, $output, strlen($output)); - fclose($fp); - $this->ui->outputData('wrote log to "' . realpath('run-tests.log') . '"', $command); - } - } elseif (file_exists('run-tests.log') && !is_dir('run-tests.log')) { - @unlink('run-tests.log'); - } - } - $this->ui->outputData('TOTAL TIME: ' . $total); - $this->ui->outputData(count($passed) . ' PASSED TESTS', $command); - $this->ui->outputData(count($skipped) . ' SKIPPED TESTS', $command); - if (count($failed)) { - $this->ui->outputData(count($failed) . ' FAILED TESTS:', $command); - foreach ($failed as $failure) { - $this->ui->outputData($failure, $command); - } - } - - return true; - } - // }}} -} \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Command/Test.xml b/src/vitis/vas/rest/class/PEAR/Command/Test.xml deleted file mode 100755 index 68e8f5381381b817806e5227d763e8e48eedfa63..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Command/Test.xml +++ /dev/null @@ -1,54 +0,0 @@ -<commands version="1.0"> - <run-tests> - <summary>Run Regression Tests</summary> - <function>doRunTests</function> - <shortcut>rt</shortcut> - <options> - <recur> - <shortopt>r</shortopt> - <doc>Run tests in child directories, recursively. 4 dirs deep maximum</doc> - </recur> - <ini> - <shortopt>i</shortopt> - <doc>actual string of settings to pass to php in format " -d setting=blah"</doc> - <arg>SETTINGS</arg> - </ini> - <realtimelog> - <shortopt>l</shortopt> - <doc>Log test runs/results as they are run</doc> - </realtimelog> - <quiet> - <shortopt>q</shortopt> - <doc>Only display detail for failed tests</doc> - </quiet> - <simple> - <shortopt>s</shortopt> - <doc>Display simple output for all tests</doc> - </simple> - <package> - <shortopt>p</shortopt> - <doc>Treat parameters as installed packages from which to run tests</doc> - </package> - <phpunit> - <shortopt>u</shortopt> - <doc>Search parameters for AllTests.php, and use that to run phpunit-based tests. -If none is found, all .phpt tests will be tried instead.</doc> - </phpunit> - <tapoutput> - <shortopt>t</shortopt> - <doc>Output run-tests.log in TAP-compliant format</doc> - </tapoutput> - <cgi> - <shortopt>c</shortopt> - <doc>CGI php executable (needed for tests with POST/GET section)</doc> - <arg>PHPCGI</arg> - </cgi> - <coverage> - <shortopt>x</shortopt> - <doc>Generate a code coverage report (requires Xdebug 2.0.0+)</doc> - </coverage> - </options> - <doc>[testfile|dir ...] -Run regression tests with PHP's regression testing script (run-tests.php).</doc> - </run-tests> -</commands> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Common.php b/src/vitis/vas/rest/class/PEAR/Common.php deleted file mode 100755 index 73ec384f365d8e3b9cbcc62490190df423821e55..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Common.php +++ /dev/null @@ -1,1126 +0,0 @@ -<?php -/** - * PEAR_Common, the base class for the PEAR Installer - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V. V. Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Common.php,v 1.160 2008/01/03 20:26:34 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1.0 - * @deprecated File deprecated since Release 1.4.0a1 - */ - -/** - * Include error handling - */ -require_once 'PEAR.php'; - -// {{{ constants and globals - -/** - * PEAR_Common error when an invalid PHP file is passed to PEAR_Common::analyzeSourceCode() - */ -define('PEAR_COMMON_ERROR_INVALIDPHP', 1); -define('_PEAR_COMMON_PACKAGE_NAME_PREG', '[A-Za-z][a-zA-Z0-9_]+'); -define('PEAR_COMMON_PACKAGE_NAME_PREG', '/^' . _PEAR_COMMON_PACKAGE_NAME_PREG . '\\z/'); - -// this should allow: 1, 1.0, 1.0RC1, 1.0dev, 1.0dev123234234234, 1.0a1, 1.0b1, 1.0pl1 -define('_PEAR_COMMON_PACKAGE_VERSION_PREG', '\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?'); -define('PEAR_COMMON_PACKAGE_VERSION_PREG', '/^' . _PEAR_COMMON_PACKAGE_VERSION_PREG . '\\z/i'); - -// XXX far from perfect :-) -define('_PEAR_COMMON_PACKAGE_DOWNLOAD_PREG', '(' . _PEAR_COMMON_PACKAGE_NAME_PREG . - ')(-([.0-9a-zA-Z]+))?'); -define('PEAR_COMMON_PACKAGE_DOWNLOAD_PREG', '/^' . _PEAR_COMMON_PACKAGE_DOWNLOAD_PREG . - '\\z/'); - -define('_PEAR_CHANNELS_NAME_PREG', '[A-Za-z][a-zA-Z0-9\.]+'); -define('PEAR_CHANNELS_NAME_PREG', '/^' . _PEAR_CHANNELS_NAME_PREG . '\\z/'); - -// this should allow any dns or IP address, plus a path - NO UNDERSCORES ALLOWED -define('_PEAR_CHANNELS_SERVER_PREG', '[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*(\/[a-zA-Z0-9\-]+)*'); -define('PEAR_CHANNELS_SERVER_PREG', '/^' . _PEAR_CHANNELS_SERVER_PREG . '\\z/i'); - -define('_PEAR_CHANNELS_PACKAGE_PREG', '(' ._PEAR_CHANNELS_SERVER_PREG . ')\/(' - . _PEAR_COMMON_PACKAGE_NAME_PREG . ')'); -define('PEAR_CHANNELS_PACKAGE_PREG', '/^' . _PEAR_CHANNELS_PACKAGE_PREG . '\\z/i'); - -define('_PEAR_COMMON_CHANNEL_DOWNLOAD_PREG', '(' . _PEAR_CHANNELS_NAME_PREG . ')::(' - . _PEAR_COMMON_PACKAGE_NAME_PREG . ')(-([.0-9a-zA-Z]+))?'); -define('PEAR_COMMON_CHANNEL_DOWNLOAD_PREG', '/^' . _PEAR_COMMON_CHANNEL_DOWNLOAD_PREG . '\\z/'); - -/** - * List of temporary files and directories registered by - * PEAR_Common::addTempFile(). - * @var array - */ -$GLOBALS['_PEAR_Common_tempfiles'] = array(); - -/** - * Valid maintainer roles - * @var array - */ -$GLOBALS['_PEAR_Common_maintainer_roles'] = array('lead','developer','contributor','helper'); - -/** - * Valid release states - * @var array - */ -$GLOBALS['_PEAR_Common_release_states'] = array('alpha','beta','stable','snapshot','devel'); - -/** - * Valid dependency types - * @var array - */ -$GLOBALS['_PEAR_Common_dependency_types'] = array('pkg','ext','php','prog','ldlib','rtlib','os','websrv','sapi'); - -/** - * Valid dependency relations - * @var array - */ -$GLOBALS['_PEAR_Common_dependency_relations'] = array('has','eq','lt','le','gt','ge','not', 'ne'); - -/** - * Valid file roles - * @var array - */ -$GLOBALS['_PEAR_Common_file_roles'] = array('php','ext','test','doc','data','src','script'); - -/** - * Valid replacement types - * @var array - */ -$GLOBALS['_PEAR_Common_replacement_types'] = array('php-const', 'pear-config', 'package-info'); - -/** - * Valid "provide" types - * @var array - */ -$GLOBALS['_PEAR_Common_provide_types'] = array('ext', 'prog', 'class', 'function', 'feature', 'api'); - -/** - * Valid "provide" types - * @var array - */ -$GLOBALS['_PEAR_Common_script_phases'] = array('pre-install', 'post-install', 'pre-uninstall', 'post-uninstall', 'pre-build', 'post-build', 'pre-configure', 'post-configure', 'pre-setup', 'post-setup'); - -// }}} - -/** - * Class providing common functionality for PEAR administration classes. - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V. V. Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - * @deprecated This class will disappear, and its components will be spread - * into smaller classes, like the AT&T breakup, as of Release 1.4.0a1 - */ -class PEAR_Common extends PEAR -{ - // {{{ properties - - /** stack of elements, gives some sort of XML context */ - var $element_stack = array(); - - /** name of currently parsed XML element */ - var $current_element; - - /** array of attributes of the currently parsed XML element */ - var $current_attributes = array(); - - /** assoc with information about a package */ - var $pkginfo = array(); - - /** - * User Interface object (PEAR_Frontend_* class). If null, - * the log() method uses print. - * @var object - */ - var $ui = null; - - /** - * Configuration object (PEAR_Config). - * @var PEAR_Config - */ - var $config = null; - - var $current_path = null; - - /** - * PEAR_SourceAnalyzer instance - * @var object - */ - var $source_analyzer = null; - /** - * Flag variable used to mark a valid package file - * @var boolean - * @access private - */ - var $_validPackageFile; - - // }}} - - // {{{ constructor - - /** - * PEAR_Common constructor - * - * @access public - */ - function PEAR_Common() - { - parent::PEAR(); - $this->config = &PEAR_Config::singleton(); - $this->debug = $this->config->get('verbose'); - } - - // }}} - // {{{ destructor - - /** - * PEAR_Common destructor - * - * @access private - */ - function _PEAR_Common() - { - // doesn't work due to bug #14744 - //$tempfiles = $this->_tempfiles; - $tempfiles =& $GLOBALS['_PEAR_Common_tempfiles']; - while ($file = array_shift($tempfiles)) { - if (@is_dir($file)) { - if (!class_exists('System')) { - require_once 'System.php'; - } - System::rm(array('-rf', $file)); - } elseif (file_exists($file)) { - unlink($file); - } - } - } - - // }}} - // {{{ addTempFile() - - /** - * Register a temporary file or directory. When the destructor is - * executed, all registered temporary files and directories are - * removed. - * - * @param string $file name of file or directory - * - * @return void - * - * @access public - */ - function addTempFile($file) - { - if (!class_exists('PEAR_Frontend')) { - require_once 'PEAR/Frontend.php'; - } - PEAR_Frontend::addTempFile($file); - } - - // }}} - // {{{ mkDirHier() - - /** - * Wrapper to System::mkDir(), creates a directory as well as - * any necessary parent directories. - * - * @param string $dir directory name - * - * @return bool TRUE on success, or a PEAR error - * - * @access public - */ - function mkDirHier($dir) - { - $this->log(2, "+ create dir $dir"); - if (!class_exists('System')) { - require_once 'System.php'; - } - return System::mkDir(array('-p', $dir)); - } - - // }}} - // {{{ log() - - /** - * Logging method. - * - * @param int $level log level (0 is quiet, higher is noisier) - * @param string $msg message to write to the log - * - * @return void - * - * @access public - * @static - */ - function log($level, $msg, $append_crlf = true) - { - if ($this->debug >= $level) { - if (!class_exists('PEAR_Frontend')) { - require_once 'PEAR/Frontend.php'; - } - $ui = &PEAR_Frontend::singleton(); - if (is_a($ui, 'PEAR_Frontend')) { - $ui->log($msg, $append_crlf); - } else { - print "$msg\n"; - } - } - } - - // }}} - // {{{ mkTempDir() - - /** - * Create and register a temporary directory. - * - * @param string $tmpdir (optional) Directory to use as tmpdir. - * Will use system defaults (for example - * /tmp or c:\windows\temp) if not specified - * - * @return string name of created directory - * - * @access public - */ - function mkTempDir($tmpdir = '') - { - if ($tmpdir) { - $topt = array('-t', $tmpdir); - } else { - $topt = array(); - } - $topt = array_merge($topt, array('-d', 'pear')); - if (!class_exists('System')) { - require_once 'System.php'; - } - if (!$tmpdir = System::mktemp($topt)) { - return false; - } - $this->addTempFile($tmpdir); - return $tmpdir; - } - - // }}} - // {{{ setFrontendObject() - - /** - * Set object that represents the frontend to be used. - * - * @param object Reference of the frontend object - * @return void - * @access public - */ - function setFrontendObject(&$ui) - { - $this->ui = &$ui; - } - - // }}} - - // {{{ infoFromTgzFile() - - /** - * Returns information about a package file. Expects the name of - * a gzipped tar file as input. - * - * @param string $file name of .tgz file - * - * @return array array with package information - * - * @access public - * @deprecated use PEAR_PackageFile->fromTgzFile() instead - * - */ - function infoFromTgzFile($file) - { - $packagefile = &new PEAR_PackageFile($this->config); - $pf = &$packagefile->fromTgzFile($file, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($pf)) { - $errs = $pf->getUserinfo(); - if (is_array($errs)) { - foreach ($errs as $error) { - $e = $this->raiseError($error['message'], $error['code'], null, null, $error); - } - } - return $pf; - } - return $this->_postProcessValidPackagexml($pf); - } - - // }}} - // {{{ infoFromDescriptionFile() - - /** - * Returns information about a package file. Expects the name of - * a package xml file as input. - * - * @param string $descfile name of package xml file - * - * @return array array with package information - * - * @access public - * @deprecated use PEAR_PackageFile->fromPackageFile() instead - * - */ - function infoFromDescriptionFile($descfile) - { - $packagefile = &new PEAR_PackageFile($this->config); - $pf = &$packagefile->fromPackageFile($descfile, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($pf)) { - $errs = $pf->getUserinfo(); - if (is_array($errs)) { - foreach ($errs as $error) { - $e = $this->raiseError($error['message'], $error['code'], null, null, $error); - } - } - return $pf; - } - return $this->_postProcessValidPackagexml($pf); - } - - // }}} - // {{{ infoFromString() - - /** - * Returns information about a package file. Expects the contents - * of a package xml file as input. - * - * @param string $data contents of package.xml file - * - * @return array array with package information - * - * @access public - * @deprecated use PEAR_PackageFile->fromXmlstring() instead - * - */ - function infoFromString($data) - { - $packagefile = &new PEAR_PackageFile($this->config); - $pf = &$packagefile->fromXmlString($data, PEAR_VALIDATE_NORMAL, false); - if (PEAR::isError($pf)) { - $errs = $pf->getUserinfo(); - if (is_array($errs)) { - foreach ($errs as $error) { - $e = $this->raiseError($error['message'], $error['code'], null, null, $error); - } - } - return $pf; - } - return $this->_postProcessValidPackagexml($pf); - } - // }}} - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @return array - */ - function _postProcessValidPackagexml(&$pf) - { - if (is_a($pf, 'PEAR_PackageFile_v2')) { - // sort of make this into a package.xml 1.0-style array - // changelog is not converted to old format. - $arr = $pf->toArray(true); - $arr = array_merge($arr, $arr['old']); - unset($arr['old']); - unset($arr['xsdversion']); - unset($arr['contents']); - unset($arr['compatible']); - unset($arr['channel']); - unset($arr['uri']); - unset($arr['dependencies']); - unset($arr['phprelease']); - unset($arr['extsrcrelease']); - unset($arr['zendextsrcrelease']); - unset($arr['extbinrelease']); - unset($arr['zendextbinrelease']); - unset($arr['bundle']); - unset($arr['lead']); - unset($arr['developer']); - unset($arr['helper']); - unset($arr['contributor']); - $arr['filelist'] = $pf->getFilelist(); - $this->pkginfo = $arr; - return $arr; - } else { - $this->pkginfo = $pf->toArray(); - return $this->pkginfo; - } - } - // {{{ infoFromAny() - - /** - * Returns package information from different sources - * - * This method is able to extract information about a package - * from a .tgz archive or from a XML package definition file. - * - * @access public - * @param string Filename of the source ('package.xml', '<package>.tgz') - * @return string - * @deprecated use PEAR_PackageFile->fromAnyFile() instead - */ - function infoFromAny($info) - { - if (is_string($info) && file_exists($info)) { - $packagefile = &new PEAR_PackageFile($this->config); - $pf = &$packagefile->fromAnyFile($info, PEAR_VALIDATE_NORMAL); - if (PEAR::isError($pf)) { - $errs = $pf->getUserinfo(); - if (is_array($errs)) { - foreach ($errs as $error) { - $e = $this->raiseError($error['message'], $error['code'], null, null, $error); - } - } - return $pf; - } - return $this->_postProcessValidPackagexml($pf); - } - return $info; - } - - // }}} - // {{{ xmlFromInfo() - - /** - * Return an XML document based on the package info (as returned - * by the PEAR_Common::infoFrom* methods). - * - * @param array $pkginfo package info - * - * @return string XML data - * - * @access public - * @deprecated use a PEAR_PackageFile_v* object's generator instead - */ - function xmlFromInfo($pkginfo) - { - $config = &PEAR_Config::singleton(); - $packagefile = &new PEAR_PackageFile($config); - $pf = &$packagefile->fromArray($pkginfo); - $gen = &$pf->getDefaultGenerator(); - return $gen->toXml(PEAR_VALIDATE_PACKAGING); - } - - // }}} - // {{{ validatePackageInfo() - - /** - * Validate XML package definition file. - * - * @param string $info Filename of the package archive or of the - * package definition file - * @param array $errors Array that will contain the errors - * @param array $warnings Array that will contain the warnings - * @param string $dir_prefix (optional) directory where source files - * may be found, or empty if they are not available - * @access public - * @return boolean - * @deprecated use the validation of PEAR_PackageFile objects - */ - function validatePackageInfo($info, &$errors, &$warnings, $dir_prefix = '') - { - $config = &PEAR_Config::singleton(); - $packagefile = &new PEAR_PackageFile($config); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (strpos($info, '<?xml') !== false) { - $pf = &$packagefile->fromXmlString($info, PEAR_VALIDATE_NORMAL, ''); - } else { - $pf = &$packagefile->fromAnyFile($info, PEAR_VALIDATE_NORMAL); - } - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pf)) { - $errs = $pf->getUserinfo(); - if (is_array($errs)) { - foreach ($errs as $error) { - if ($error['level'] == 'error') { - $errors[] = $error['message']; - } else { - $warnings[] = $error['message']; - } - } - } - return false; - } - return true; - } - - // }}} - // {{{ buildProvidesArray() - - /** - * Build a "provides" array from data returned by - * analyzeSourceCode(). The format of the built array is like - * this: - * - * array( - * 'class;MyClass' => 'array('type' => 'class', 'name' => 'MyClass'), - * ... - * ) - * - * - * @param array $srcinfo array with information about a source file - * as returned by the analyzeSourceCode() method. - * - * @return void - * - * @access public - * - */ - function buildProvidesArray($srcinfo) - { - $file = basename($srcinfo['source_file']); - $pn = ''; - if (isset($this->_packageName)) { - $pn = $this->_packageName; - } - $pnl = strlen($pn); - foreach ($srcinfo['declared_classes'] as $class) { - $key = "class;$class"; - if (isset($this->pkginfo['provides'][$key])) { - continue; - } - $this->pkginfo['provides'][$key] = - array('file'=> $file, 'type' => 'class', 'name' => $class); - if (isset($srcinfo['inheritance'][$class])) { - $this->pkginfo['provides'][$key]['extends'] = - $srcinfo['inheritance'][$class]; - } - } - foreach ($srcinfo['declared_methods'] as $class => $methods) { - foreach ($methods as $method) { - $function = "$class::$method"; - $key = "function;$function"; - if ($method{0} == '_' || !strcasecmp($method, $class) || - isset($this->pkginfo['provides'][$key])) { - continue; - } - $this->pkginfo['provides'][$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - foreach ($srcinfo['declared_functions'] as $function) { - $key = "function;$function"; - if ($function{0} == '_' || isset($this->pkginfo['provides'][$key])) { - continue; - } - if (!strstr($function, '::') && strncasecmp($function, $pn, $pnl)) { - $warnings[] = "in1 " . $file . ": function \"$function\" not prefixed with package name \"$pn\""; - } - $this->pkginfo['provides'][$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - // }}} - // {{{ analyzeSourceCode() - - /** - * Analyze the source code of the given PHP file - * - * @param string Filename of the PHP file - * @return mixed - * @access public - */ - function analyzeSourceCode($file) - { - if (!function_exists("token_get_all")) { - return false; - } - if (!defined('T_DOC_COMMENT')) { - define('T_DOC_COMMENT', T_COMMENT); - } - if (!defined('T_INTERFACE')) { - define('T_INTERFACE', -1); - } - if (!defined('T_IMPLEMENTS')) { - define('T_IMPLEMENTS', -1); - } - if (!$fp = @fopen($file, "r")) { - return false; - } - fclose($fp); - $contents = file_get_contents($file); - $tokens = token_get_all($contents); -/* - for ($i = 0; $i < sizeof($tokens); $i++) { - @list($token, $data) = $tokens[$i]; - if (is_string($token)) { - var_dump($token); - } else { - print token_name($token) . ' '; - var_dump(rtrim($data)); - } - } -*/ - $look_for = 0; - $paren_level = 0; - $bracket_level = 0; - $brace_level = 0; - $lastphpdoc = ''; - $current_class = ''; - $current_interface = ''; - $current_class_level = -1; - $current_function = ''; - $current_function_level = -1; - $declared_classes = array(); - $declared_interfaces = array(); - $declared_functions = array(); - $declared_methods = array(); - $used_classes = array(); - $used_functions = array(); - $extends = array(); - $implements = array(); - $nodeps = array(); - $inquote = false; - $interface = false; - for ($i = 0; $i < sizeof($tokens); $i++) { - if (is_array($tokens[$i])) { - list($token, $data) = $tokens[$i]; - } else { - $token = $tokens[$i]; - $data = ''; - } - if ($inquote) { - if ($token != '"') { - continue; - } else { - $inquote = false; - continue; - } - } - switch ($token) { - case T_WHITESPACE: - continue; - case ';': - if ($interface) { - $current_function = ''; - $current_function_level = -1; - } - break; - case '"': - $inquote = true; - break; - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case '{': $brace_level++; continue 2; - case '}': - $brace_level--; - if ($current_class_level == $brace_level) { - $current_class = ''; - $current_class_level = -1; - } - if ($current_function_level == $brace_level) { - $current_function = ''; - $current_function_level = -1; - } - continue 2; - case '[': $bracket_level++; continue 2; - case ']': $bracket_level--; continue 2; - case '(': $paren_level++; continue 2; - case ')': $paren_level--; continue 2; - case T_INTERFACE: - $interface = true; - case T_CLASS: - if (($current_class_level != -1) || ($current_function_level != -1)) { - PEAR::raiseError("Parser error: invalid PHP found in file \"$file\"", - PEAR_COMMON_ERROR_INVALIDPHP); - return false; - } - case T_FUNCTION: - case T_NEW: - case T_EXTENDS: - case T_IMPLEMENTS: - $look_for = $token; - continue 2; - case T_STRING: - if (version_compare(zend_version(), '2.0', '<')) { - if (in_array(strtolower($data), - array('public', 'private', 'protected', 'abstract', - 'interface', 'implements', 'throw') - )) { - PEAR::raiseError('Error: PHP5 token encountered in ' . $file . - 'packaging should be done in PHP 5'); - return false; - } - } - if ($look_for == T_CLASS) { - $current_class = $data; - $current_class_level = $brace_level; - $declared_classes[] = $current_class; - } elseif ($look_for == T_INTERFACE) { - $current_interface = $data; - $current_class_level = $brace_level; - $declared_interfaces[] = $current_interface; - } elseif ($look_for == T_IMPLEMENTS) { - $implements[$current_class] = $data; - } elseif ($look_for == T_EXTENDS) { - $extends[$current_class] = $data; - } elseif ($look_for == T_FUNCTION) { - if ($current_class) { - $current_function = "$current_class::$data"; - $declared_methods[$current_class][] = $data; - } elseif ($current_interface) { - $current_function = "$current_interface::$data"; - $declared_methods[$current_interface][] = $data; - } else { - $current_function = $data; - $declared_functions[] = $current_function; - } - $current_function_level = $brace_level; - $m = array(); - } elseif ($look_for == T_NEW) { - $used_classes[$data] = true; - } - $look_for = 0; - continue 2; - case T_VARIABLE: - $look_for = 0; - continue 2; - case T_DOC_COMMENT: - case T_COMMENT: - if (preg_match('!^/\*\*\s!', $data)) { - $lastphpdoc = $data; - if (preg_match_all('/@nodep\s+(\S+)/', $lastphpdoc, $m)) { - $nodeps = array_merge($nodeps, $m[1]); - } - } - continue 2; - case T_DOUBLE_COLON: - if (!($tokens[$i - 1][0] == T_WHITESPACE || $tokens[$i - 1][0] == T_STRING)) { - PEAR::raiseError("Parser error: invalid PHP found in file \"$file\"", - PEAR_COMMON_ERROR_INVALIDPHP); - return false; - } - $class = $tokens[$i - 1][1]; - if (strtolower($class) != 'parent') { - $used_classes[$class] = true; - } - continue 2; - } - } - return array( - "source_file" => $file, - "declared_classes" => $declared_classes, - "declared_interfaces" => $declared_interfaces, - "declared_methods" => $declared_methods, - "declared_functions" => $declared_functions, - "used_classes" => array_diff(array_keys($used_classes), $nodeps), - "inheritance" => $extends, - "implements" => $implements, - ); - } - - // }}} - // {{{ betterStates() - - /** - * Return an array containing all of the states that are more stable than - * or equal to the passed in state - * - * @param string Release state - * @param boolean Determines whether to include $state in the list - * @return false|array False if $state is not a valid release state - */ - function betterStates($state, $include = false) - { - static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable'); - $i = array_search($state, $states); - if ($i === false) { - return false; - } - if ($include) { - $i--; - } - return array_slice($states, $i + 1); - } - - // }}} - // {{{ detectDependencies() - - function detectDependencies($any, $status_callback = null) - { - if (!function_exists("token_get_all")) { - return false; - } - if (PEAR::isError($info = $this->infoFromAny($any))) { - return $this->raiseError($info); - } - if (!is_array($info)) { - return false; - } - $deps = array(); - $used_c = $decl_c = $decl_f = $decl_m = array(); - foreach ($info['filelist'] as $file => $fa) { - $tmp = $this->analyzeSourceCode($file); - $used_c = @array_merge($used_c, $tmp['used_classes']); - $decl_c = @array_merge($decl_c, $tmp['declared_classes']); - $decl_f = @array_merge($decl_f, $tmp['declared_functions']); - $decl_m = @array_merge($decl_m, $tmp['declared_methods']); - $inheri = @array_merge($inheri, $tmp['inheritance']); - } - $used_c = array_unique($used_c); - $decl_c = array_unique($decl_c); - $undecl_c = array_diff($used_c, $decl_c); - return array('used_classes' => $used_c, - 'declared_classes' => $decl_c, - 'declared_methods' => $decl_m, - 'declared_functions' => $decl_f, - 'undeclared_classes' => $undecl_c, - 'inheritance' => $inheri, - ); - } - - // }}} - // {{{ getUserRoles() - - /** - * Get the valid roles for a PEAR package maintainer - * - * @return array - * @static - */ - function getUserRoles() - { - return $GLOBALS['_PEAR_Common_maintainer_roles']; - } - - // }}} - // {{{ getReleaseStates() - - /** - * Get the valid package release states of packages - * - * @return array - * @static - */ - function getReleaseStates() - { - return $GLOBALS['_PEAR_Common_release_states']; - } - - // }}} - // {{{ getDependencyTypes() - - /** - * Get the implemented dependency types (php, ext, pkg etc.) - * - * @return array - * @static - */ - function getDependencyTypes() - { - return $GLOBALS['_PEAR_Common_dependency_types']; - } - - // }}} - // {{{ getDependencyRelations() - - /** - * Get the implemented dependency relations (has, lt, ge etc.) - * - * @return array - * @static - */ - function getDependencyRelations() - { - return $GLOBALS['_PEAR_Common_dependency_relations']; - } - - // }}} - // {{{ getFileRoles() - - /** - * Get the implemented file roles - * - * @return array - * @static - */ - function getFileRoles() - { - return $GLOBALS['_PEAR_Common_file_roles']; - } - - // }}} - // {{{ getReplacementTypes() - - /** - * Get the implemented file replacement types in - * - * @return array - * @static - */ - function getReplacementTypes() - { - return $GLOBALS['_PEAR_Common_replacement_types']; - } - - // }}} - // {{{ getProvideTypes() - - /** - * Get the implemented file replacement types in - * - * @return array - * @static - */ - function getProvideTypes() - { - return $GLOBALS['_PEAR_Common_provide_types']; - } - - // }}} - // {{{ getScriptPhases() - - /** - * Get the implemented file replacement types in - * - * @return array - * @static - */ - function getScriptPhases() - { - return $GLOBALS['_PEAR_Common_script_phases']; - } - - // }}} - // {{{ validPackageName() - - /** - * Test whether a string contains a valid package name. - * - * @param string $name the package name to test - * - * @return bool - * - * @access public - */ - function validPackageName($name) - { - return (bool)preg_match(PEAR_COMMON_PACKAGE_NAME_PREG, $name); - } - - - // }}} - // {{{ validPackageVersion() - - /** - * Test whether a string contains a valid package version. - * - * @param string $ver the package version to test - * - * @return bool - * - * @access public - */ - function validPackageVersion($ver) - { - return (bool)preg_match(PEAR_COMMON_PACKAGE_VERSION_PREG, $ver); - } - - - // }}} - - // {{{ downloadHttp() - - /** - * Download a file through HTTP. Considers suggested file name in - * Content-disposition: header and can run a callback function for - * different events. The callback will be called with two - * parameters: the callback type, and parameters. The implemented - * callback types are: - * - * 'setup' called at the very beginning, parameter is a UI object - * that should be used for all output - * 'message' the parameter is a string with an informational message - * 'saveas' may be used to save with a different file name, the - * parameter is the filename that is about to be used. - * If a 'saveas' callback returns a non-empty string, - * that file name will be used as the filename instead. - * Note that $save_dir will not be affected by this, only - * the basename of the file. - * 'start' download is starting, parameter is number of bytes - * that are expected, or -1 if unknown - * 'bytesread' parameter is the number of bytes read so far - * 'done' download is complete, parameter is the total number - * of bytes read - * 'connfailed' if the TCP connection fails, this callback is called - * with array(host,port,errno,errmsg) - * 'writefailed' if writing to disk fails, this callback is called - * with array(destfile,errmsg) - * - * If an HTTP proxy has been configured (http_proxy PEAR_Config - * setting), the proxy will be used. - * - * @param string $url the URL to download - * @param object $ui PEAR_Frontend_* instance - * @param object $config PEAR_Config instance - * @param string $save_dir (optional) directory to save file in - * @param mixed $callback (optional) function/method to call for status - * updates - * - * @return string Returns the full path of the downloaded file or a PEAR - * error on failure. If the error is caused by - * socket-related errors, the error object will - * have the fsockopen error code available through - * getCode(). - * - * @access public - * @deprecated in favor of PEAR_Downloader::downloadHttp() - */ - function downloadHttp($url, &$ui, $save_dir = '.', $callback = null) - { - if (!class_exists('PEAR_Downloader')) { - require_once 'PEAR/Downloader.php'; - } - return PEAR_Downloader::downloadHttp($url, $ui, $save_dir, $callback); - } - - // }}} - - /** - * @param string $path relative or absolute include path - * @return boolean - * @static - */ - function isIncludeable($path) - { - if (file_exists($path) && is_readable($path)) { - return true; - } - $ipath = explode(PATH_SEPARATOR, ini_get('include_path')); - foreach ($ipath as $include) { - $test = realpath($include . DIRECTORY_SEPARATOR . $path); - if (file_exists($test) && is_readable($test)) { - return true; - } - } - return false; - } -} -require_once 'PEAR/Config.php'; -require_once 'PEAR/PackageFile.php'; -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Config.php b/src/vitis/vas/rest/class/PEAR/Config.php deleted file mode 100755 index fe37037eca1cd6ca5b46cfdafa71a219fc025ef5..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Config.php +++ /dev/null @@ -1,2163 +0,0 @@ -<?php -/** - * PEAR_Config, customized configuration handling for the PEAR Installer - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Config.php,v 1.146 2008/05/14 04:16:08 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * Required for error handling - */ -require_once 'PEAR.php'; -require_once 'PEAR/Registry.php'; -require_once 'PEAR/Installer/Role.php'; -require_once 'System.php'; -require_once 'PEAR/Remote.php'; - -/** - * Last created PEAR_Config instance. - * @var object - */ -$GLOBALS['_PEAR_Config_instance'] = null; -if (!defined('PEAR_INSTALL_DIR') || !PEAR_INSTALL_DIR) { - $PEAR_INSTALL_DIR = PHP_LIBDIR . DIRECTORY_SEPARATOR . 'pear'; -} else { - $PEAR_INSTALL_DIR = PEAR_INSTALL_DIR; -} - -// Below we define constants with default values for all configuration -// parameters except username/password. All of them can have their -// defaults set through environment variables. The reason we use the -// PHP_ prefix is for some security, PHP protects environment -// variables starting with PHP_*. - -// default channel and preferred mirror is based on whether we are invoked through -// the "pear" or the "pecl" command - -if (!defined('PEAR_RUNTYPE') || PEAR_RUNTYPE == 'pear') { - define('PEAR_CONFIG_DEFAULT_CHANNEL', 'pear.php.net'); -} else { - define('PEAR_CONFIG_DEFAULT_CHANNEL', 'pecl.php.net'); -} - -if (getenv('PHP_PEAR_SYSCONF_DIR')) { - define('PEAR_CONFIG_SYSCONFDIR', getenv('PHP_PEAR_SYSCONF_DIR')); -} elseif (getenv('SystemRoot')) { - define('PEAR_CONFIG_SYSCONFDIR', getenv('SystemRoot')); -} else { - define('PEAR_CONFIG_SYSCONFDIR', PHP_SYSCONFDIR); -} - -// Default for master_server -if (getenv('PHP_PEAR_MASTER_SERVER')) { - define('PEAR_CONFIG_DEFAULT_MASTER_SERVER', getenv('PHP_PEAR_MASTER_SERVER')); -} else { - define('PEAR_CONFIG_DEFAULT_MASTER_SERVER', 'pear.php.net'); -} - -// Default for http_proxy -if (getenv('PHP_PEAR_HTTP_PROXY')) { - define('PEAR_CONFIG_DEFAULT_HTTP_PROXY', getenv('PHP_PEAR_HTTP_PROXY')); -} elseif (getenv('http_proxy')) { - define('PEAR_CONFIG_DEFAULT_HTTP_PROXY', getenv('http_proxy')); -} else { - define('PEAR_CONFIG_DEFAULT_HTTP_PROXY', ''); -} - -// Default for php_dir -if (getenv('PHP_PEAR_INSTALL_DIR')) { - define('PEAR_CONFIG_DEFAULT_PHP_DIR', getenv('PHP_PEAR_INSTALL_DIR')); -} else { - if (file_exists($PEAR_INSTALL_DIR) && is_dir($PEAR_INSTALL_DIR)) { - define('PEAR_CONFIG_DEFAULT_PHP_DIR', - $PEAR_INSTALL_DIR); - } else { - define('PEAR_CONFIG_DEFAULT_PHP_DIR', $PEAR_INSTALL_DIR); - } -} - -// Default for ext_dir -if (getenv('PHP_PEAR_EXTENSION_DIR')) { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', getenv('PHP_PEAR_EXTENSION_DIR')); -} else { - if (ini_get('extension_dir')) { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', ini_get('extension_dir')); - } elseif (defined('PEAR_EXTENSION_DIR') && - file_exists(PEAR_EXTENSION_DIR) && is_dir(PEAR_EXTENSION_DIR)) { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', PEAR_EXTENSION_DIR); - } elseif (defined('PHP_EXTENSION_DIR')) { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', PHP_EXTENSION_DIR); - } else { - define('PEAR_CONFIG_DEFAULT_EXT_DIR', '.'); - } -} - -// Default for doc_dir -if (getenv('PHP_PEAR_DOC_DIR')) { - define('PEAR_CONFIG_DEFAULT_DOC_DIR', getenv('PHP_PEAR_DOC_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_DOC_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'docs'); -} - -// Default for bin_dir -if (getenv('PHP_PEAR_BIN_DIR')) { - define('PEAR_CONFIG_DEFAULT_BIN_DIR', getenv('PHP_PEAR_BIN_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_BIN_DIR', PHP_BINDIR); -} - -// Default for data_dir -if (getenv('PHP_PEAR_DATA_DIR')) { - define('PEAR_CONFIG_DEFAULT_DATA_DIR', getenv('PHP_PEAR_DATA_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_DATA_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'data'); -} - -// Default for cfg_dir -if (getenv('PHP_PEAR_CFG_DIR')) { - define('PEAR_CONFIG_DEFAULT_CFG_DIR', getenv('PHP_PEAR_CFG_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_CFG_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'cfg'); -} - -// Default for www_dir -if (getenv('PHP_PEAR_WWW_DIR')) { - define('PEAR_CONFIG_DEFAULT_WWW_DIR', getenv('PHP_PEAR_WWW_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_WWW_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'www'); -} - -// Default for test_dir -if (getenv('PHP_PEAR_TEST_DIR')) { - define('PEAR_CONFIG_DEFAULT_TEST_DIR', getenv('PHP_PEAR_TEST_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_TEST_DIR', - $PEAR_INSTALL_DIR.DIRECTORY_SEPARATOR.'tests'); -} - -// Default for temp_dir -if (getenv('PHP_PEAR_TEMP_DIR')) { - define('PEAR_CONFIG_DEFAULT_TEMP_DIR', getenv('PHP_PEAR_TEMP_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_TEMP_DIR', - System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' . - DIRECTORY_SEPARATOR . 'temp'); -} - -// Default for cache_dir -if (getenv('PHP_PEAR_CACHE_DIR')) { - define('PEAR_CONFIG_DEFAULT_CACHE_DIR', getenv('PHP_PEAR_CACHE_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_CACHE_DIR', - System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' . - DIRECTORY_SEPARATOR . 'cache'); -} - -// Default for download_dir -if (getenv('PHP_PEAR_DOWNLOAD_DIR')) { - define('PEAR_CONFIG_DEFAULT_DOWNLOAD_DIR', getenv('PHP_PEAR_DOWNLOAD_DIR')); -} else { - define('PEAR_CONFIG_DEFAULT_DOWNLOAD_DIR', - System::tmpdir() . DIRECTORY_SEPARATOR . 'pear' . - DIRECTORY_SEPARATOR . 'download'); -} - -// Default for php_bin -if (getenv('PHP_PEAR_PHP_BIN')) { - define('PEAR_CONFIG_DEFAULT_PHP_BIN', getenv('PHP_PEAR_PHP_BIN')); -} else { - define('PEAR_CONFIG_DEFAULT_PHP_BIN', PEAR_CONFIG_DEFAULT_BIN_DIR. - DIRECTORY_SEPARATOR.'php'.(OS_WINDOWS ? '.exe' : '')); -} - -// Default for verbose -if (getenv('PHP_PEAR_VERBOSE')) { - define('PEAR_CONFIG_DEFAULT_VERBOSE', getenv('PHP_PEAR_VERBOSE')); -} else { - define('PEAR_CONFIG_DEFAULT_VERBOSE', 1); -} - -// Default for preferred_state -if (getenv('PHP_PEAR_PREFERRED_STATE')) { - define('PEAR_CONFIG_DEFAULT_PREFERRED_STATE', getenv('PHP_PEAR_PREFERRED_STATE')); -} else { - define('PEAR_CONFIG_DEFAULT_PREFERRED_STATE', 'stable'); -} - -// Default for umask -if (getenv('PHP_PEAR_UMASK')) { - define('PEAR_CONFIG_DEFAULT_UMASK', getenv('PHP_PEAR_UMASK')); -} else { - define('PEAR_CONFIG_DEFAULT_UMASK', decoct(umask())); -} - -// Default for cache_ttl -if (getenv('PHP_PEAR_CACHE_TTL')) { - define('PEAR_CONFIG_DEFAULT_CACHE_TTL', getenv('PHP_PEAR_CACHE_TTL')); -} else { - define('PEAR_CONFIG_DEFAULT_CACHE_TTL', 3600); -} - -// Default for sig_type -if (getenv('PHP_PEAR_SIG_TYPE')) { - define('PEAR_CONFIG_DEFAULT_SIG_TYPE', getenv('PHP_PEAR_SIG_TYPE')); -} else { - define('PEAR_CONFIG_DEFAULT_SIG_TYPE', 'gpg'); -} - -// Default for sig_bin -if (getenv('PHP_PEAR_SIG_BIN')) { - define('PEAR_CONFIG_DEFAULT_SIG_BIN', getenv('PHP_PEAR_SIG_BIN')); -} else { - define('PEAR_CONFIG_DEFAULT_SIG_BIN', - System::which( - 'gpg', OS_WINDOWS ? 'c:\gnupg\gpg.exe' : '/usr/local/bin/gpg')); -} - -// Default for sig_keydir -if (getenv('PHP_PEAR_SIG_KEYDIR')) { - define('PEAR_CONFIG_DEFAULT_SIG_KEYDIR', getenv('PHP_PEAR_SIG_KEYDIR')); -} else { - define('PEAR_CONFIG_DEFAULT_SIG_KEYDIR', - PEAR_CONFIG_SYSCONFDIR . DIRECTORY_SEPARATOR . 'pearkeys'); -} - -/** - * This is a class for storing configuration data, keeping track of - * which are system-defined, user-defined or defaulted. - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Config extends PEAR -{ - // {{{ properties - - /** - * Array of config files used. - * - * @var array layer => config file - */ - var $files = array( - 'system' => '', - 'user' => '', - ); - - var $layers = array(); - - /** - * Configuration data, two-dimensional array where the first - * dimension is the config layer ('user', 'system' and 'default'), - * and the second dimension is keyname => value. - * - * The order in the first dimension is important! Earlier - * layers will shadow later ones when a config value is - * requested (if a 'user' value exists, it will be returned first, - * then 'system' and finally 'default'). - * - * @var array layer => array(keyname => value, ...) - */ - var $configuration = array( - 'user' => array(), - 'system' => array(), - 'default' => array(), - ); - - /** - * Configuration values that can be set for a channel - * - * All other configuration values can only have a global value - * @var array - * @access private - */ - var $_channelConfigInfo = array( - 'php_dir', 'ext_dir', 'doc_dir', 'bin_dir', 'data_dir', 'cfg_dir', - 'test_dir', 'www_dir', 'php_bin', 'username', 'password', 'verbose', - 'preferred_state', 'umask', 'preferred_mirror', 'php_ini' - ); - - /** - * Channels that can be accessed - * @see setChannels() - * @var array - * @access private - */ - var $_channels = array('pear.php.net', 'pecl.php.net', '__uri'); - - /** - * This variable is used to control the directory values returned - * @see setInstallRoot(); - * @var string|false - * @access private - */ - var $_installRoot = false; - - /** - * If requested, this will always refer to the registry - * contained in php_dir - * @var PEAR_Registry - */ - var $_registry = array(); - - /** - * @var array - * @access private - */ - var $_regInitialized = array(); - - /** - * @var bool - * @access private - */ - var $_noRegistry = false; - - /** - * amount of errors found while parsing config - * @var integer - * @access private - */ - var $_errorsFound = 0; - var $_lastError = null; - - /** - * Information about the configuration data. Stores the type, - * default value and a documentation string for each configuration - * value. - * - * @var array layer => array(infotype => value, ...) - */ - var $configuration_info = array( - // Channels/Internet Access - 'default_channel' => array( - 'type' => 'string', - 'default' => PEAR_CONFIG_DEFAULT_CHANNEL, - 'doc' => 'the default channel to use for all non explicit commands', - 'prompt' => 'Default Channel', - 'group' => 'Internet Access', - ), - 'preferred_mirror' => array( - 'type' => 'string', - 'default' => PEAR_CONFIG_DEFAULT_CHANNEL, - 'doc' => 'the default server or mirror to use for channel actions', - 'prompt' => 'Default Channel Mirror', - 'group' => 'Internet Access', - ), - 'remote_config' => array( - 'type' => 'password', - 'default' => '', - 'doc' => 'ftp url of remote configuration file to use for synchronized install', - 'prompt' => 'Remote Configuration File', - 'group' => 'Internet Access', - ), - 'auto_discover' => array( - 'type' => 'integer', - 'default' => 0, - 'doc' => 'whether to automatically discover new channels', - 'prompt' => 'Auto-discover new Channels', - 'group' => 'Internet Access', - ), - // Internet Access - 'master_server' => array( - 'type' => 'string', - 'default' => 'pear.php.net', - 'doc' => 'name of the main PEAR server [NOT USED IN THIS VERSION]', - 'prompt' => 'PEAR server [DEPRECATED]', - 'group' => 'Internet Access', - ), - 'http_proxy' => array( - 'type' => 'string', - 'default' => PEAR_CONFIG_DEFAULT_HTTP_PROXY, - 'doc' => 'HTTP proxy (host:port) to use when downloading packages', - 'prompt' => 'HTTP Proxy Server Address', - 'group' => 'Internet Access', - ), - // File Locations - 'php_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_PHP_DIR, - 'doc' => 'directory where .php files are installed', - 'prompt' => 'PEAR directory', - 'group' => 'File Locations', - ), - 'ext_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_EXT_DIR, - 'doc' => 'directory where loadable extensions are installed', - 'prompt' => 'PHP extension directory', - 'group' => 'File Locations', - ), - 'doc_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_DOC_DIR, - 'doc' => 'directory where documentation is installed', - 'prompt' => 'PEAR documentation directory', - 'group' => 'File Locations', - ), - 'bin_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_BIN_DIR, - 'doc' => 'directory where executables are installed', - 'prompt' => 'PEAR executables directory', - 'group' => 'File Locations', - ), - 'data_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_DATA_DIR, - 'doc' => 'directory where data files are installed', - 'prompt' => 'PEAR data directory', - 'group' => 'File Locations (Advanced)', - ), - 'cfg_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_CFG_DIR, - 'doc' => 'directory where modifiable configuration files are installed', - 'prompt' => 'PEAR configuration file directory', - 'group' => 'File Locations (Advanced)', - ), - 'www_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_WWW_DIR, - 'doc' => 'directory where www frontend files (html/js) are installed', - 'prompt' => 'PEAR www files directory', - 'group' => 'File Locations (Advanced)', - ), - 'test_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_TEST_DIR, - 'doc' => 'directory where regression tests are installed', - 'prompt' => 'PEAR test directory', - 'group' => 'File Locations (Advanced)', - ), - 'cache_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_CACHE_DIR, - 'doc' => 'directory which is used for XMLRPC cache', - 'prompt' => 'PEAR Installer cache directory', - 'group' => 'File Locations (Advanced)', - ), - 'temp_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_TEMP_DIR, - 'doc' => 'directory which is used for all temp files', - 'prompt' => 'PEAR Installer temp directory', - 'group' => 'File Locations (Advanced)', - ), - 'download_dir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_DOWNLOAD_DIR, - 'doc' => 'directory which is used for all downloaded files', - 'prompt' => 'PEAR Installer download directory', - 'group' => 'File Locations (Advanced)', - ), - 'php_bin' => array( - 'type' => 'file', - 'default' => PEAR_CONFIG_DEFAULT_PHP_BIN, - 'doc' => 'PHP CLI/CGI binary for executing scripts', - 'prompt' => 'PHP CLI/CGI binary', - 'group' => 'File Locations (Advanced)', - ), - 'php_ini' => array( - 'type' => 'file', - 'default' => '', - 'doc' => 'location of php.ini in which to enable PECL extensions on install', - 'prompt' => 'php.ini location', - 'group' => 'File Locations (Advanced)', - ), - // Maintainers - 'username' => array( - 'type' => 'string', - 'default' => '', - 'doc' => '(maintainers) your PEAR account name', - 'prompt' => 'PEAR username (for maintainers)', - 'group' => 'Maintainers', - ), - 'password' => array( - 'type' => 'password', - 'default' => '', - 'doc' => '(maintainers) your PEAR account password', - 'prompt' => 'PEAR password (for maintainers)', - 'group' => 'Maintainers', - ), - // Advanced - 'verbose' => array( - 'type' => 'integer', - 'default' => PEAR_CONFIG_DEFAULT_VERBOSE, - 'doc' => 'verbosity level -0: really quiet -1: somewhat quiet -2: verbose -3: debug', - 'prompt' => 'Debug Log Level', - 'group' => 'Advanced', - ), - 'preferred_state' => array( - 'type' => 'set', - 'default' => PEAR_CONFIG_DEFAULT_PREFERRED_STATE, - 'doc' => 'the installer will prefer releases with this state when installing packages without a version or state specified', - 'valid_set' => array( - 'stable', 'beta', 'alpha', 'devel', 'snapshot'), - 'prompt' => 'Preferred Package State', - 'group' => 'Advanced', - ), - 'umask' => array( - 'type' => 'mask', - 'default' => PEAR_CONFIG_DEFAULT_UMASK, - 'doc' => 'umask used when creating files (Unix-like systems only)', - 'prompt' => 'Unix file mask', - 'group' => 'Advanced', - ), - 'cache_ttl' => array( - 'type' => 'integer', - 'default' => PEAR_CONFIG_DEFAULT_CACHE_TTL, - 'doc' => 'amount of secs where the local cache is used and not updated', - 'prompt' => 'Cache TimeToLive', - 'group' => 'Advanced', - ), - 'sig_type' => array( - 'type' => 'set', - 'default' => PEAR_CONFIG_DEFAULT_SIG_TYPE, - 'doc' => 'which package signature mechanism to use', - 'valid_set' => array('gpg'), - 'prompt' => 'Package Signature Type', - 'group' => 'Maintainers', - ), - 'sig_bin' => array( - 'type' => 'string', - 'default' => PEAR_CONFIG_DEFAULT_SIG_BIN, - 'doc' => 'which package signature mechanism to use', - 'prompt' => 'Signature Handling Program', - 'group' => 'Maintainers', - ), - 'sig_keyid' => array( - 'type' => 'string', - 'default' => '', - 'doc' => 'which key to use for signing with', - 'prompt' => 'Signature Key Id', - 'group' => 'Maintainers', - ), - 'sig_keydir' => array( - 'type' => 'directory', - 'default' => PEAR_CONFIG_DEFAULT_SIG_KEYDIR, - 'doc' => 'directory where signature keys are located', - 'prompt' => 'Signature Key Directory', - 'group' => 'Maintainers', - ), - // __channels is reserved - used for channel-specific configuration - ); - - // }}} - - // {{{ PEAR_Config([file], [defaults_file]) - - /** - * Constructor. - * - * @param string file to read user-defined options from - * @param string file to read system-wide defaults from - * @param bool determines whether a registry object "follows" - * the value of php_dir (is automatically created - * and moved when php_dir is changed) - * @param bool if true, fails if configuration files cannot be loaded - * - * @access public - * - * @see PEAR_Config::singleton - */ - function PEAR_Config($user_file = '', $system_file = '', $ftp_file = false, - $strict = true) - { - $this->PEAR(); - PEAR_Installer_Role::initializeConfig($this); - $sl = DIRECTORY_SEPARATOR; - if (empty($user_file)) { - if (OS_WINDOWS) { - $user_file = PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.ini'; - } else { - $user_file = getenv('HOME') . $sl . '.pearrc'; - } - } - if (empty($system_file)) { - if (OS_WINDOWS) { - $system_file = PEAR_CONFIG_SYSCONFDIR . $sl . 'pearsys.ini'; - } else { - $system_file = PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.conf'; - } - } - - $this->layers = array_keys($this->configuration); - $this->files['user'] = $user_file; - $this->files['system'] = $system_file; - if ($user_file && file_exists($user_file)) { - $this->pushErrorHandling(PEAR_ERROR_RETURN); - $this->readConfigFile($user_file, 'user', $strict); - $this->popErrorHandling(); - if ($this->_errorsFound > 0) { - return; - } - } - - if ($system_file && file_exists($system_file)) { - $this->mergeConfigFile($system_file, false, 'system', $strict); - if ($this->_errorsFound > 0) { - return; - } - - } - - if (!$ftp_file) { - $ftp_file = $this->get('remote_config'); - } - - if ($ftp_file && defined('PEAR_REMOTEINSTALL_OK')) { - $this->readFTPConfigFile($ftp_file); - } - - foreach ($this->configuration_info as $key => $info) { - $this->configuration['default'][$key] = $info['default']; - } - - $this->_registry['default'] = &new PEAR_Registry($this->configuration['default']['php_dir']); - $this->_registry['default']->setConfig($this, false); - $this->_regInitialized['default'] = false; - //$GLOBALS['_PEAR_Config_instance'] = &$this; - } - - // }}} - /** - * Return the default locations of user and system configuration files - * @static - */ - function getDefaultConfigFiles() - { - $sl = DIRECTORY_SEPARATOR; - if (OS_WINDOWS) { - return array( - 'user' => PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.ini', - 'system' => PEAR_CONFIG_SYSCONFDIR . $sl . 'pearsys.ini' - ); - } else { - return array( - 'user' => getenv('HOME') . $sl . '.pearrc', - 'system' => PEAR_CONFIG_SYSCONFDIR . $sl . 'pear.conf' - ); - } - } - // {{{ singleton([file], [defaults_file]) - - /** - * Static singleton method. If you want to keep only one instance - * of this class in use, this method will give you a reference to - * the last created PEAR_Config object if one exists, or create a - * new object. - * - * @param string (optional) file to read user-defined options from - * @param string (optional) file to read system-wide defaults from - * - * @return object an existing or new PEAR_Config instance - * - * @access public - * - * @see PEAR_Config::PEAR_Config - */ - function &singleton($user_file = '', $system_file = '', $strict = true) - { - if (is_object($GLOBALS['_PEAR_Config_instance'])) { - return $GLOBALS['_PEAR_Config_instance']; - } - - $t_conf = &new PEAR_Config($user_file, $system_file, false, $strict); - if ($t_conf->_errorsFound > 0) { - return $t_conf->lastError; - } - - $GLOBALS['_PEAR_Config_instance'] = &$t_conf; - return $GLOBALS['_PEAR_Config_instance']; - } - - // }}} - // {{{ validConfiguration() - - /** - * Determine whether any configuration files have been detected, and whether a - * registry object can be retrieved from this configuration. - * @return bool - * @since PEAR 1.4.0a1 - */ - function validConfiguration() - { - if ($this->isDefinedLayer('user') || $this->isDefinedLayer('system')) { - return true; - } - return false; - } - - // }}} - // {{{ readConfigFile([file], [layer]) - - /** - * Reads configuration data from a file. All existing values in - * the config layer are discarded and replaced with data from the - * file. - * @param string file to read from, if NULL or not specified, the - * last-used file for the same layer (second param) is used - * @param string config layer to insert data into ('user' or 'system') - * @return bool TRUE on success or a PEAR error on failure - */ - function readConfigFile($file = null, $layer = 'user', $strict = true) - { - if (empty($this->files[$layer])) { - return $this->raiseError("unknown config layer `$layer'"); - } - - if ($file === null) { - $file = $this->files[$layer]; - } - - $data = $this->_readConfigDataFrom($file); - - if (PEAR::isError($data)) { - if ($strict) { - $this->_errorsFound++; - $this->lastError = $data; - - return $data; - } else { - return true; - } - } else { - $this->files[$layer] = $file; - } - - $this->_decodeInput($data); - $this->configuration[$layer] = $data; - $this->_setupChannels(); - if (!$this->_noRegistry && ($phpdir = $this->get('php_dir', $layer, 'pear.php.net'))) { - $this->_registry[$layer] = &new PEAR_Registry($phpdir); - $this->_registry[$layer]->setConfig($this, false); - $this->_regInitialized[$layer] = false; - } else { - unset($this->_registry[$layer]); - } - return true; - } - - // }}} - - /** - * @param string url to the remote config file, like ftp://www.example.com/pear/config.ini - * @return true|PEAR_Error - */ - function readFTPConfigFile($path) - { - do { // poor man's try - if (!class_exists('PEAR_FTP')) { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - if (PEAR_Common::isIncludeable('PEAR/FTP.php')) { - require_once 'PEAR/FTP.php'; - } - } - if (class_exists('PEAR_FTP')) { - $this->_ftp = &new PEAR_FTP; - $this->_ftp->pushErrorHandling(PEAR_ERROR_RETURN); - $e = $this->_ftp->init($path); - if (PEAR::isError($e)) { - $this->_ftp->popErrorHandling(); - return $e; - } - $tmp = System::mktemp('-d'); - PEAR_Common::addTempFile($tmp); - $e = $this->_ftp->get(basename($path), $tmp . DIRECTORY_SEPARATOR . - 'pear.ini', false, FTP_BINARY); - if (PEAR::isError($e)) { - $this->_ftp->popErrorHandling(); - return $e; - } - PEAR_Common::addTempFile($tmp . DIRECTORY_SEPARATOR . 'pear.ini'); - $this->_ftp->disconnect(); - $this->_ftp->popErrorHandling(); - $this->files['ftp'] = $tmp . DIRECTORY_SEPARATOR . 'pear.ini'; - $e = $this->readConfigFile(null, 'ftp'); - if (PEAR::isError($e)) { - return $e; - } - $fail = array(); - foreach ($this->configuration_info as $key => $val) { - if (in_array($this->getGroup($key), - array('File Locations', 'File Locations (Advanced)')) && - $this->getType($key) == 'directory') { - // any directory configs must be set for this to work - if (!isset($this->configuration['ftp'][$key])) { - $fail[] = $key; - } - } - } - if (count($fail)) { - $fail = '"' . implode('", "', $fail) . '"'; - unset($this->files['ftp']); - unset($this->configuration['ftp']); - return PEAR::raiseError('ERROR: Ftp configuration file must set all ' . - 'directory configuration variables. These variables were not set: ' . - $fail); - } else { - return true; - } - } else { - return PEAR::raiseError('PEAR_RemoteInstaller must be installed to use remote config'); - } - } while (false); // poor man's catch - unset($this->files['ftp']); - return PEAR::raiseError('no remote host specified'); - } - - // {{{ _setupChannels() - - /** - * Reads the existing configurations and creates the _channels array from it - */ - function _setupChannels() - { - $set = array_flip(array_values($this->_channels)); - foreach ($this->configuration as $layer => $data) { - $i = 1000; - if (isset($data['__channels']) && is_array($data['__channels'])) { - foreach ($data['__channels'] as $channel => $info) { - $set[$channel] = $i++; - } - } - } - $this->_channels = array_values(array_flip($set)); - $this->setChannels($this->_channels); - } - - // }}} - // {{{ deleteChannel(channel) - - function deleteChannel($channel) - { - foreach ($this->configuration as $layer => $data) { - if (isset($data['__channels'])) { - if (isset($data['__channels'][strtolower($channel)])) { - unset($this->configuration[$layer]['__channels'][strtolower($channel)]); - } - } - } - $this->_channels = array_flip($this->_channels); - unset($this->_channels[strtolower($channel)]); - $this->_channels = array_flip($this->_channels); - } - - // }}} - // {{{ mergeConfigFile(file, [override], [layer]) - - /** - * Merges data into a config layer from a file. Does the same - * thing as readConfigFile, except it does not replace all - * existing values in the config layer. - * @param string file to read from - * @param bool whether to overwrite existing data (default TRUE) - * @param string config layer to insert data into ('user' or 'system') - * @param string if true, errors are returned if file opening fails - * @return bool TRUE on success or a PEAR error on failure - */ - function mergeConfigFile($file, $override = true, $layer = 'user', $strict = true) - { - if (empty($this->files[$layer])) { - return $this->raiseError("unknown config layer `$layer'"); - } - if ($file === null) { - $file = $this->files[$layer]; - } - $data = $this->_readConfigDataFrom($file); - if (PEAR::isError($data)) { - if ($strict) { - $this->_errorsFound++; - $this->lastError = $data; - - return $data; - } else { - return true; - } - } - $this->_decodeInput($data); - if ($override) { - $this->configuration[$layer] = - PEAR_Config::arrayMergeRecursive($this->configuration[$layer], $data); - } else { - $this->configuration[$layer] = - PEAR_Config::arrayMergeRecursive($data, $this->configuration[$layer]); - } - $this->_setupChannels(); - if (!$this->_noRegistry && ($phpdir = $this->get('php_dir', $layer, 'pear.php.net'))) { - $this->_registry[$layer] = &new PEAR_Registry($phpdir); - $this->_registry[$layer]->setConfig($this, false); - $this->_regInitialized[$layer] = false; - } else { - unset($this->_registry[$layer]); - } - return true; - } - - // }}} - // {{{ arrayMergeRecursive($arr2, $arr1) - /** - * @param array - * @param array - * @return array - * @static - */ - function arrayMergeRecursive($arr2, $arr1) - { - $ret = array(); - foreach ($arr2 as $key => $data) { - if (!isset($arr1[$key])) { - $ret[$key] = $data; - unset($arr1[$key]); - continue; - } - if (is_array($data)) { - if (!is_array($arr1[$key])) { - $ret[$key] = $arr1[$key]; - unset($arr1[$key]); - continue; - } - $ret[$key] = PEAR_Config::arrayMergeRecursive($arr1[$key], $arr2[$key]); - unset($arr1[$key]); - } - } - return array_merge($ret, $arr1); - } - - // }}} - // {{{ writeConfigFile([file], [layer]) - - /** - * Writes data into a config layer from a file. - * - * @param string|null file to read from, or null for default - * @param string config layer to insert data into ('user' or - * 'system') - * @param string|null data to write to config file or null for internal data [DEPRECATED] - * @return bool TRUE on success or a PEAR error on failure - */ - function writeConfigFile($file = null, $layer = 'user', $data = null) - { - $this->_lazyChannelSetup($layer); - if ($layer == 'both' || $layer == 'all') { - foreach ($this->files as $type => $file) { - $err = $this->writeConfigFile($file, $type, $data); - if (PEAR::isError($err)) { - return $err; - } - } - return true; - } - if (empty($this->files[$layer])) { - return $this->raiseError("unknown config file type `$layer'"); - } - if ($file === null) { - $file = $this->files[$layer]; - } - $data = ($data === null) ? $this->configuration[$layer] : $data; - $this->_encodeOutput($data); - $opt = array('-p', dirname($file)); - if (!@System::mkDir($opt)) { - return $this->raiseError("could not create directory: " . dirname($file)); - } - if (file_exists($file) && is_file($file) && !is_writeable($file)) { - return $this->raiseError("no write access to $file!"); - } - $fp = @fopen($file, "w"); - if (!$fp) { - return $this->raiseError("PEAR_Config::writeConfigFile fopen('$file','w') failed ($php_errormsg)"); - } - $contents = "#PEAR_Config 0.9\n" . serialize($data); - if (!@fwrite($fp, $contents)) { - return $this->raiseError("PEAR_Config::writeConfigFile: fwrite failed ($php_errormsg)"); - } - return true; - } - - // }}} - // {{{ _readConfigDataFrom(file) - - /** - * Reads configuration data from a file and returns the parsed data - * in an array. - * - * @param string file to read from - * - * @return array configuration data or a PEAR error on failure - * - * @access private - */ - function _readConfigDataFrom($file) - { - $fp = false; - if (file_exists($file)) { - $fp = @fopen($file, "r"); - } - if (!$fp) { - return $this->raiseError("PEAR_Config::readConfigFile fopen('$file','r') failed"); - } - $size = filesize($file); - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - fclose($fp); - $contents = file_get_contents($file); - if (empty($contents)) { - return $this->raiseError('Configuration file "' . $file . '" is empty'); - } - - set_magic_quotes_runtime($rt); - - $version = false; - if (preg_match('/^#PEAR_Config\s+(\S+)\s+/si', $contents, $matches)) { - $version = $matches[1]; - $contents = substr($contents, strlen($matches[0])); - } else { - // Museum config file - if (substr($contents,0,2) == 'a:') { - $version = '0.1'; - } - } - if ($version && version_compare("$version", '1', '<')) { - - // no '@', it is possible that unserialize - // raises a notice but it seems to block IO to - // STDOUT if a '@' is used and a notice is raise - $data = unserialize($contents); - - if (!is_array($data) && !$data) { - if ($contents == serialize(false)) { - $data = array(); - } else { - $err = $this->raiseError("PEAR_Config: bad data in $file"); - return $err; - } - } - if (!is_array($data)) { - if (strlen(trim($contents)) > 0) { - $error = "PEAR_Config: bad data in $file"; - $err = $this->raiseError($error); - return $err; - } else { - $data = array(); - } - } - // add parsing of newer formats here... - } else { - $err = $this->raiseError("$file: unknown version `$version'"); - return $err; - } - return $data; - } - - // }}} - // {{{ getConfFile(layer) - /** - * Gets the file used for storing the config for a layer - * - * @param string $layer 'user' or 'system' - */ - - function getConfFile($layer) - { - return $this->files[$layer]; - } - - // }}} - - /** - * @param string Configuration class name, used for detecting duplicate calls - * @param array information on a role as parsed from its xml file - * @return true|PEAR_Error - * @access private - */ - function _addConfigVars($class, $vars) - { - static $called = array(); - if (isset($called[$class])) { - return; - } - $called[$class] = 1; - if (count($vars) > 3) { - return $this->raiseError('Roles can only define 3 new config variables or less'); - } - foreach ($vars as $name => $var) { - if (!is_array($var)) { - return $this->raiseError('Configuration information must be an array'); - } - if (!isset($var['type'])) { - return $this->raiseError('Configuration information must contain a type'); - } else { - if (!in_array($var['type'], - array('string', 'mask', 'password', 'directory', 'file', 'set'))) { - return $this->raiseError( - 'Configuration type must be one of directory, file, string, ' . - 'mask, set, or password'); - } - } - if (!isset($var['default'])) { - return $this->raiseError( - 'Configuration information must contain a default value ("default" index)'); - } else { - if (is_array($var['default'])) { - $real_default = ''; - foreach ($var['default'] as $config_var => $val) { - if (strpos($config_var, 'text') === 0) { - $real_default .= $val; - } elseif (strpos($config_var, 'constant') === 0) { - if (defined($val)) { - $real_default .= constant($val); - } else { - return $this->raiseError( - 'Unknown constant "' . $val . '" requested in ' . - 'default value for configuration variable "' . - $name . '"'); - } - } elseif (isset($this->configuration_info[$config_var])) { - $real_default .= - $this->configuration_info[$config_var]['default']; - } else { - return $this->raiseError( - 'Unknown request for "' . $config_var . '" value in ' . - 'default value for configuration variable "' . - $name . '"'); - } - } - $var['default'] = $real_default; - } - if ($var['type'] == 'integer') { - $var['default'] = (integer) $var['default']; - } - } - if (!isset($var['doc'])) { - return $this->raiseError( - 'Configuration information must contain a summary ("doc" index)'); - } - if (!isset($var['prompt'])) { - return $this->raiseError( - 'Configuration information must contain a simple prompt ("prompt" index)'); - } - if (!isset($var['group'])) { - return $this->raiseError( - 'Configuration information must contain a simple group ("group" index)'); - } - if (isset($this->configuration_info[$name])) { - return $this->raiseError('Configuration variable "' . $name . - '" already exists'); - } - $this->configuration_info[$name] = $var; - // fix bug #7351: setting custom config variable in a channel fails - $this->_channelConfigInfo[] = $name; - } - return true; - } - - // {{{ _encodeOutput(&data) - - /** - * Encodes/scrambles configuration data before writing to files. - * Currently, 'password' values will be base64-encoded as to avoid - * that people spot cleartext passwords by accident. - * - * @param array (reference) array to encode values in - * - * @return bool TRUE on success - * - * @access private - */ - function _encodeOutput(&$data) - { - foreach ($data as $key => $value) { - if ($key == '__channels') { - foreach ($data['__channels'] as $channel => $blah) { - $this->_encodeOutput($data['__channels'][$channel]); - } - } - if (!isset($this->configuration_info[$key])) { - continue; - } - $type = $this->configuration_info[$key]['type']; - switch ($type) { - // we base64-encode passwords so they are at least - // not shown in plain by accident - case 'password': { - $data[$key] = base64_encode($data[$key]); - break; - } - case 'mask': { - $data[$key] = octdec($data[$key]); - break; - } - } - } - return true; - } - - // }}} - // {{{ _decodeInput(&data) - - /** - * Decodes/unscrambles configuration data after reading from files. - * - * @param array (reference) array to encode values in - * - * @return bool TRUE on success - * - * @access private - * - * @see PEAR_Config::_encodeOutput - */ - function _decodeInput(&$data) - { - if (!is_array($data)) { - return true; - } - foreach ($data as $key => $value) { - if ($key == '__channels') { - foreach ($data['__channels'] as $channel => $blah) { - $this->_decodeInput($data['__channels'][$channel]); - } - } - if (!isset($this->configuration_info[$key])) { - continue; - } - $type = $this->configuration_info[$key]['type']; - switch ($type) { - case 'password': { - $data[$key] = base64_decode($data[$key]); - break; - } - case 'mask': { - $data[$key] = decoct($data[$key]); - break; - } - } - } - return true; - } - - // }}} - // {{{ getDefaultChannel([layer]) - /** - * Retrieve the default channel. - * - * On startup, channels are not initialized, so if the default channel is not - * pear.php.net, then initialize the config. - * @param string registry layer - * @return string|false - */ - function getDefaultChannel($layer = null) - { - $ret = false; - if ($layer === null) { - foreach ($this->layers as $layer) { - if (isset($this->configuration[$layer]['default_channel'])) { - $ret = $this->configuration[$layer]['default_channel']; - break; - } - } - } elseif (isset($this->configuration[$layer]['default_channel'])) { - $ret = $this->configuration[$layer]['default_channel']; - } - if ($ret == 'pear.php.net' && defined('PEAR_RUNTYPE') && PEAR_RUNTYPE == 'pecl') { - $ret = 'pecl.php.net'; - } - if ($ret) { - if ($ret != 'pear.php.net') { - $this->_lazyChannelSetup(); - } - return $ret; - } - return PEAR_CONFIG_DEFAULT_CHANNEL; - } - - // {{{ get(key, [layer]) - /** - * Returns a configuration value, prioritizing layers as per the - * layers property. - * - * @param string config key - * - * @return mixed the config value, or NULL if not found - * - * @access public - */ - function get($key, $layer = null, $channel = false) - { - if (!isset($this->configuration_info[$key])) { - return null; - } - if ($key == '__channels') { - return null; - } - if ($key == 'default_channel') { - return $this->getDefaultChannel($layer); - } - if (!$channel) { - $channel = $this->getDefaultChannel(); - } elseif ($channel != 'pear.php.net') { - $this->_lazyChannelSetup(); - } - $channel = strtolower($channel); - - $test = (in_array($key, $this->_channelConfigInfo)) ? - $this->_getChannelValue($key, $layer, $channel) : - null; - if ($test !== null) { - if ($this->_installRoot) { - if (in_array($this->getGroup($key), - array('File Locations', 'File Locations (Advanced)')) && - $this->getType($key) == 'directory') { - return $this->_prependPath($test, $this->_installRoot); - } - } - return $test; - } - if ($layer === null) { - foreach ($this->layers as $layer) { - if (isset($this->configuration[$layer][$key])) { - $test = $this->configuration[$layer][$key]; - if ($this->_installRoot) { - if (in_array($this->getGroup($key), - array('File Locations', 'File Locations (Advanced)')) && - $this->getType($key) == 'directory') { - return $this->_prependPath($test, $this->_installRoot); - } - } - if ($key == 'preferred_mirror') { - $reg = &$this->getRegistry(); - if (is_object($reg)) { - $chan = &$reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $channel; - } - if (!$chan->getMirror($test) && $chan->getName() != $test) { - return $channel; // mirror does not exist - } - } - } - return $test; - } - } - } elseif (isset($this->configuration[$layer][$key])) { - $test = $this->configuration[$layer][$key]; - if ($this->_installRoot) { - if (in_array($this->getGroup($key), - array('File Locations', 'File Locations (Advanced)')) && - $this->getType($key) == 'directory') { - return $this->_prependPath($test, $this->_installRoot); - } - } - if ($key == 'preferred_mirror') { - $reg = &$this->getRegistry(); - if (is_object($reg)) { - $chan = &$reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $channel; - } - if (!$chan->getMirror($test) && $chan->getName() != $test) { - return $channel; // mirror does not exist - } - } - } - return $test; - } - return null; - } - - // }}} - // {{{ _getChannelValue(key, value, [layer]) - /** - * Returns a channel-specific configuration value, prioritizing layers as per the - * layers property. - * - * @param string config key - * - * @return mixed the config value, or NULL if not found - * - * @access private - */ - function _getChannelValue($key, $layer, $channel) - { - if ($key == '__channels' || $channel == 'pear.php.net') { - return null; - } - $ret = null; - if ($layer === null) { - foreach ($this->layers as $ilayer) { - if (isset($this->configuration[$ilayer]['__channels'][$channel][$key])) { - $ret = $this->configuration[$ilayer]['__channels'][$channel][$key]; - break; - } - } - } elseif (isset($this->configuration[$layer]['__channels'][$channel][$key])) { - $ret = $this->configuration[$layer]['__channels'][$channel][$key]; - } - if ($key == 'preferred_mirror') { - if ($ret !== null) { - $reg = &$this->getRegistry($layer); - if (is_object($reg)) { - $chan = &$reg->getChannel($channel); - if (PEAR::isError($chan)) { - return $channel; - } - if (!$chan->getMirror($ret) && $chan->getName() != $ret) { - return $channel; // mirror does not exist - } - } - return $ret; - } - if ($channel != $this->getDefaultChannel($layer)) { - return $channel; // we must use the channel name as the preferred mirror - // if the user has not chosen an alternate - } else { - return $this->getDefaultChannel($layer); - } - } - return $ret; - } - - - // }}} - // {{{ set(key, value, [layer]) - - /** - * Set a config value in a specific layer (defaults to 'user'). - * Enforces the types defined in the configuration_info array. An - * integer config variable will be cast to int, and a set config - * variable will be validated against its legal values. - * - * @param string config key - * @param string config value - * @param string (optional) config layer - * @param string channel to set this value for, or null for global value - * @return bool TRUE on success, FALSE on failure - */ - function set($key, $value, $layer = 'user', $channel = false) - { - if ($key == '__channels') { - return false; - } - if (!isset($this->configuration[$layer])) { - return false; - } - if ($key == 'default_channel') { - // can only set this value globally - $channel = 'pear.php.net'; - if ($value != 'pear.php.net') { - $this->_lazyChannelSetup($layer); - } - } - if ($key == 'preferred_mirror') { - if ($channel == '__uri') { - return false; // can't set the __uri pseudo-channel's mirror - } - $reg = &$this->getRegistry($layer); - if (is_object($reg)) { - $chan = &$reg->getChannel($channel ? $channel : 'pear.php.net'); - if (PEAR::isError($chan)) { - return false; - } - if (!$chan->getMirror($value) && $chan->getName() != $value) { - return false; // mirror does not exist - } - } - } - if (!isset($this->configuration_info[$key])) { - return false; - } - extract($this->configuration_info[$key]); - switch ($type) { - case 'integer': - $value = (int)$value; - break; - case 'set': { - // If a valid_set is specified, require the value to - // be in the set. If there is no valid_set, accept - // any value. - if ($valid_set) { - reset($valid_set); - if ((key($valid_set) === 0 && !in_array($value, $valid_set)) || - (key($valid_set) !== 0 && empty($valid_set[$value]))) - { - return false; - } - } - break; - } - } - if (!$channel) { - $channel = $this->get('default_channel', null, 'pear.php.net'); - } - if (!in_array($channel, $this->_channels)) { - $this->_lazyChannelSetup($layer); - $reg = &$this->getRegistry($layer); - if ($reg) { - $channel = $reg->channelName($channel); - } - if (!in_array($channel, $this->_channels)) { - return false; - } - } - if ($channel != 'pear.php.net') { - if (in_array($key, $this->_channelConfigInfo)) { - $this->configuration[$layer]['__channels'][$channel][$key] = $value; - return true; - } else { - return false; - } - } else { - if ($key == 'default_channel') { - if (!isset($reg)) { - $reg = &$this->getRegistry($layer); - if (!$reg) { - $reg = &$this->getRegistry(); - } - } - if ($reg) { - $value = $reg->channelName($value); - } - if (!$value) { - return false; - } - } - } - $this->configuration[$layer][$key] = $value; - if ($key == 'php_dir' && !$this->_noRegistry) { - if (!isset($this->_registry[$layer]) || - $value != $this->_registry[$layer]->install_dir) { - $this->_registry[$layer] = &new PEAR_Registry($value); - $this->_regInitialized[$layer] = false; - $this->_registry[$layer]->setConfig($this, false); - } - } - return true; - } - - // }}} - function _lazyChannelSetup($uselayer = false) - { - if ($this->_noRegistry) { - return; - } - $merge = false; - foreach ($this->_registry as $layer => $p) { - if ($uselayer && $uselayer != $layer) { - continue; - } - if (!$this->_regInitialized[$layer]) { - if ($layer == 'default' && isset($this->_registry['user']) || - isset($this->_registry['system'])) { - // only use the default registry if there are no alternatives - continue; - } - if (!is_object($this->_registry[$layer])) { - if ($phpdir = $this->get('php_dir', $layer, 'pear.php.net')) { - $this->_registry[$layer] = &new PEAR_Registry($phpdir); - $this->_registry[$layer]->setConfig($this, false); - $this->_regInitialized[$layer] = false; - } else { - unset($this->_registry[$layer]); - return; - } - } - $this->setChannels($this->_registry[$layer]->listChannels(), $merge); - $this->_regInitialized[$layer] = true; - $merge = true; - } - } - } - // {{{ setChannels() - - /** - * Set the list of channels. - * - * This should be set via a call to {@link PEAR_Registry::listChannels()} - * @param array - * @param bool - * @return bool success of operation - */ - function setChannels($channels, $merge = false) - { - if (!is_array($channels)) { - return false; - } - if ($merge) { - $this->_channels = array_merge($this->_channels, $channels); - } else { - $this->_channels = $channels; - } - foreach ($channels as $channel) { - $channel = strtolower($channel); - if ($channel == 'pear.php.net') { - continue; - } - foreach ($this->layers as $layer) { - if (!isset($this->configuration[$layer]['__channels'])) { - $this->configuration[$layer]['__channels'] = array(); - } - if (!isset($this->configuration[$layer]['__channels'][$channel]) - || !is_array($this->configuration[$layer]['__channels'][$channel])) { - $this->configuration[$layer]['__channels'][$channel] = array(); - } - } - } - return true; - } - - // }}} - // {{{ getType(key) - - /** - * Get the type of a config value. - * - * @param string config key - * - * @return string type, one of "string", "integer", "file", - * "directory", "set" or "password". - * - * @access public - * - */ - function getType($key) - { - if (isset($this->configuration_info[$key])) { - return $this->configuration_info[$key]['type']; - } - return false; - } - - // }}} - // {{{ getDocs(key) - - /** - * Get the documentation for a config value. - * - * @param string config key - * - * @return string documentation string - * - * @access public - * - */ - function getDocs($key) - { - if (isset($this->configuration_info[$key])) { - return $this->configuration_info[$key]['doc']; - } - return false; - } - // }}} - // {{{ getPrompt(key) - - /** - * Get the short documentation for a config value. - * - * @param string config key - * - * @return string short documentation string - * - * @access public - * - */ - function getPrompt($key) - { - if (isset($this->configuration_info[$key])) { - return $this->configuration_info[$key]['prompt']; - } - return false; - } - // }}} - // {{{ getGroup(key) - - /** - * Get the parameter group for a config key. - * - * @param string config key - * - * @return string parameter group - * - * @access public - * - */ - function getGroup($key) - { - if (isset($this->configuration_info[$key])) { - return $this->configuration_info[$key]['group']; - } - return false; - } - - // }}} - // {{{ getGroups() - - /** - * Get the list of parameter groups. - * - * @return array list of parameter groups - * - * @access public - * - */ - function getGroups() - { - $tmp = array(); - foreach ($this->configuration_info as $key => $info) { - $tmp[$info['group']] = 1; - } - return array_keys($tmp); - } - - // }}} - // {{{ getGroupKeys() - - /** - * Get the list of the parameters in a group. - * - * @param string $group parameter group - * - * @return array list of parameters in $group - * - * @access public - * - */ - function getGroupKeys($group) - { - $keys = array(); - foreach ($this->configuration_info as $key => $info) { - if ($info['group'] == $group) { - $keys[] = $key; - } - } - return $keys; - } - - // }}} - // {{{ getSetValues(key) - - /** - * Get the list of allowed set values for a config value. Returns - * NULL for config values that are not sets. - * - * @param string config key - * - * @return array enumerated array of set values, or NULL if the - * config key is unknown or not a set - * - * @access public - * - */ - function getSetValues($key) - { - if (isset($this->configuration_info[$key]) && - isset($this->configuration_info[$key]['type']) && - $this->configuration_info[$key]['type'] == 'set') - { - $valid_set = $this->configuration_info[$key]['valid_set']; - reset($valid_set); - if (key($valid_set) === 0) { - return $valid_set; - } - return array_keys($valid_set); - } - return null; - } - - // }}} - // {{{ getKeys() - - /** - * Get all the current config keys. - * - * @return array simple array of config keys - * - * @access public - */ - function getKeys() - { - $keys = array(); - foreach ($this->layers as $layer) { - $test = $this->configuration[$layer]; - if (isset($test['__channels'])) { - foreach ($test['__channels'] as $channel => $configs) { - $keys = array_merge($keys, $configs); - } - } - unset($test['__channels']); - $keys = array_merge($keys, $test); - } - return array_keys($keys); - } - - // }}} - // {{{ remove(key, [layer]) - - /** - * Remove the a config key from a specific config layer. - * - * @param string config key - * - * @param string (optional) config layer - * - * @return bool TRUE on success, FALSE on failure - * - * @access public - */ - function remove($key, $layer = 'user') - { - $channel = $this->getDefaultChannel(); - if ($channel !== 'pear.php.net') { - if (isset($this->configuration[$layer]['__channels'][$channel][$key])) { - unset($this->configuration[$layer]['__channels'][$channel][$key]); - return true; - } - } - if (isset($this->configuration[$layer][$key])) { - unset($this->configuration[$layer][$key]); - return true; - } - return false; - } - - // }}} - // {{{ removeLayer(layer) - - /** - * Temporarily remove an entire config layer. USE WITH CARE! - * - * @param string config key - * - * @param string (optional) config layer - * - * @return bool TRUE on success, FALSE on failure - * - * @access public - */ - function removeLayer($layer) - { - if (isset($this->configuration[$layer])) { - $this->configuration[$layer] = array(); - return true; - } - return false; - } - - // }}} - // {{{ store([layer]) - - /** - * Stores configuration data in a layer. - * - * @param string config layer to store - * - * @return bool TRUE on success, or PEAR error on failure - * - * @access public - */ - function store($layer = 'user', $data = null) - { - return $this->writeConfigFile(null, $layer, $data); - } - - // }}} - // {{{ toDefault(key) - - /** - * Unset the user-defined value of a config key, reverting the - * value to the system-defined one. - * - * @param string config key - * - * @return bool TRUE on success, FALSE on failure - * - * @access public - */ - function toDefault($key) - { - trigger_error("PEAR_Config::toDefault() deprecated, use PEAR_Config::remove() instead", E_USER_NOTICE); - return $this->remove($key, 'user'); - } - - // }}} - // {{{ definedBy(key) - - /** - * Tells what config layer that gets to define a key. - * - * @param string config key - * @param boolean return the defining channel - * - * @return string|array the config layer, or an empty string if not found. - * - * if $returnchannel, the return is an array array('layer' => layername, - * 'channel' => channelname), or an empty string if not found - * - * @access public - */ - function definedBy($key, $returnchannel = false) - { - foreach ($this->layers as $layer) { - $channel = $this->getDefaultChannel(); - if ($channel !== 'pear.php.net') { - if (isset($this->configuration[$layer]['__channels'][$channel][$key])) { - if ($returnchannel) { - return array('layer' => $layer, 'channel' => $channel); - } - return $layer; - } - } - if (isset($this->configuration[$layer][$key])) { - if ($returnchannel) { - return array('layer' => $layer, 'channel' => 'pear.php.net'); - } - return $layer; - } - } - return ''; - } - - // }}} - // {{{ isDefaulted(key) - - /** - * Tells whether a config value has a system-defined value. - * - * @param string config key - * - * @return bool - * - * @access public - * - * @deprecated - */ - function isDefaulted($key) - { - trigger_error("PEAR_Config::isDefaulted() deprecated, use PEAR_Config::definedBy() instead", E_USER_NOTICE); - return $this->definedBy($key) == 'system'; - } - - // }}} - // {{{ isDefined(key) - - /** - * Tells whether a given key exists as a config value. - * - * @param string config key - * - * @return bool whether <config key> exists in this object - * - * @access public - */ - function isDefined($key) - { - foreach ($this->layers as $layer) { - if (isset($this->configuration[$layer][$key])) { - return true; - } - } - return false; - } - - // }}} - // {{{ isDefinedLayer(key) - - /** - * Tells whether a given config layer exists. - * - * @param string config layer - * - * @return bool whether <config layer> exists in this object - * - * @access public - */ - function isDefinedLayer($layer) - { - return isset($this->configuration[$layer]); - } - - // }}} - // {{{ getLayers() - - /** - * Returns the layers defined (except the 'default' one) - * - * @return array of the defined layers - */ - function getLayers() - { - $cf = $this->configuration; - unset($cf['default']); - return array_keys($cf); - } - - // }}} - // {{{ apiVersion() - function apiVersion() - { - return '1.1'; - } - // }}} - - /** - * @return PEAR_Registry - */ - function &getRegistry($use = null) - { - if ($use === null) { - $layer = 'user'; - } else { - $layer = $use; - } - if (isset($this->_registry[$layer])) { - return $this->_registry[$layer]; - } elseif ($use === null && isset($this->_registry['system'])) { - return $this->_registry['system']; - } elseif ($use === null && isset($this->_registry['default'])) { - return $this->_registry['default']; - } elseif ($use) { - $a = false; - return $a; - } else { - // only go here if null was passed in - echo "CRITICAL ERROR: Registry could not be initialized from any value"; - exit(1); - } - } - /** - * This is to allow customization like the use of installroot - * @param PEAR_Registry - * @return bool - */ - function setRegistry(&$reg, $layer = 'user') - { - if ($this->_noRegistry) { - return false; - } - if (!in_array($layer, array('user', 'system'))) { - return false; - } - $this->_registry[$layer] = &$reg; - if (is_object($reg)) { - $this->_registry[$layer]->setConfig($this, false); - } - return true; - } - - function noRegistry() - { - $this->_noRegistry = true; - } - - /** - * @return PEAR_Remote - */ - function &getRemote() - { - $remote = &new PEAR_Remote($this); - return $remote; - } - - /** - * @return PEAR_REST - */ - function &getREST($version, $options = array()) - { - $version = str_replace('.', '', $version); - if (!class_exists($class = 'PEAR_REST_' . $version)) { - require_once 'PEAR/REST/' . $version . '.php'; - } - $remote = &new $class($this, $options); - return $remote; - } - - /** - * The ftp server is set in {@link readFTPConfigFile()}. It exists only if a - * remote configuration file has been specified - * @return PEAR_FTP|false - */ - function &getFTP() - { - if (isset($this->_ftp)) { - return $this->_ftp; - } else { - $a = false; - return $a; - } - } - - // {{{ _prependPath($path, $prepend) - - function _prependPath($path, $prepend) - { - if (strlen($prepend) > 0) { - if (OS_WINDOWS && preg_match('/^[a-z]:/i', $path)) { - if (preg_match('/^[a-z]:/i', $prepend)) { - $prepend = substr($prepend, 2); - } elseif ($prepend{0} != '\\') { - $prepend = "\\$prepend"; - } - $path = substr($path, 0, 2) . $prepend . substr($path, 2); - } else { - $path = $prepend . $path; - } - } - return $path; - } - // }}} - - /** - * @param string|false installation directory to prepend to all _dir variables, or false to - * disable - */ - function setInstallRoot($root) - { - if (substr($root, -1) == DIRECTORY_SEPARATOR) { - $root = substr($root, 0, -1); - } - $old = $this->_installRoot; - $this->_installRoot = $root; - if (($old != $root) && !$this->_noRegistry) { - foreach (array_keys($this->_registry) as $layer) { - if ($layer == 'ftp' || !isset($this->_registry[$layer])) { - continue; - } - $this->_registry[$layer] = - &new PEAR_Registry($this->get('php_dir', $layer, 'pear.php.net')); - $this->_registry[$layer]->setConfig($this, false); - $this->_regInitialized[$layer] = false; - } - } - } -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Dependency.php b/src/vitis/vas/rest/class/PEAR/Dependency.php deleted file mode 100755 index 0265f6f75aeb22525238faf147a1dc67e532f532..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Dependency.php +++ /dev/null @@ -1,498 +0,0 @@ -<?php -/** - * PEAR_Dependency - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * THIS FILE IS DEPRECATED IN FAVOR OF DEPENDENCY2.PHP, AND IS NOT USED IN THE INSTALLER - * - * @category pear - * @package PEAR - * @author Tomas V.V.Cox <cox@idecnet.com> - * @author Stig Bakken <ssb@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Dependency.php,v 1.43 2008/01/03 20:26:34 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -require_once "PEAR.php"; -require_once "OS/Guess.php"; - -define('PEAR_DEPENDENCY_MISSING', -1); -define('PEAR_DEPENDENCY_CONFLICT', -2); -define('PEAR_DEPENDENCY_UPGRADE_MINOR', -3); -define('PEAR_DEPENDENCY_UPGRADE_MAJOR', -4); -define('PEAR_DEPENDENCY_BAD_DEPENDENCY', -5); -define('PEAR_DEPENDENCY_MISSING_OPTIONAL', -6); -define('PEAR_DEPENDENCY_CONFLICT_OPTIONAL', -7); -define('PEAR_DEPENDENCY_UPGRADE_MINOR_OPTIONAL', -8); -define('PEAR_DEPENDENCY_UPGRADE_MAJOR_OPTIONAL', -9); - -/** - * Dependency check for PEAR packages - * - * The class is based on the dependency RFC that can be found at - * http://cvs.php.net/cvs.php/pearweb/rfc. It requires PHP >= 4.1 - * - * @author Tomas V.V.Vox <cox@idecnet.com> - * @author Stig Bakken <ssb@php.net> - */ -class PEAR_Dependency -{ - // {{{ constructor - /** - * Constructor - * - * @access public - * @param object Registry object - * @return void - */ - function PEAR_Dependency(&$registry) - { - $this->registry = &$registry; - } - - // }}} - // {{{ callCheckMethod() - - /** - * This method maps the XML dependency definition to the - * corresponding one from PEAR_Dependency - * - * <pre> - * $opts => Array - * ( - * [type] => pkg - * [rel] => ge - * [version] => 3.4 - * [name] => HTML_Common - * [optional] => false - * ) - * </pre> - * - * @param string Error message - * @param array Options - * @return boolean - */ - function callCheckMethod(&$errmsg, $opts) - { - $rel = isset($opts['rel']) ? $opts['rel'] : 'has'; - $req = isset($opts['version']) ? $opts['version'] : null; - $name = isset($opts['name']) ? $opts['name'] : null; - $channel = isset($opts['channel']) ? $opts['channel'] : 'pear.php.net'; - $opt = (isset($opts['optional']) && $opts['optional'] == 'yes') ? - $opts['optional'] : null; - $errmsg = ''; - switch ($opts['type']) { - case 'pkg': - return $this->checkPackage($errmsg, $name, $req, $rel, $opt, $channel); - break; - case 'ext': - return $this->checkExtension($errmsg, $name, $req, $rel, $opt); - break; - case 'php': - return $this->checkPHP($errmsg, $req, $rel); - break; - case 'prog': - return $this->checkProgram($errmsg, $name); - break; - case 'os': - return $this->checkOS($errmsg, $name); - break; - case 'sapi': - return $this->checkSAPI($errmsg, $name); - break; - case 'zend': - return $this->checkZend($errmsg, $name); - break; - default: - return "'{$opts['type']}' dependency type not supported"; - } - } - - // }}} - // {{{ checkPackage() - - /** - * Package dependencies check method - * - * @param string $errmsg Empty string, it will be populated with an error message, if any - * @param string $name Name of the package to test - * @param string $req The package version required - * @param string $relation How to compare versions with each other - * @param bool $opt Whether the relationship is optional - * @param string $channel Channel name - * - * @return mixed bool false if no error or the error string - */ - function checkPackage(&$errmsg, $name, $req = null, $relation = 'has', - $opt = false, $channel = 'pear.php.net') - { - if (is_string($req) && substr($req, 0, 2) == 'v.') { - $req = substr($req, 2); - } - switch ($relation) { - case 'has': - if (!$this->registry->packageExists($name, $channel)) { - if ($opt) { - $errmsg = "package `$channel/$name' is recommended to utilize some features."; - return PEAR_DEPENDENCY_MISSING_OPTIONAL; - } - $errmsg = "requires package `$channel/$name'"; - return PEAR_DEPENDENCY_MISSING; - } - return false; - case 'not': - if ($this->registry->packageExists($name, $channel)) { - $errmsg = "conflicts with package `$channel/$name'"; - return PEAR_DEPENDENCY_CONFLICT; - } - return false; - case 'lt': - case 'le': - case 'eq': - case 'ne': - case 'ge': - case 'gt': - $version = $this->registry->packageInfo($name, 'version', $channel); - if (!$this->registry->packageExists($name, $channel) - || !version_compare("$version", "$req", $relation)) - { - $code = $this->codeFromRelation($relation, $version, $req, $opt); - if ($opt) { - $errmsg = "package `$channel/$name' version " . $this->signOperator($relation) . - " $req is recommended to utilize some features."; - if ($version) { - $errmsg .= " Installed version is $version"; - } - return $code; - } - $errmsg = "requires package `$channel/$name' " . - $this->signOperator($relation) . " $req"; - return $code; - } - return false; - } - $errmsg = "relation '$relation' with requirement '$req' is not supported (name=$channel/$name)"; - return PEAR_DEPENDENCY_BAD_DEPENDENCY; - } - - // }}} - // {{{ checkPackageUninstall() - - /** - * Check package dependencies on uninstall - * - * @param string $error The resultant error string - * @param string $warning The resultant warning string - * @param string $name Name of the package to test - * @param string $channel Channel name of the package - * - * @return bool true if there were errors - */ - function checkPackageUninstall(&$error, &$warning, $package, $channel = 'pear.php.net') - { - $channel = strtolower($channel); - $error = null; - $channels = $this->registry->listAllPackages(); - foreach ($channels as $channelname => $packages) { - foreach ($packages as $pkg) { - if ($pkg == $package && $channel == $channelname) { - continue; - } - $deps = $this->registry->packageInfo($pkg, 'release_deps', $channel); - if (empty($deps)) { - continue; - } - foreach ($deps as $dep) { - $depchannel = isset($dep['channel']) ? $dep['channel'] : 'pear.php.net'; - if ($dep['type'] == 'pkg' && (strcasecmp($dep['name'], $package) == 0) && - ($depchannel == $channel)) { - if ($dep['rel'] == 'ne') { - continue; - } - if (isset($dep['optional']) && $dep['optional'] == 'yes') { - $warning .= "\nWarning: Package '$depchannel/$pkg' optionally depends on '$channel:/package'"; - } else { - $error .= "Package '$depchannel/$pkg' depends on '$channel/$package'\n"; - } - } - } - } - } - return ($error) ? true : false; - } - - // }}} - // {{{ checkExtension() - - /** - * Extension dependencies check method - * - * @param string $name Name of the extension to test - * @param string $req_ext_ver Required extension version to compare with - * @param string $relation How to compare versions with eachother - * @param bool $opt Whether the relationship is optional - * - * @return mixed bool false if no error or the error string - */ - function checkExtension(&$errmsg, $name, $req = null, $relation = 'has', - $opt = false) - { - if ($relation == 'not') { - if (extension_loaded($name)) { - $errmsg = "conflicts with PHP extension '$name'"; - return PEAR_DEPENDENCY_CONFLICT; - } else { - return false; - } - } - - if (!extension_loaded($name)) { - if ($relation == 'ne') { - return false; - } - if ($opt) { - $errmsg = "'$name' PHP extension is recommended to utilize some features"; - return PEAR_DEPENDENCY_MISSING_OPTIONAL; - } - $errmsg = "'$name' PHP extension is not installed"; - return PEAR_DEPENDENCY_MISSING; - } - if ($relation == 'has') { - return false; - } - $code = false; - if (is_string($req) && substr($req, 0, 2) == 'v.') { - $req = substr($req, 2); - } - $ext_ver = phpversion($name); - $operator = $relation; - // Force params to be strings, otherwise the comparation will fail (ex. 0.9==0.90) - if (!version_compare("$ext_ver", "$req", $operator)) { - $errmsg = "'$name' PHP extension version " . - $this->signOperator($operator) . " $req is required"; - $code = $this->codeFromRelation($relation, $ext_ver, $req, $opt); - if ($opt) { - $errmsg = "'$name' PHP extension version " . $this->signOperator($operator) . - " $req is recommended to utilize some features"; - return $code; - } - } - return $code; - } - - // }}} - // {{{ checkOS() - - /** - * Operating system dependencies check method - * - * @param string $os Name of the operating system - * - * @return mixed bool false if no error or the error string - */ - function checkOS(&$errmsg, $os) - { - // XXX Fixme: Implement a more flexible way, like - // comma separated values or something similar to PEAR_OS - static $myos; - if (empty($myos)) { - $myos = new OS_Guess(); - } - // only 'has' relation is currently supported - if ($myos->matchSignature($os)) { - return false; - } - $errmsg = "'$os' operating system not supported"; - return PEAR_DEPENDENCY_CONFLICT; - } - - // }}} - // {{{ checkPHP() - - /** - * PHP version check method - * - * @param string $req which version to compare - * @param string $relation how to compare the version - * - * @return mixed bool false if no error or the error string - */ - function checkPHP(&$errmsg, $req, $relation = 'ge') - { - // this would be a bit stupid, but oh well :) - if ($relation == 'has') { - return false; - } - if ($relation == 'not') { - $errmsg = "Invalid dependency - 'not' is allowed when specifying PHP, you must run PHP in PHP"; - return PEAR_DEPENDENCY_BAD_DEPENDENCY; - } - if (substr($req, 0, 2) == 'v.') { - $req = substr($req,2, strlen($req) - 2); - } - $php_ver = phpversion(); - $operator = $relation; - if (!version_compare("$php_ver", "$req", $operator)) { - $errmsg = "PHP version " . $this->signOperator($operator) . - " $req is required"; - return PEAR_DEPENDENCY_CONFLICT; - } - return false; - } - - // }}} - // {{{ checkProgram() - - /** - * External program check method. Looks for executable files in - * directories listed in the PATH environment variable. - * - * @param string $program which program to look for - * - * @return mixed bool false if no error or the error string - */ - function checkProgram(&$errmsg, $program) - { - // XXX FIXME honor safe mode - $exe_suffix = OS_WINDOWS ? '.exe' : ''; - $path_elements = explode(PATH_SEPARATOR, getenv('PATH')); - foreach ($path_elements as $dir) { - $file = $dir . DIRECTORY_SEPARATOR . $program . $exe_suffix; - if (file_exists($file) && is_executable($file)) { - return false; - } - } - $errmsg = "'$program' program is not present in the PATH"; - return PEAR_DEPENDENCY_MISSING; - } - - // }}} - // {{{ checkSAPI() - - /** - * SAPI backend check method. Version comparison is not yet - * available here. - * - * @param string $name name of SAPI backend - * @param string $req which version to compare - * @param string $relation how to compare versions (currently - * hardcoded to 'has') - * @return mixed bool false if no error or the error string - */ - function checkSAPI(&$errmsg, $name, $req = null, $relation = 'has') - { - // XXX Fixme: There is no way to know if the user has or - // not other SAPI backends installed than the installer one - - $sapi_backend = php_sapi_name(); - // Version comparisons not supported, sapi backends don't have - // version information yet. - if ($sapi_backend == $name) { - return false; - } - $errmsg = "'$sapi_backend' SAPI backend not supported"; - return PEAR_DEPENDENCY_CONFLICT; - } - - // }}} - // {{{ checkZend() - - /** - * Zend version check method - * - * @param string $req which version to compare - * @param string $relation how to compare the version - * - * @return mixed bool false if no error or the error string - */ - function checkZend(&$errmsg, $req, $relation = 'ge') - { - if (substr($req, 0, 2) == 'v.') { - $req = substr($req,2, strlen($req) - 2); - } - $zend_ver = zend_version(); - $operator = substr($relation,0,2); - if (!version_compare("$zend_ver", "$req", $operator)) { - $errmsg = "Zend version " . $this->signOperator($operator) . - " $req is required"; - return PEAR_DEPENDENCY_CONFLICT; - } - return false; - } - - // }}} - // {{{ signOperator() - - /** - * Converts text comparing operators to them sign equivalents - * - * Example: 'ge' to '>=' - * - * @access public - * @param string Operator - * @return string Sign equivalent - */ - function signOperator($operator) - { - switch($operator) { - case 'lt': return '<'; - case 'le': return '<='; - case 'gt': return '>'; - case 'ge': return '>='; - case 'eq': return '=='; - case 'ne': return '!='; - default: - return $operator; - } - } - - // }}} - // {{{ codeFromRelation() - - /** - * Convert relation into corresponding code - * - * @access public - * @param string Relation - * @param string Version - * @param string Requirement - * @param bool Optional dependency indicator - * @return integer - */ - function codeFromRelation($relation, $version, $req, $opt = false) - { - $code = PEAR_DEPENDENCY_BAD_DEPENDENCY; - switch ($relation) { - case 'gt': case 'ge': case 'eq': - // upgrade - $have_major = preg_replace('/\D.*/', '', $version); - $need_major = preg_replace('/\D.*/', '', $req); - if ($need_major > $have_major) { - $code = $opt ? PEAR_DEPENDENCY_UPGRADE_MAJOR_OPTIONAL : - PEAR_DEPENDENCY_UPGRADE_MAJOR; - } else { - $code = $opt ? PEAR_DEPENDENCY_UPGRADE_MINOR_OPTIONAL : - PEAR_DEPENDENCY_UPGRADE_MINOR; - } - break; - case 'lt': case 'le': case 'ne': - $code = $opt ? PEAR_DEPENDENCY_CONFLICT_OPTIONAL : - PEAR_DEPENDENCY_CONFLICT; - break; - } - return $code; - } - - // }}} -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/Dependency2.php b/src/vitis/vas/rest/class/PEAR/Dependency2.php deleted file mode 100755 index 802e9bfa20787e6a8f49ef4c9bc805aeba7b980c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Dependency2.php +++ /dev/null @@ -1,1299 +0,0 @@ -<?php -/** - * PEAR_Dependency2, advanced dependency validation - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Dependency2.php,v 1.56 2008/01/03 20:26:35 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Required for the PEAR_VALIDATE_* constants - */ -require_once 'PEAR/Validate.php'; - -/** - * Dependency check for PEAR packages - * - * This class handles both version 1.0 and 2.0 dependencies - * WARNING: *any* changes to this class must be duplicated in the - * test_PEAR_Dependency2 class found in tests/PEAR_Dependency2/setup.php.inc, - * or unit tests will not actually validate the changes - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Dependency2 -{ - /** - * One of the PEAR_VALIDATE_* states - * @see PEAR_VALIDATE_NORMAL - * @var integer - */ - var $_state; - /** - * Command-line options to install/upgrade/uninstall commands - * @param array - */ - var $_options; - /** - * @var OS_Guess - */ - var $_os; - /** - * @var PEAR_Registry - */ - var $_registry; - /** - * @var PEAR_Config - */ - var $_config; - /** - * @var PEAR_DependencyDB - */ - var $_dependencydb; - /** - * Output of PEAR_Registry::parsedPackageName() - * @var array - */ - var $_currentPackage; - /** - * @param PEAR_Config - * @param array installation options - * @param array format of PEAR_Registry::parsedPackageName() - * @param int installation state (one of PEAR_VALIDATE_*) - */ - function PEAR_Dependency2(&$config, $installoptions, $package, - $state = PEAR_VALIDATE_INSTALLING) - { - $this->_config = &$config; - if (!class_exists('PEAR_DependencyDB')) { - require_once 'PEAR/DependencyDB.php'; - } - if (isset($installoptions['packagingroot'])) { - // make sure depdb is in the right location - $config->setInstallRoot($installoptions['packagingroot']); - } - $this->_registry = &$config->getRegistry(); - $this->_dependencydb = &PEAR_DependencyDB::singleton($config); - if (isset($installoptions['packagingroot'])) { - $config->setInstallRoot(false); - } - $this->_options = $installoptions; - $this->_state = $state; - if (!class_exists('OS_Guess')) { - require_once 'OS/Guess.php'; - } - $this->_os = new OS_Guess; - $this->_currentPackage = $package; - } - - function _getExtraString($dep) - { - $extra = ' ('; - if (isset($dep['uri'])) { - return ''; - } - if (isset($dep['recommended'])) { - $extra .= 'recommended version ' . $dep['recommended']; - } else { - if (isset($dep['min'])) { - $extra .= 'version >= ' . $dep['min']; - } - if (isset($dep['max'])) { - if ($extra != ' (') { - $extra .= ', '; - } - $extra .= 'version <= ' . $dep['max']; - } - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - if ($extra != ' (') { - $extra .= ', '; - } - $extra .= 'excluded versions: '; - foreach ($dep['exclude'] as $i => $exclude) { - if ($i) { - $extra .= ', '; - } - $extra .= $exclude; - } - } - } - $extra .= ')'; - if ($extra == ' ()') { - $extra = ''; - } - return $extra; - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function getPHP_OS() - { - return PHP_OS; - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function getsysname() - { - return $this->_os->getSysname(); - } - - /** - * Specify a dependency on an OS. Use arch for detailed os/processor information - * - * There are two generic OS dependencies that will be the most common, unix and windows. - * Other options are linux, freebsd, darwin (OS X), sunos, irix, hpux, aix - */ - function validateOsDependency($dep) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING && - $this->_state != PEAR_VALIDATE_DOWNLOADING) { - return true; - } - if (isset($dep['conflicts'])) { - $not = true; - } else { - $not = false; - } - if ($dep['name'] == '*') { - return true; - } - switch (strtolower($dep['name'])) { - case 'windows' : - if ($not) { - if (strtolower(substr($this->getPHP_OS(), 0, 3)) == 'win') { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError("Cannot install %s on Windows"); - } else { - return $this->warning("warning: Cannot install %s on Windows"); - } - } - } else { - if (strtolower(substr($this->getPHP_OS(), 0, 3)) != 'win') { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError("Can only install %s on Windows"); - } else { - return $this->warning("warning: Can only install %s on Windows"); - } - } - } - break; - case 'unix' : - $unices = array('linux', 'freebsd', 'darwin', 'sunos', 'irix', 'hpux', 'aix'); - if ($not) { - if (in_array($this->getSysname(), $unices)) { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError("Cannot install %s on any Unix system"); - } else { - return $this->warning( - "warning: Cannot install %s on any Unix system"); - } - } - } else { - if (!in_array($this->getSysname(), $unices)) { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError("Can only install %s on a Unix system"); - } else { - return $this->warning( - "warning: Can only install %s on a Unix system"); - } - } - } - break; - default : - if ($not) { - if (strtolower($dep['name']) == strtolower($this->getSysname())) { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError('Cannot install %s on ' . $dep['name'] . - ' operating system'); - } else { - return $this->warning('warning: Cannot install %s on ' . - $dep['name'] . ' operating system'); - } - } - } else { - if (strtolower($dep['name']) != strtolower($this->getSysname())) { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError('Cannot install %s on ' . - $this->getSysname() . - ' operating system, can only install on ' . $dep['name']); - } else { - return $this->warning('warning: Cannot install %s on ' . - $this->getSysname() . - ' operating system, can only install on ' . $dep['name']); - } - } - } - } - return true; - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function matchSignature($pattern) - { - return $this->_os->matchSignature($pattern); - } - - /** - * Specify a complex dependency on an OS/processor/kernel version, - * Use OS for simple operating system dependency. - * - * This is the only dependency that accepts an eregable pattern. The pattern - * will be matched against the php_uname() output parsed by OS_Guess - */ - function validateArchDependency($dep) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING) { - return true; - } - if (isset($dep['conflicts'])) { - $not = true; - } else { - $not = false; - } - if (!$this->matchSignature($dep['pattern'])) { - if (!$not) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s Architecture dependency failed, does not ' . - 'match "' . $dep['pattern'] . '"'); - } else { - return $this->warning('warning: %s Architecture dependency failed, does ' . - 'not match "' . $dep['pattern'] . '"'); - } - } - return true; - } else { - if ($not) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s Architecture dependency failed, required "' . - $dep['pattern'] . '"'); - } else { - return $this->warning('warning: %s Architecture dependency failed, ' . - 'required "' . $dep['pattern'] . '"'); - } - } - return true; - } - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function extension_loaded($name) - { - return extension_loaded($name); - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function phpversion($name = null) - { - if ($name !== null) { - return phpversion($name); - } else { - return phpversion(); - } - } - - function validateExtensionDependency($dep, $required = true) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING && - $this->_state != PEAR_VALIDATE_DOWNLOADING) { - return true; - } - $loaded = $this->extension_loaded($dep['name']); - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - } - if (!isset($dep['min']) && !isset($dep['max']) && - !isset($dep['recommended']) && !isset($dep['exclude'])) { - if ($loaded) { - if (isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra); - } else { - return $this->warning('warning: %s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra); - } - } - return true; - } else { - if (isset($dep['conflicts'])) { - return true; - } - if ($required) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP extension "' . - $dep['name'] . '"' . $extra); - } else { - return $this->warning('warning: %s requires PHP extension "' . - $dep['name'] . '"' . $extra); - } - } else { - return $this->warning('%s can optionally use PHP extension "' . - $dep['name'] . '"' . $extra); - } - } - } - if (!$loaded) { - if (isset($dep['conflicts'])) { - return true; - } - if (!$required) { - return $this->warning('%s can optionally use PHP extension "' . - $dep['name'] . '"' . $extra); - } else { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP extension "' . $dep['name'] . - '"' . $extra); - } - return $this->warning('warning: %s requires PHP extension "' . $dep['name'] . - '"' . $extra); - } - } - $version = (string) $this->phpversion($dep['name']); - if (empty($version)) { - $version = '0'; - } - $fail = false; - if (isset($dep['min'])) { - if (!version_compare($version, $dep['min'], '>=')) { - $fail = true; - } - } - if (isset($dep['max'])) { - if (!version_compare($version, $dep['max'], '<=')) { - $fail = true; - } - } - if ($fail && !isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP extension "' . $dep['name'] . - '"' . $extra . ', installed version is ' . $version); - } else { - return $this->warning('warning: %s requires PHP extension "' . $dep['name'] . - '"' . $extra . ', installed version is ' . $version); - } - } elseif ((isset($dep['min']) || isset($dep['max'])) && !$fail && isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra . ', installed version is ' . $version); - } else { - return $this->warning('warning: %s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra . ', installed version is ' . $version); - } - } - if (isset($dep['exclude'])) { - foreach ($dep['exclude'] as $exclude) { - if (version_compare($version, $exclude, '==')) { - if (isset($dep['conflicts'])) { - continue; - } - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError('%s is not compatible with PHP extension "' . - $dep['name'] . '" version ' . - $exclude); - } else { - return $this->warning('warning: %s is not compatible with PHP extension "' . - $dep['name'] . '" version ' . - $exclude); - } - } elseif (version_compare($version, $exclude, '!=') && isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra . ', installed version is ' . $version); - } else { - return $this->warning('warning: %s conflicts with PHP extension "' . - $dep['name'] . '"' . $extra . ', installed version is ' . $version); - } - } - } - } - if (isset($dep['recommended'])) { - if (version_compare($version, $dep['recommended'], '==')) { - return true; - } else { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s dependency: PHP extension ' . $dep['name'] . - ' version "' . $version . '"' . - ' is not the recommended version "' . $dep['recommended'] . - '", but may be compatible, use --force to install'); - } else { - return $this->warning('warning: %s dependency: PHP extension ' . - $dep['name'] . ' version "' . $version . '"' . - ' is not the recommended version "' . $dep['recommended'].'"'); - } - } - } - return true; - } - - function validatePhpDependency($dep) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING && - $this->_state != PEAR_VALIDATE_DOWNLOADING) { - return true; - } - $version = $this->phpversion(); - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - } - if (isset($dep['min'])) { - if (!version_compare($version, $dep['min'], '>=')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP' . - $extra . ', installed version is ' . $version); - } else { - return $this->warning('warning: %s requires PHP' . - $extra . ', installed version is ' . $version); - } - } - } - if (isset($dep['max'])) { - if (!version_compare($version, $dep['max'], '<=')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PHP' . - $extra . ', installed version is ' . $version); - } else { - return $this->warning('warning: %s requires PHP' . - $extra . ', installed version is ' . $version); - } - } - } - if (isset($dep['exclude'])) { - foreach ($dep['exclude'] as $exclude) { - if (version_compare($version, $exclude, '==')) { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError('%s is not compatible with PHP version ' . - $exclude); - } else { - return $this->warning( - 'warning: %s is not compatible with PHP version ' . - $exclude); - } - } - } - } - return true; - } - - /** - * This makes unit-testing a heck of a lot easier - */ - function getPEARVersion() - { - return '1.7.2'; - } - - function validatePearinstallerDependency($dep) - { - $pearversion = $this->getPEARVersion(); - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - } - if (version_compare($pearversion, $dep['min'], '<')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PEAR Installer' . $extra . - ', installed version is ' . $pearversion); - } else { - return $this->warning('warning: %s requires PEAR Installer' . $extra . - ', installed version is ' . $pearversion); - } - } - if (isset($dep['max'])) { - if (version_compare($pearversion, $dep['max'], '>')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires PEAR Installer' . $extra . - ', installed version is ' . $pearversion); - } else { - return $this->warning('warning: %s requires PEAR Installer' . $extra . - ', installed version is ' . $pearversion); - } - } - } - if (isset($dep['exclude'])) { - if (!isset($dep['exclude'][0])) { - $dep['exclude'] = array($dep['exclude']); - } - foreach ($dep['exclude'] as $exclude) { - if (version_compare($exclude, $pearversion, '==')) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s is not compatible with PEAR Installer ' . - 'version ' . $exclude); - } else { - return $this->warning('warning: %s is not compatible with PEAR ' . - 'Installer version ' . $exclude); - } - } - } - } - return true; - } - - function validateSubpackageDependency($dep, $required, $params) - { - return $this->validatePackageDependency($dep, $required, $params); - } - - /** - * @param array dependency information (2.0 format) - * @param boolean whether this is a required dependency - * @param array a list of downloaded packages to be installed, if any - * @param boolean if true, then deps on pear.php.net that fail will also check - * against pecl.php.net packages to accomodate extensions that have - * moved to pecl.php.net from pear.php.net - */ - function validatePackageDependency($dep, $required, $params, $depv1 = false) - { - if ($this->_state != PEAR_VALIDATE_INSTALLING && - $this->_state != PEAR_VALIDATE_DOWNLOADING) { - return true; - } - if (isset($dep['providesextension'])) { - if ($this->extension_loaded($dep['providesextension'])) { - $save = $dep; - $subdep = $dep; - $subdep['name'] = $subdep['providesextension']; - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $ret = $this->validateExtensionDependency($subdep, $required); - PEAR::popErrorHandling(); - if (!PEAR::isError($ret)) { - return true; - } - } - } - if ($this->_state == PEAR_VALIDATE_INSTALLING) { - return $this->_validatePackageInstall($dep, $required, $depv1); - } - if ($this->_state == PEAR_VALIDATE_DOWNLOADING) { - return $this->_validatePackageDownload($dep, $required, $params, $depv1); - } - } - - function _validatePackageDownload($dep, $required, $params, $depv1 = false) - { - $dep['package'] = $dep['name']; - if (isset($dep['uri'])) { - $dep['channel'] = '__uri'; - } - $depname = $this->_registry->parsedPackageNameToString($dep, true); - $found = false; - foreach ($params as $param) { - if ($param->isEqual( - array('package' => $dep['name'], - 'channel' => $dep['channel']))) { - $found = true; - break; - } - if ($depv1 && $dep['channel'] == 'pear.php.net') { - if ($param->isEqual( - array('package' => $dep['name'], - 'channel' => 'pecl.php.net'))) { - $found = true; - break; - } - } - } - if (!$found && isset($dep['providesextension'])) { - foreach ($params as $param) { - if ($param->isExtension($dep['providesextension'])) { - $found = true; - break; - } - } - } - if ($found) { - $version = $param->getVersion(); - $installed = false; - $downloaded = true; - } else { - if ($this->_registry->packageExists($dep['name'], $dep['channel'])) { - $installed = true; - $downloaded = false; - $version = $this->_registry->packageinfo($dep['name'], 'version', - $dep['channel']); - } else { - if ($dep['channel'] == 'pecl.php.net' && $this->_registry->packageExists($dep['name'], - 'pear.php.net')) { - $installed = true; - $downloaded = false; - $version = $this->_registry->packageinfo($dep['name'], 'version', - 'pear.php.net'); - } else { - $version = 'not installed or downloaded'; - $installed = false; - $downloaded = false; - } - } - } - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - } - if (!isset($dep['min']) && !isset($dep['max']) && - !isset($dep['recommended']) && !isset($dep['exclude'])) { - if ($installed || $downloaded) { - $installed = $installed ? 'installed' : 'downloaded'; - if (isset($dep['conflicts'])) { - if ($version) { - $rest = ", $installed version is " . $version; - } else { - $rest = ''; - } - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with package "' . $depname . '"' . - $extra . $rest); - } else { - return $this->warning('warning: %s conflicts with package "' . $depname . '"' . - $extra . $rest); - } - } - return true; - } else { - if (isset($dep['conflicts'])) { - return true; - } - if ($required) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires package "' . $depname . '"' . - $extra); - } else { - return $this->warning('warning: %s requires package "' . $depname . '"' . - $extra); - } - } else { - return $this->warning('%s can optionally use package "' . $depname . '"' . - $extra); - } - } - } - if (!$installed && !$downloaded) { - if (isset($dep['conflicts'])) { - return true; - } - if ($required) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires package "' . $depname . '"' . - $extra); - } else { - return $this->warning('warning: %s requires package "' . $depname . '"' . - $extra); - } - } else { - return $this->warning('%s can optionally use package "' . $depname . '"' . - $extra); - } - } - $fail = false; - if (isset($dep['min'])) { - if (version_compare($version, $dep['min'], '<')) { - $fail = true; - } - } - if (isset($dep['max'])) { - if (version_compare($version, $dep['max'], '>')) { - $fail = true; - } - } - if ($fail && !isset($dep['conflicts'])) { - $installed = $installed ? 'installed' : 'downloaded'; - $dep['package'] = $dep['name']; - $dep = $this->_registry->parsedPackageNameToString($dep, true); - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s requires package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } else { - return $this->warning('warning: %s requires package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } - } elseif ((isset($dep['min']) || isset($dep['max'])) && !$fail && - isset($dep['conflicts']) && !isset($dep['exclude'])) { - $installed = $installed ? 'installed' : 'downloaded'; - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with package "' . $depname . '"' . $extra . - ", $installed version is " . $version); - } else { - return $this->warning('warning: %s conflicts with package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } - } - if (isset($dep['exclude'])) { - $installed = $installed ? 'installed' : 'downloaded'; - foreach ($dep['exclude'] as $exclude) { - if (version_compare($version, $exclude, '==') && !isset($dep['conflicts'])) { - if (!isset($this->_options['nodeps']) && - !isset($this->_options['force'])) { - return $this->raiseError('%s is not compatible with ' . - $installed . ' package "' . - $depname . '" version ' . - $exclude); - } else { - return $this->warning('warning: %s is not compatible with ' . - $installed . ' package "' . - $depname . '" version ' . - $exclude); - } - } elseif (version_compare($version, $exclude, '!=') && isset($dep['conflicts'])) { - $installed = $installed ? 'installed' : 'downloaded'; - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('%s conflicts with package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } else { - return $this->warning('warning: %s conflicts with package "' . $depname . '"' . - $extra . ", $installed version is " . $version); - } - } - } - } - if (isset($dep['recommended'])) { - $installed = $installed ? 'installed' : 'downloaded'; - if (version_compare($version, $dep['recommended'], '==')) { - return true; - } else { - if (!$found && $installed) { - $param = $this->_registry->getPackage($dep['name'], $dep['channel']); - } - if ($param) { - $found = false; - foreach ($params as $parent) { - if ($parent->isEqual($this->_currentPackage)) { - $found = true; - break; - } - } - if ($found) { - if ($param->isCompatible($parent)) { - return true; - } - } else { // this is for validPackage() calls - $parent = $this->_registry->getPackage($this->_currentPackage['package'], - $this->_currentPackage['channel']); - if ($parent !== null) { - if ($param->isCompatible($parent)) { - return true; - } - } - } - } - if (!isset($this->_options['nodeps']) && !isset($this->_options['force']) && - !isset($this->_options['loose'])) { - return $this->raiseError('%s dependency package "' . $depname . - '" ' . $installed . ' version ' . $version . - ' is not the recommended version ' . $dep['recommended'] . - ', but may be compatible, use --force to install'); - } else { - return $this->warning('warning: %s dependency package "' . $depname . - '" ' . $installed . ' version ' . $version . - ' is not the recommended version ' . $dep['recommended']); - } - } - } - return true; - } - - function _validatePackageInstall($dep, $required, $depv1 = false) - { - return $this->_validatePackageDownload($dep, $required, array(), $depv1); - } - - /** - * Verify that uninstalling packages passed in to command line is OK. - * - * @param PEAR_Installer $dl - * @return PEAR_Error|true - */ - function validatePackageUninstall(&$dl) - { - if (PEAR::isError($this->_dependencydb)) { - return $this->_dependencydb; - } - $params = array(); - // construct an array of "downloaded" packages to fool the package dependency checker - // into using these to validate uninstalls of circular dependencies - $downloaded = &$dl->getUninstallPackages(); - foreach ($downloaded as $i => $pf) { - if (!class_exists('PEAR_Downloader_Package')) { - require_once 'PEAR/Downloader/Package.php'; - } - $dp = &new PEAR_Downloader_Package($dl); - $dp->setPackageFile($downloaded[$i]); - $params[$i] = &$dp; - } - // check cache - $memyselfandI = strtolower($this->_currentPackage['channel']) . '/' . - strtolower($this->_currentPackage['package']); - if (isset($dl->___uninstall_package_cache)) { - $badpackages = $dl->___uninstall_package_cache; - if (isset($badpackages[$memyselfandI]['warnings'])) { - foreach ($badpackages[$memyselfandI]['warnings'] as $warning) { - $dl->log(0, $warning[0]); - } - } - if (isset($badpackages[$memyselfandI]['errors'])) { - foreach ($badpackages[$memyselfandI]['errors'] as $error) { - if (is_array($error)) { - $dl->log(0, $error[0]); - } else { - $dl->log(0, $error->getMessage()); - } - } - if (isset($this->_options['nodeps']) || isset($this->_options['force'])) { - return $this->warning( - 'warning: %s should not be uninstalled, other installed packages depend ' . - 'on this package'); - } else { - return $this->raiseError( - '%s cannot be uninstalled, other installed packages depend on this package'); - } - } - return true; - } - // first, list the immediate parents of each package to be uninstalled - $perpackagelist = array(); - $allparents = array(); - foreach ($params as $i => $param) { - $a = array('channel' => strtolower($param->getChannel()), - 'package' => strtolower($param->getPackage())); - $deps = $this->_dependencydb->getDependentPackages($a); - if ($deps) { - foreach ($deps as $d) { - $pardeps = $this->_dependencydb->getDependencies($d); - foreach ($pardeps as $dep) { - if (strtolower($dep['dep']['channel']) == $a['channel'] && - strtolower($dep['dep']['name']) == $a['package']) { - if (!isset($perpackagelist[$a['channel'] . '/' . $a['package']])) { - $perpackagelist[$a['channel'] . '/' . $a['package']] = array(); - } - $perpackagelist[$a['channel'] . '/' . $a['package']][] - = array($d['channel'] . '/' . $d['package'], $dep); - if (!isset($allparents[$d['channel'] . '/' . $d['package']])) { - $allparents[$d['channel'] . '/' . $d['package']] = array(); - } - if (!isset($allparents[$d['channel'] . '/' . $d['package']][$a['channel'] . '/' . $a['package']])) { - $allparents[$d['channel'] . '/' . $d['package']][$a['channel'] . '/' . $a['package']] = array(); - } - $allparents[$d['channel'] . '/' . $d['package']] - [$a['channel'] . '/' . $a['package']][] - = array($d, $dep); - } - } - } - } - } - // next, remove any packages from the parents list that are not installed - $remove = array(); - foreach ($allparents as $parent => $d1) { - foreach ($d1 as $d) { - if ($this->_registry->packageExists($d[0][0]['package'], $d[0][0]['channel'])) { - continue; - } - $remove[$parent] = true; - } - } - // next remove any packages from the parents list that are not passed in for - // uninstallation - foreach ($allparents as $parent => $d1) { - foreach ($d1 as $d) { - foreach ($params as $param) { - if (strtolower($param->getChannel()) == $d[0][0]['channel'] && - strtolower($param->getPackage()) == $d[0][0]['package']) { - // found it - continue 3; - } - } - $remove[$parent] = true; - } - } - // remove all packages whose dependencies fail - // save which ones failed for error reporting - $badchildren = array(); - do { - $fail = false; - foreach ($remove as $package => $unused) { - if (!isset($allparents[$package])) { - continue; - } - foreach ($allparents[$package] as $kid => $d1) { - foreach ($d1 as $depinfo) { - if ($depinfo[1]['type'] != 'optional') { - if (isset($badchildren[$kid])) { - continue; - } - $badchildren[$kid] = true; - $remove[$kid] = true; - $fail = true; - continue 2; - } - } - } - if ($fail) { - // start over, we removed some children - continue 2; - } - } - } while ($fail); - // next, construct the list of packages that can't be uninstalled - $badpackages = array(); - $save = $this->_currentPackage; - foreach ($perpackagelist as $package => $packagedeps) { - foreach ($packagedeps as $parent) { - if (!isset($remove[$parent[0]])) { - continue; - } - $packagename = $this->_registry->parsePackageName($parent[0]); - $packagename['channel'] = $this->_registry->channelAlias($packagename['channel']); - $pa = $this->_registry->getPackage($packagename['package'], $packagename['channel']); - $packagename['package'] = $pa->getPackage(); - $this->_currentPackage = $packagename; - // parent is not present in uninstall list, make sure we can actually - // uninstall it (parent dep is optional) - $parentname['channel'] = $this->_registry->channelAlias($parent[1]['dep']['channel']); - $pa = $this->_registry->getPackage($parent[1]['dep']['name'], $parent[1]['dep']['channel']); - $parentname['package'] = $pa->getPackage(); - $parent[1]['dep']['package'] = $parentname['package']; - $parent[1]['dep']['channel'] = $parentname['channel']; - if ($parent[1]['type'] == 'optional') { - $test = $this->_validatePackageUninstall($parent[1]['dep'], false, $dl); - if ($test !== true) { - $badpackages[$package]['warnings'][] = $test; - } - } else { - $test = $this->_validatePackageUninstall($parent[1]['dep'], true, $dl); - if ($test !== true) { - $badpackages[$package]['errors'][] = $test; - } - } - } - } - $this->_currentPackage = $save; - $dl->___uninstall_package_cache = $badpackages; - if (isset($badpackages[$memyselfandI])) { - if (isset($badpackages[$memyselfandI]['warnings'])) { - foreach ($badpackages[$memyselfandI]['warnings'] as $warning) { - $dl->log(0, $warning[0]); - } - } - if (isset($badpackages[$memyselfandI]['errors'])) { - foreach ($badpackages[$memyselfandI]['errors'] as $error) { - if (is_array($error)) { - $dl->log(0, $error[0]); - } else { - $dl->log(0, $error->getMessage()); - } - } - if (isset($this->_options['nodeps']) || isset($this->_options['force'])) { - return $this->warning( - 'warning: %s should not be uninstalled, other installed packages depend ' . - 'on this package'); - } else { - return $this->raiseError( - '%s cannot be uninstalled, other installed packages depend on this package'); - } - } - } - return true; - } - - function _validatePackageUninstall($dep, $required, $dl) - { - $depname = $this->_registry->parsedPackageNameToString($dep, true); - $version = $this->_registry->packageinfo($dep['package'], 'version', - $dep['channel']); - if (!$version) { - return true; - } - $extra = $this->_getExtraString($dep); - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - } - if (isset($dep['conflicts'])) { - return true; // uninstall OK - these packages conflict (probably installed with --force) - } - if (!isset($dep['min']) && !isset($dep['max'])) { - if ($required) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError('"' . $depname . '" is required by ' . - 'installed package %s' . $extra); - } else { - return $this->warning('warning: "' . $depname . '" is required by ' . - 'installed package %s' . $extra); - } - } else { - return $this->warning('"' . $depname . '" can be optionally used by ' . - 'installed package %s' . $extra); - } - } - $fail = false; - if (isset($dep['min'])) { - if (version_compare($version, $dep['min'], '>=')) { - $fail = true; - } - } - if (isset($dep['max'])) { - if (version_compare($version, $dep['max'], '<=')) { - $fail = true; - } - } - // we re-use this variable, preserve the original value - $saverequired = $required; - if ($required) { - if (!isset($this->_options['nodeps']) && !isset($this->_options['force'])) { - return $this->raiseError($depname . $extra . ' is required by installed package' . - ' "%s"'); - } else { - return $this->raiseError('warning: ' . $depname . $extra . - ' is required by installed package "%s"'); - } - } else { - return $this->warning($depname . $extra . ' can be optionally used by installed package' . - ' "%s"'); - } - return true; - } - - /** - * validate a downloaded package against installed packages - * - * As of PEAR 1.4.3, this will only validate - * - * @param array|PEAR_Downloader_Package|PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * $pkg package identifier (either - * array('package' => blah, 'channel' => blah) or an array with - * index 'info' referencing an object) - * @param PEAR_Downloader $dl - * @param array $params full list of packages to install - * @return true|PEAR_Error - */ - function validatePackage($pkg, &$dl, $params = array()) - { - if (is_array($pkg) && isset($pkg['info'])) { - $deps = $this->_dependencydb->getDependentPackageDependencies($pkg['info']); - } else { - $deps = $this->_dependencydb->getDependentPackageDependencies($pkg); - } - $fail = false; - if ($deps) { - if (!class_exists('PEAR_Downloader_Package')) { - require_once 'PEAR/Downloader/Package.php'; - } - $dp = &new PEAR_Downloader_Package($dl); - if (is_object($pkg)) { - $dp->setPackageFile($pkg); - } else { - $dp->setDownloadURL($pkg); - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - foreach ($deps as $channel => $info) { - foreach ($info as $package => $ds) { - foreach ($params as $packd) { - if (strtolower($packd->getPackage()) == strtolower($package) && - $packd->getChannel() == $channel) { - $dl->log(3, 'skipping installed package check of "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $channel, 'package' => $package), - true) . - '", version "' . $packd->getVersion() . '" will be ' . - 'downloaded and installed'); - continue 2; // jump to next package - } - } - foreach ($ds as $d) { - $checker = &new PEAR_Dependency2($this->_config, $this->_options, - array('channel' => $channel, 'package' => $package), $this->_state); - $dep = $d['dep']; - $required = $d['type'] == 'required'; - $ret = $checker->_validatePackageDownload($dep, $required, array(&$dp)); - if (is_array($ret)) { - $dl->log(0, $ret[0]); - } elseif (PEAR::isError($ret)) { - $dl->log(0, $ret->getMessage()); - $fail = true; - } - } - } - } - PEAR::popErrorHandling(); - } - if ($fail) { - return $this->raiseError( - '%s cannot be installed, conflicts with installed packages'); - } - return true; - } - - /** - * validate a package.xml 1.0 dependency - */ - function validateDependency1($dep, $params = array()) - { - if (!isset($dep['optional'])) { - $dep['optional'] = 'no'; - } - list($newdep, $type) = $this->normalizeDep($dep); - if (!$newdep) { - return $this->raiseError("Invalid Dependency"); - } - if (method_exists($this, "validate{$type}Dependency")) { - return $this->{"validate{$type}Dependency"}($newdep, $dep['optional'] == 'no', - $params, true); - } - } - - /** - * Convert a 1.0 dep into a 2.0 dep - */ - function normalizeDep($dep) - { - $types = array( - 'pkg' => 'Package', - 'ext' => 'Extension', - 'os' => 'Os', - 'php' => 'Php' - ); - if (isset($types[$dep['type']])) { - $type = $types[$dep['type']]; - } else { - return array(false, false); - } - $newdep = array(); - switch ($type) { - case 'Package' : - $newdep['channel'] = 'pear.php.net'; - case 'Extension' : - case 'Os' : - $newdep['name'] = $dep['name']; - break; - } - $dep['rel'] = PEAR_Dependency2::signOperator($dep['rel']); - switch ($dep['rel']) { - case 'has' : - return array($newdep, $type); - break; - case 'not' : - $newdep['conflicts'] = true; - break; - case '>=' : - case '>' : - $newdep['min'] = $dep['version']; - if ($dep['rel'] == '>') { - $newdep['exclude'] = $dep['version']; - } - break; - case '<=' : - case '<' : - $newdep['max'] = $dep['version']; - if ($dep['rel'] == '<') { - $newdep['exclude'] = $dep['version']; - } - break; - case 'ne' : - case '!=' : - $newdep['min'] = '0'; - $newdep['max'] = '100000'; - $newdep['exclude'] = $dep['version']; - break; - case '==' : - $newdep['min'] = $dep['version']; - $newdep['max'] = $dep['version']; - break; - } - if ($type == 'Php') { - if (!isset($newdep['min'])) { - $newdep['min'] = '4.2.0'; - } - if (!isset($newdep['max'])) { - $newdep['max'] = '6.0.0'; - } - } - return array($newdep, $type); - } - - /** - * Converts text comparing operators to them sign equivalents - * - * Example: 'ge' to '>=' - * - * @access public - * @param string Operator - * @return string Sign equivalent - */ - function signOperator($operator) - { - switch($operator) { - case 'lt': return '<'; - case 'le': return '<='; - case 'gt': return '>'; - case 'ge': return '>='; - case 'eq': return '=='; - case 'ne': return '!='; - default: - return $operator; - } - } - - function raiseError($msg) - { - if (isset($this->_options['ignore-errors'])) { - return $this->warning($msg); - } - return PEAR::raiseError(sprintf($msg, $this->_registry->parsedPackageNameToString( - $this->_currentPackage, true))); - } - - function warning($msg) - { - return array(sprintf($msg, $this->_registry->parsedPackageNameToString( - $this->_currentPackage, true))); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/DependencyDB.php b/src/vitis/vas/rest/class/PEAR/DependencyDB.php deleted file mode 100755 index f79ae81e31311cc3b59af0b668b8bc1b6621c130..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/DependencyDB.php +++ /dev/null @@ -1,713 +0,0 @@ -<?php -/** - * PEAR_DependencyDB, advanced installed packages dependency database - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Tomas V. V. Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: DependencyDB.php,v 1.37 2008/01/03 20:26:35 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Needed for error handling - */ -require_once 'PEAR.php'; -require_once 'PEAR/Config.php'; - -$GLOBALS['_PEAR_DEPENDENCYDB_INSTANCE'] = array(); -/** - * Track dependency relationships between installed packages - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @author Tomas V.V.Cox <cox@idec.net.com> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_DependencyDB -{ - // {{{ properties - - /** - * This is initialized by {@link setConfig()} - * @var PEAR_Config - * @access private - */ - var $_config; - /** - * This is initialized by {@link setConfig()} - * @var PEAR_Registry - * @access private - */ - var $_registry; - /** - * Filename of the dependency DB (usually .depdb) - * @var string - * @access private - */ - var $_depdb = false; - /** - * File name of the lockfile (usually .depdblock) - * @var string - * @access private - */ - var $_lockfile = false; - /** - * Open file resource for locking the lockfile - * @var resource|false - * @access private - */ - var $_lockFp = false; - /** - * API version of this class, used to validate a file on-disk - * @var string - * @access private - */ - var $_version = '1.0'; - /** - * Cached dependency database file - * @var array|null - * @access private - */ - var $_cache; - - // }}} - // {{{ & singleton() - - /** - * Get a raw dependency database. Calls setConfig() and assertDepsDB() - * @param PEAR_Config - * @param string|false full path to the dependency database, or false to use default - * @return PEAR_DependencyDB|PEAR_Error - * @static - */ - function &singleton(&$config, $depdb = false) - { - if (!isset($GLOBALS['_PEAR_DEPENDENCYDB_INSTANCE'] - [$config->get('php_dir', null, 'pear.php.net')])) { - $a = new PEAR_DependencyDB; - $GLOBALS['_PEAR_DEPENDENCYDB_INSTANCE'] - [$config->get('php_dir', null, 'pear.php.net')] = &$a; - $a->setConfig($config, $depdb); - if (PEAR::isError($e = $a->assertDepsDB())) { - return $e; - } - } - return $GLOBALS['_PEAR_DEPENDENCYDB_INSTANCE'] - [$config->get('php_dir', null, 'pear.php.net')]; - } - - /** - * Set up the registry/location of dependency DB - * @param PEAR_Config|false - * @param string|false full path to the dependency database, or false to use default - */ - function setConfig(&$config, $depdb = false) - { - if (!$config) { - $this->_config = &PEAR_Config::singleton(); - } else { - $this->_config = &$config; - } - $this->_registry = &$this->_config->getRegistry(); - if (!$depdb) { - $this->_depdb = $this->_config->get('php_dir', null, 'pear.php.net') . - DIRECTORY_SEPARATOR . '.depdb'; - } else { - $this->_depdb = $depdb; - } - $this->_lockfile = dirname($this->_depdb) . DIRECTORY_SEPARATOR . '.depdblock'; - } - // }}} - - function hasWriteAccess() - { - if (!file_exists($this->_depdb)) { - $dir = $this->_depdb; - while ($dir && $dir != '.') { - $dir = dirname($dir); // cd .. - if ($dir != '.' && file_exists($dir)) { - if (is_writeable($dir)) { - return true; - } else { - return false; - } - } - } - return false; - } - return is_writeable($this->_depdb); - } - - // {{{ assertDepsDB() - - /** - * Create the dependency database, if it doesn't exist. Error if the database is - * newer than the code reading it. - * @return void|PEAR_Error - */ - function assertDepsDB() - { - if (!is_file($this->_depdb)) { - $this->rebuildDB(); - } else { - $depdb = $this->_getDepDB(); - // Datatype format has been changed, rebuild the Deps DB - if ($depdb['_version'] < $this->_version) { - $this->rebuildDB(); - } - if ($depdb['_version']{0} > $this->_version{0}) { - return PEAR::raiseError('Dependency database is version ' . - $depdb['_version'] . ', and we are version ' . - $this->_version . ', cannot continue'); - } - } - } - - /** - * Get a list of installed packages that depend on this package - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2|array - * @return array|false - */ - function getDependentPackages(&$pkg) - { - $data = $this->_getDepDB(); - if (is_object($pkg)) { - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - } else { - $channel = strtolower($pkg['channel']); - $package = strtolower($pkg['package']); - } - if (isset($data['packages'][$channel][$package])) { - return $data['packages'][$channel][$package]; - } - return false; - } - - /** - * Get a list of the actual dependencies of installed packages that depend on - * a package. - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2|array - * @return array|false - */ - function getDependentPackageDependencies(&$pkg) - { - $data = $this->_getDepDB(); - if (is_object($pkg)) { - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - } else { - $channel = strtolower($pkg['channel']); - $package = strtolower($pkg['package']); - } - $depend = $this->getDependentPackages($pkg); - if (!$depend) { - return false; - } - $dependencies = array(); - foreach ($depend as $info) { - $temp = $this->getDependencies($info); - foreach ($temp as $dep) { - if (strtolower($dep['dep']['channel']) == strtolower($channel) && - strtolower($dep['dep']['name']) == strtolower($package)) { - if (!isset($dependencies[$info['channel']])) { - $dependencies[$info['channel']] = array(); - } - if (!isset($dependencies[$info['channel']][$info['package']])) { - $dependencies[$info['channel']][$info['package']] = array(); - } - $dependencies[$info['channel']][$info['package']][] = $dep; - } - } - } - return $dependencies; - } - - /** - * Get a list of dependencies of this installed package - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2|array - * @return array|false - */ - function getDependencies(&$pkg) - { - if (is_object($pkg)) { - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - } else { - $channel = strtolower($pkg['channel']); - $package = strtolower($pkg['package']); - } - $data = $this->_getDepDB(); - if (isset($data['dependencies'][$channel][$package])) { - return $data['dependencies'][$channel][$package]; - } - return false; - } - - /** - * Determine whether $parent depends on $child, near or deep - * @param array|PEAR_PackageFile_v2|PEAR_PackageFile_v2 - * @param array|PEAR_PackageFile_v2|PEAR_PackageFile_v2 - */ - function dependsOn($parent, $child) - { - $c = array(); - $this->_getDepDB(); - return $this->_dependsOn($parent, $child, $c); - } - - function _dependsOn($parent, $child, &$checked) - { - if (is_object($parent)) { - $channel = strtolower($parent->getChannel()); - $package = strtolower($parent->getPackage()); - } else { - $channel = strtolower($parent['channel']); - $package = strtolower($parent['package']); - } - if (is_object($child)) { - $depchannel = strtolower($child->getChannel()); - $deppackage = strtolower($child->getPackage()); - } else { - $depchannel = strtolower($child['channel']); - $deppackage = strtolower($child['package']); - } - if (isset($checked[$channel][$package][$depchannel][$deppackage])) { - return false; // avoid endless recursion - } - $checked[$channel][$package][$depchannel][$deppackage] = true; - if (!isset($this->_cache['dependencies'][$channel][$package])) { - return false; - } - foreach ($this->_cache['dependencies'][$channel][$package] as $info) { - if (isset($info['dep']['uri'])) { - if (is_object($child)) { - if ($info['dep']['uri'] == $child->getURI()) { - return true; - } - } elseif (isset($child['uri'])) { - if ($info['dep']['uri'] == $child['uri']) { - return true; - } - } - return false; - } - if (strtolower($info['dep']['channel']) == strtolower($depchannel) && - strtolower($info['dep']['name']) == strtolower($deppackage)) { - return true; - } - } - foreach ($this->_cache['dependencies'][$channel][$package] as $info) { - if (isset($info['dep']['uri'])) { - if ($this->_dependsOn(array( - 'uri' => $info['dep']['uri'], - 'package' => $info['dep']['name']), $child, $checked)) { - return true; - } - } else { - if ($this->_dependsOn(array( - 'channel' => $info['dep']['channel'], - 'package' => $info['dep']['name']), $child, $checked)) { - return true; - } - } - } - return false; - } - - /** - * Register dependencies of a package that is being installed or upgraded - * @param PEAR_PackageFile_v2|PEAR_PackageFile_v2 - */ - function installPackage(&$package) - { - $data = $this->_getDepDB(); - unset($this->_cache); - $this->_setPackageDeps($data, $package); - $this->_writeDepDB($data); - } - - /** - * Remove dependencies of a package that is being uninstalled, or upgraded. - * - * Upgraded packages first uninstall, then install - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2|array If an array, then it must have - * indices 'channel' and 'package' - */ - function uninstallPackage(&$pkg) - { - $data = $this->_getDepDB(); - unset($this->_cache); - if (is_object($pkg)) { - $channel = strtolower($pkg->getChannel()); - $package = strtolower($pkg->getPackage()); - } else { - $channel = strtolower($pkg['channel']); - $package = strtolower($pkg['package']); - } - if (!isset($data['dependencies'][$channel][$package])) { - return true; - } - foreach ($data['dependencies'][$channel][$package] as $dep) { - $found = false; - if (isset($dep['dep']['uri'])) { - $depchannel = '__uri'; - } else { - $depchannel = strtolower($dep['dep']['channel']); - } - if (isset($data['packages'][$depchannel][strtolower($dep['dep']['name'])])) { - foreach ($data['packages'][$depchannel][strtolower($dep['dep']['name'])] as - $i => $info) { - if ($info['channel'] == $channel && - $info['package'] == $package) { - $found = true; - break; - } - } - } - if ($found) { - unset($data['packages'][$depchannel][strtolower($dep['dep']['name'])][$i]); - if (!count($data['packages'][$depchannel][strtolower($dep['dep']['name'])])) { - unset($data['packages'][$depchannel][strtolower($dep['dep']['name'])]); - if (!count($data['packages'][$depchannel])) { - unset($data['packages'][$depchannel]); - } - } else { - $data['packages'][$depchannel][strtolower($dep['dep']['name'])] = - array_values( - $data['packages'][$depchannel][strtolower($dep['dep']['name'])]); - } - } - } - unset($data['dependencies'][$channel][$package]); - if (!count($data['dependencies'][$channel])) { - unset($data['dependencies'][$channel]); - } - if (!count($data['dependencies'])) { - unset($data['dependencies']); - } - if (!count($data['packages'])) { - unset($data['packages']); - } - $this->_writeDepDB($data); - } - - /** - * Rebuild the dependency DB by reading registry entries. - * @return true|PEAR_Error - */ - function rebuildDB() - { - $depdb = array('_version' => $this->_version); - if (!$this->hasWriteAccess()) { - // allow startup for read-only with older Registry - return $depdb; - } - $packages = $this->_registry->listAllPackages(); - if (PEAR::isError($packages)) { - return $packages; - } - foreach ($packages as $channel => $ps) { - foreach ($ps as $package) { - $package = $this->_registry->getPackage($package, $channel); - if (PEAR::isError($package)) { - return $package; - } - $this->_setPackageDeps($depdb, $package); - } - } - $error = $this->_writeDepDB($depdb); - if (PEAR::isError($error)) { - return $error; - } - $this->_cache = $depdb; - return true; - } - - /** - * Register usage of the dependency DB to prevent race conditions - * @param int one of the LOCK_* constants - * @return true|PEAR_Error - * @access private - */ - function _lock($mode = LOCK_EX) - { - if (!eregi('Windows 9', php_uname())) { - if ($mode != LOCK_UN && is_resource($this->_lockFp)) { - // XXX does not check type of lock (LOCK_SH/LOCK_EX) - return true; - } - $open_mode = 'w'; - // XXX People reported problems with LOCK_SH and 'w' - if ($mode === LOCK_SH) { - if (!file_exists($this->_lockfile)) { - touch($this->_lockfile); - } elseif (!is_file($this->_lockfile)) { - return PEAR::raiseError('could not create Dependency lock file, ' . - 'it exists and is not a regular file'); - } - $open_mode = 'r'; - } - - if (!is_resource($this->_lockFp)) { - $this->_lockFp = @fopen($this->_lockfile, $open_mode); - } - if (!is_resource($this->_lockFp)) { - return PEAR::raiseError("could not create Dependency lock file" . - (isset($php_errormsg) ? ": " . $php_errormsg : "")); - } - if (!(int)flock($this->_lockFp, $mode)) { - switch ($mode) { - case LOCK_SH: $str = 'shared'; break; - case LOCK_EX: $str = 'exclusive'; break; - case LOCK_UN: $str = 'unlock'; break; - default: $str = 'unknown'; break; - } - return PEAR::raiseError("could not acquire $str lock ($this->_lockfile)"); - } - } - return true; - } - - /** - * Release usage of dependency DB - * @return true|PEAR_Error - * @access private - */ - function _unlock() - { - $ret = $this->_lock(LOCK_UN); - if (is_resource($this->_lockFp)) { - fclose($this->_lockFp); - } - $this->_lockFp = null; - return $ret; - } - - /** - * Load the dependency database from disk, or return the cache - * @return array|PEAR_Error - */ - function _getDepDB() - { - if (!$this->hasWriteAccess()) { - return array('_version' => $this->_version); - } - if (isset($this->_cache)) { - return $this->_cache; - } - if (!$fp = fopen($this->_depdb, 'r')) { - $err = PEAR::raiseError("Could not open dependencies file `".$this->_depdb."'"); - return $err; - } - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - clearstatcache(); - fclose($fp); - $data = unserialize(file_get_contents($this->_depdb)); - set_magic_quotes_runtime($rt); - $this->_cache = $data; - return $data; - } - - /** - * Write out the dependency database to disk - * @param array the database - * @return true|PEAR_Error - * @access private - */ - function _writeDepDB(&$deps) - { - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - if (!$fp = fopen($this->_depdb, 'wb')) { - $this->_unlock(); - return PEAR::raiseError("Could not open dependencies file `".$this->_depdb."' for writing"); - } - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - fwrite($fp, serialize($deps)); - set_magic_quotes_runtime($rt); - fclose($fp); - $this->_unlock(); - $this->_cache = $deps; - return true; - } - - /** - * Register all dependencies from a package in the dependencies database, in essence - * "installing" the package's dependency information - * @param array the database - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @access private - */ - function _setPackageDeps(&$data, &$pkg) - { - $pkg->setConfig($this->_config); - if ($pkg->getPackagexmlVersion() == '1.0') { - $gen = &$pkg->getDefaultGenerator(); - $deps = $gen->dependenciesToV2(); - } else { - $deps = $pkg->getDeps(true); - } - if (!$deps) { - return; - } - if (!is_array($data)) { - $data = array(); - } - if (!isset($data['dependencies'])) { - $data['dependencies'] = array(); - } - if (!isset($data['dependencies'][strtolower($pkg->getChannel())])) { - $data['dependencies'][strtolower($pkg->getChannel())] = array(); - } - $data['dependencies'][strtolower($pkg->getChannel())][strtolower($pkg->getPackage())] - = array(); - if (isset($deps['required']['package'])) { - if (!isset($deps['required']['package'][0])) { - $deps['required']['package'] = array($deps['required']['package']); - } - foreach ($deps['required']['package'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'required'); - } - } - if (isset($deps['optional']['package'])) { - if (!isset($deps['optional']['package'][0])) { - $deps['optional']['package'] = array($deps['optional']['package']); - } - foreach ($deps['optional']['package'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'optional'); - } - } - if (isset($deps['required']['subpackage'])) { - if (!isset($deps['required']['subpackage'][0])) { - $deps['required']['subpackage'] = array($deps['required']['subpackage']); - } - foreach ($deps['required']['subpackage'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'required'); - } - } - if (isset($deps['optional']['subpackage'])) { - if (!isset($deps['optional']['subpackage'][0])) { - $deps['optional']['subpackage'] = array($deps['optional']['subpackage']); - } - foreach ($deps['optional']['subpackage'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'optional'); - } - } - if (isset($deps['group'])) { - if (!isset($deps['group'][0])) { - $deps['group'] = array($deps['group']); - } - foreach ($deps['group'] as $group) { - if (isset($group['package'])) { - if (!isset($group['package'][0])) { - $group['package'] = array($group['package']); - } - foreach ($group['package'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'optional', - $group['attribs']['name']); - } - } - if (isset($group['subpackage'])) { - if (!isset($group['subpackage'][0])) { - $group['subpackage'] = array($group['subpackage']); - } - foreach ($group['subpackage'] as $dep) { - $this->_registerDep($data, $pkg, $dep, 'optional', - $group['attribs']['name']); - } - } - } - } - if ($data['dependencies'][strtolower($pkg->getChannel())] - [strtolower($pkg->getPackage())] == array()) { - unset($data['dependencies'][strtolower($pkg->getChannel())] - [strtolower($pkg->getPackage())]); - if (!count($data['dependencies'][strtolower($pkg->getChannel())])) { - unset($data['dependencies'][strtolower($pkg->getChannel())]); - } - } - } - - /** - * @param array the database - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param array the specific dependency - * @param required|optional whether this is a required or an optional dep - * @param string|false dependency group this dependency is from, or false for ordinary dep - */ - function _registerDep(&$data, &$pkg, $dep, $type, $group = false) - { - $info = array( - 'dep' => $dep, - 'type' => $type, - 'group' => $group); - - if (isset($dep['channel'])) { - $depchannel = $dep['channel']; - } else { - $depchannel = '__uri'; - } - if (!isset($data['dependencies'])) { - $data['dependencies'] = array(); - } - if (!isset($data['dependencies'][strtolower($pkg->getChannel())])) { - $data['dependencies'][strtolower($pkg->getChannel())] = array(); - } - if (!isset($data['dependencies'][strtolower($pkg->getChannel())][strtolower($pkg->getPackage())])) { - $data['dependencies'][strtolower($pkg->getChannel())][strtolower($pkg->getPackage())] = array(); - } - $data['dependencies'][strtolower($pkg->getChannel())][strtolower($pkg->getPackage())][] - = $info; - if (isset($data['packages'][strtolower($depchannel)][strtolower($dep['name'])])) { - $found = false; - foreach ($data['packages'][strtolower($depchannel)][strtolower($dep['name'])] - as $i => $p) { - if ($p['channel'] == strtolower($pkg->getChannel()) && - $p['package'] == strtolower($pkg->getPackage())) { - $found = true; - break; - } - } - if (!$found) { - $data['packages'][strtolower($depchannel)][strtolower($dep['name'])][] - = array('channel' => strtolower($pkg->getChannel()), - 'package' => strtolower($pkg->getPackage())); - } - } else { - if (!isset($data['packages'])) { - $data['packages'] = array(); - } - if (!isset($data['packages'][strtolower($depchannel)])) { - $data['packages'][strtolower($depchannel)] = array(); - } - if (!isset($data['packages'][strtolower($depchannel)][strtolower($dep['name'])])) { - $data['packages'][strtolower($depchannel)][strtolower($dep['name'])] = array(); - } - $data['packages'][strtolower($depchannel)][strtolower($dep['name'])][] - = array('channel' => strtolower($pkg->getChannel()), - 'package' => strtolower($pkg->getPackage())); - } - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Downloader.php b/src/vitis/vas/rest/class/PEAR/Downloader.php deleted file mode 100755 index c70a07b19fa0881b0c18a54cef101c8c5809fbfb..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Downloader.php +++ /dev/null @@ -1,1752 +0,0 @@ -<?php -/** - * PEAR_Downloader, the PEAR Installer's download utility class - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @author Stig Bakken <ssb@php.net> - * @author Tomas V. V. Cox <cox@idecnet.com> - * @author Martin Jansen <mj@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Downloader.php,v 1.138 2008/04/11 01:16:40 dufuz Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.3.0 - */ - -/** - * Needed for constants, extending - */ -require_once 'PEAR/Common.php'; - -define('PEAR_INSTALLER_OK', 1); -define('PEAR_INSTALLER_FAILED', 0); -define('PEAR_INSTALLER_SKIPPED', -1); -define('PEAR_INSTALLER_ERROR_NO_PREF_STATE', 2); - -/** - * Administration class used to download anything from the internet (PEAR Packages, - * static URLs, xml files) - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @author Stig Bakken <ssb@php.net> - * @author Tomas V. V. Cox <cox@idecnet.com> - * @author Martin Jansen <mj@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.3.0 - */ -class PEAR_Downloader extends PEAR_Common -{ - /** - * @var PEAR_Registry - * @access private - */ - var $_registry; - - /** - * @var PEAR_Remote - * @access private - */ - var $_remote; - - /** - * Preferred Installation State (snapshot, devel, alpha, beta, stable) - * @var string|null - * @access private - */ - var $_preferredState; - - /** - * Options from command-line passed to Install. - * - * Recognized options:<br /> - * - onlyreqdeps : install all required dependencies as well - * - alldeps : install all dependencies, including optional - * - installroot : base relative path to install files in - * - force : force a download even if warnings would prevent it - * - nocompress : download uncompressed tarballs - * @see PEAR_Command_Install - * @access private - * @var array - */ - var $_options; - - /** - * Downloaded Packages after a call to download(). - * - * Format of each entry: - * - * <code> - * array('pkg' => 'package_name', 'file' => '/path/to/local/file', - * 'info' => array() // parsed package.xml - * ); - * </code> - * @access private - * @var array - */ - var $_downloadedPackages = array(); - - /** - * Packages slated for download. - * - * This is used to prevent downloading a package more than once should it be a dependency - * for two packages to be installed. - * Format of each entry: - * - * <pre> - * array('package_name1' => parsed package.xml, 'package_name2' => parsed package.xml, - * ); - * </pre> - * @access private - * @var array - */ - var $_toDownload = array(); - - /** - * Array of every package installed, with names lower-cased. - * - * Format: - * <code> - * array('package1' => 0, 'package2' => 1, ); - * </code> - * @var array - */ - var $_installed = array(); - - /** - * @var array - * @access private - */ - var $_errorStack = array(); - - /** - * @var boolean - * @access private - */ - var $_internalDownload = false; - - /** - * Temporary variable used in sorting packages by dependency in {@link sortPkgDeps()} - * @var array - * @access private - */ - var $_packageSortTree; - - /** - * Temporary directory, or configuration value where downloads will occur - * @var string - */ - var $_downloadDir; - // {{{ PEAR_Downloader() - - /** - * @param PEAR_Frontend_* - * @param array - * @param PEAR_Config - */ - function PEAR_Downloader(&$ui, $options, &$config) - { - parent::PEAR_Common(); - $this->_options = $options; - $this->config = &$config; - $this->_preferredState = $this->config->get('preferred_state'); - $this->ui = &$ui; - if (!$this->_preferredState) { - // don't inadvertantly use a non-set preferred_state - $this->_preferredState = null; - } - - if (isset($this->_options['installroot'])) { - $this->config->setInstallRoot($this->_options['installroot']); - } - $this->_registry = &$config->getRegistry(); - $this->_remote = &$config->getRemote(); - - if (isset($this->_options['alldeps']) || isset($this->_options['onlyreqdeps'])) { - $this->_installed = $this->_registry->listAllPackages(); - foreach ($this->_installed as $key => $unused) { - if (!count($unused)) { - continue; - } - $strtolower = create_function('$a','return strtolower($a);'); - array_walk($this->_installed[$key], $strtolower); - } - } - } - - /** - * Attempt to discover a channel's remote capabilities from - * its server name - * @param string - * @return boolean - */ - function discover($channel) - { - $this->log(1, 'Attempting to discover channel "' . $channel . '"...'); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $callback = $this->ui ? array(&$this, '_downloadCallback') : null; - if (!class_exists('System')) { - require_once 'System.php'; - } - $a = $this->downloadHttp('http://' . $channel . '/channel.xml', $this->ui, - System::mktemp(array('-d')), $callback, false); - PEAR::popErrorHandling(); - if (PEAR::isError($a)) { - return false; - } - list($a, $lastmodified) = $a; - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $b = new PEAR_ChannelFile; - if ($b->fromXmlFile($a)) { - unlink($a); - if ($this->config->get('auto_discover')) { - $this->_registry->addChannel($b, $lastmodified); - $alias = $b->getName(); - if ($b->getName() == $this->_registry->channelName($b->getAlias())) { - $alias = $b->getAlias(); - } - $this->log(1, 'Auto-discovered channel "' . $channel . - '", alias "' . $alias . '", adding to registry'); - } - return true; - } - unlink($a); - return false; - } - - /** - * For simpler unit-testing - * @param PEAR_Downloader - * @return PEAR_Downloader_Package - */ - function &newDownloaderPackage(&$t) - { - if (!class_exists('PEAR_Downloader_Package')) { - require_once 'PEAR/Downloader/Package.php'; - } - $a = &new PEAR_Downloader_Package($t); - return $a; - } - - /** - * For simpler unit-testing - * @param PEAR_Config - * @param array - * @param array - * @param int - */ - function &getDependency2Object(&$c, $i, $p, $s) - { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - $z = &new PEAR_Dependency2($c, $i, $p, $s); - return $z; - } - - function &download($params) - { - if (!count($params)) { - $a = array(); - return $a; - } - if (!isset($this->_registry)) { - $this->_registry = &$this->config->getRegistry(); - } - if (!isset($this->_remote)) { - $this->_remote = &$this->config->getRemote(); - } - $channelschecked = array(); - // convert all parameters into PEAR_Downloader_Package objects - foreach ($params as $i => $param) { - $params[$i] = &$this->newDownloaderPackage($this); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $params[$i]->initialize($param); - PEAR::staticPopErrorHandling(); - if (!$err) { - // skip parameters that were missed by preferred_state - continue; - } - if (PEAR::isError($err)) { - if (!isset($this->_options['soft'])) { - $this->log(0, $err->getMessage()); - } - $params[$i] = false; - if (is_object($param)) { - $param = $param->getChannel() . '/' . $param->getPackage(); - } - $this->pushError('Package "' . $param . '" is not valid', - PEAR_INSTALLER_SKIPPED); - } else { - do { - if ($params[$i] && $params[$i]->getType() == 'local') { - // bug #7090 - // skip channel.xml check for local packages - break; - } - if ($params[$i] && !isset($channelschecked[$params[$i]->getChannel()]) && - !isset($this->_options['offline'])) { - $channelschecked[$params[$i]->getChannel()] = true; - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (!class_exists('System')) { - require_once 'System.php'; - } - $curchannel = &$this->_registry->getChannel($params[$i]->getChannel()); - if (PEAR::isError($curchannel)) { - PEAR::staticPopErrorHandling(); - return $this->raiseError($curchannel); - } - if (PEAR::isError($dir = $this->getDownloadDir())) { - PEAR::staticPopErrorHandling(); - break; - } - $mirror = $this->config->get('preferred_mirror', null, - $params[$i]->getChannel()); - $a = $this->downloadHttp('http://' . $mirror . - '/channel.xml', $this->ui, $dir, null, $curchannel->lastModified()); - - PEAR::staticPopErrorHandling(); - if (PEAR::isError($a) || !$a) { - break; - } - $this->log(0, 'WARNING: channel "' . $params[$i]->getChannel() . '" has ' . - 'updated its protocols, use "channel-update ' . $params[$i]->getChannel() . - '" to update'); - } - } while (false); - if ($params[$i] && !isset($this->_options['downloadonly'])) { - if (isset($this->_options['packagingroot'])) { - $checkdir = $this->_prependPath( - $this->config->get('php_dir', null, $params[$i]->getChannel()), - $this->_options['packagingroot']); - } else { - $checkdir = $this->config->get('php_dir', - null, $params[$i]->getChannel()); - } - while ($checkdir && $checkdir != '/' && !file_exists($checkdir)) { - $checkdir = dirname($checkdir); - } - if ($checkdir == '.') { - $checkdir = '/'; - } - if (!is_writeable($checkdir)) { - return PEAR::raiseError('Cannot install, php_dir for channel "' . - $params[$i]->getChannel() . '" is not writeable by the current user'); - } - } - } - } - unset($channelschecked); - PEAR_Downloader_Package::removeDuplicates($params); - if (!count($params)) { - $a = array(); - return $a; - } - if (!isset($this->_options['nodeps']) && !isset($this->_options['offline'])) { - $reverify = true; - while ($reverify) { - $reverify = false; - foreach ($params as $i => $param) { - //PHP Bug 40768 / PEAR Bug #10944 - //Nested foreaches fail in PHP 5.2.1 - key($params); - $ret = $params[$i]->detectDependencies($params); - if (PEAR::isError($ret)) { - $reverify = true; - $params[$i] = false; - PEAR_Downloader_Package::removeDuplicates($params); - if (!isset($this->_options['soft'])) { - $this->log(0, $ret->getMessage()); - } - continue 2; - } - } - } - } - if (isset($this->_options['offline'])) { - $this->log(3, 'Skipping dependency download check, --offline specified'); - } - if (!count($params)) { - $a = array(); - return $a; - } - while (PEAR_Downloader_Package::mergeDependencies($params)); - PEAR_Downloader_Package::removeDuplicates($params, true); - $errorparams = array(); - if (PEAR_Downloader_Package::detectStupidDuplicates($params, $errorparams)) { - if (count($errorparams)) { - foreach ($errorparams as $param) { - $name = $this->_registry->parsedPackageNameToString($param->getParsedPackage()); - $this->pushError('Duplicate package ' . $name . ' found', PEAR_INSTALLER_FAILED); - } - $a = array(); - return $a; - } - } - PEAR_Downloader_Package::removeInstalled($params); - if (!count($params)) { - $this->pushError('No valid packages found', PEAR_INSTALLER_FAILED); - $a = array(); - return $a; - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->analyzeDependencies($params); - PEAR::popErrorHandling(); - if (!count($params)) { - $this->pushError('No valid packages found', PEAR_INSTALLER_FAILED); - $a = array(); - return $a; - } - $ret = array(); - $newparams = array(); - if (isset($this->_options['pretend'])) { - return $params; - } - $somefailed = false; - foreach ($params as $i => $package) { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pf = &$params[$i]->download(); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pf)) { - if (!isset($this->_options['soft'])) { - $this->log(1, $pf->getMessage()); - $this->log(0, 'Error: cannot download "' . - $this->_registry->parsedPackageNameToString($package->getParsedPackage(), - true) . - '"'); - } - $somefailed = true; - continue; - } - $newparams[] = &$params[$i]; - $ret[] = array('file' => $pf->getArchiveFile(), - 'info' => &$pf, - 'pkg' => $pf->getPackage()); - } - if ($somefailed) { - // remove params that did not download successfully - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->analyzeDependencies($newparams, true); - PEAR::popErrorHandling(); - if (!count($newparams)) { - $this->pushError('Download failed', PEAR_INSTALLER_FAILED); - $a = array(); - return $a; - } - } - $this->_downloadedPackages = $ret; - return $newparams; - } - - /** - * @param array all packages to be installed - */ - function analyzeDependencies(&$params, $force = false) - { - $hasfailed = $failed = false; - if (isset($this->_options['downloadonly'])) { - return; - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $redo = true; - $reset = false; - while ($redo) { - $redo = false; - foreach ($params as $i => $param) { - $deps = $param->getDeps(); - if (!$deps) { - $depchecker = &$this->getDependency2Object($this->config, $this->getOptions(), - $param->getParsedPackage(), PEAR_VALIDATE_DOWNLOADING); - if ($param->getType() == 'xmlrpc') { - $send = $param->getDownloadURL(); - } else { - $send = $param->getPackageFile(); - } - $installcheck = $depchecker->validatePackage($send, $this, $params); - if (PEAR::isError($installcheck)) { - if (!isset($this->_options['soft'])) { - $this->log(0, $installcheck->getMessage()); - } - $hasfailed = true; - $params[$i] = false; - $reset = true; - $redo = true; - $failed = false; - PEAR_Downloader_Package::removeDuplicates($params); - continue 2; - } - continue; - } - if (!$reset && $param->alreadyValidated() && !$force) { - continue; - } - if (count($deps)) { - $depchecker = &$this->getDependency2Object($this->config, $this->getOptions(), - $param->getParsedPackage(), PEAR_VALIDATE_DOWNLOADING); - if ($param->getType() == 'xmlrpc') { - $send = $param->getDownloadURL(); - } else { - $send = $param->getPackageFile(); - } - $installcheck = $depchecker->validatePackage($send, $this, $params); - if (PEAR::isError($installcheck)) { - if (!isset($this->_options['soft'])) { - $this->log(0, $installcheck->getMessage()); - } - $hasfailed = true; - $params[$i] = false; - $reset = true; - $redo = true; - $failed = false; - PEAR_Downloader_Package::removeDuplicates($params); - continue 2; - } - $failed = false; - if (isset($deps['required'])) { - foreach ($deps['required'] as $type => $dep) { - // note: Dependency2 will never return a PEAR_Error if ignore-errors - // is specified, so soft is needed to turn off logging - if (!isset($dep[0])) { - if (PEAR::isError($e = $depchecker->{"validate{$type}Dependency"}($dep, - true, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } else { - foreach ($dep as $d) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($d, - true, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } - } - } - if (isset($deps['optional'])) { - foreach ($deps['optional'] as $type => $dep) { - if (!isset($dep[0])) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($dep, - false, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } else { - foreach ($dep as $d) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($d, - false, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } - } - } - } - $groupname = $param->getGroup(); - if (isset($deps['group']) && $groupname) { - if (!isset($deps['group'][0])) { - $deps['group'] = array($deps['group']); - } - $found = false; - foreach ($deps['group'] as $group) { - if ($group['attribs']['name'] == $groupname) { - $found = true; - break; - } - } - if ($found) { - unset($group['attribs']); - foreach ($group as $type => $dep) { - if (!isset($dep[0])) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($dep, - false, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } else { - foreach ($dep as $d) { - if (PEAR::isError($e = - $depchecker->{"validate{$type}Dependency"}($d, - false, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } - } - } - } - } - } else { - foreach ($deps as $dep) { - if (PEAR::isError($e = $depchecker->validateDependency1($dep, $params))) { - $failed = true; - if (!isset($this->_options['soft'])) { - $this->log(0, $e->getMessage()); - } - } elseif (is_array($e) && !$param->alreadyValidated()) { - if (!isset($this->_options['soft'])) { - $this->log(0, $e[0]); - } - } - } - } - $params[$i]->setValidated(); - } - if ($failed) { - $hasfailed = true; - $params[$i] = false; - $reset = true; - $redo = true; - $failed = false; - PEAR_Downloader_Package::removeDuplicates($params); - continue 2; - } - } - } - PEAR::staticPopErrorHandling(); - if ($hasfailed && (isset($this->_options['ignore-errors']) || - isset($this->_options['nodeps']))) { - // this is probably not needed, but just in case - if (!isset($this->_options['soft'])) { - $this->log(0, 'WARNING: dependencies failed'); - } - } - } - - /** - * Retrieve the directory that downloads will happen in - * @access private - * @return string - */ - function getDownloadDir() - { - if (isset($this->_downloadDir)) { - return $this->_downloadDir; - } - $downloaddir = $this->config->get('download_dir'); - if (empty($downloaddir) || (is_dir($downloaddir) && !is_writable($downloaddir))) { - if (is_dir($downloaddir) && !is_writable($downloaddir)) { - $this->log(0, 'WARNING: configuration download directory "' . $downloaddir . - '" is not writeable. Change download_dir config variable to ' . - 'a writeable dir to avoid this warning'); - } - if (!class_exists('System')) { - require_once 'System.php'; - } - if (PEAR::isError($downloaddir = System::mktemp('-d'))) { - return $downloaddir; - } - $this->log(3, '+ tmp dir created at ' . $downloaddir); - } - if (!is_writable($downloaddir)) { - if (PEAR::isError(System::mkdir(array('-p', $downloaddir))) || - !is_writable($downloaddir)) { - return PEAR::raiseError('download directory "' . $downloaddir . - '" is not writeable. Change download_dir config variable to ' . - 'a writeable dir'); - } - } - return $this->_downloadDir = $downloaddir; - } - - function setDownloadDir($dir) - { - if (!@is_writable($dir)) { - if (PEAR::isError(System::mkdir(array('-p', $dir)))) { - return PEAR::raiseError('download directory "' . $dir . - '" is not writeable. Change download_dir config variable to ' . - 'a writeable dir'); - } - } - $this->_downloadDir = $dir; - } - - // }}} - // {{{ configSet() - function configSet($key, $value, $layer = 'user', $channel = false) - { - $this->config->set($key, $value, $layer, $channel); - $this->_preferredState = $this->config->get('preferred_state', null, $channel); - if (!$this->_preferredState) { - // don't inadvertantly use a non-set preferred_state - $this->_preferredState = null; - } - } - - // }}} - // {{{ setOptions() - function setOptions($options) - { - $this->_options = $options; - } - - // }}} - // {{{ setOptions() - function getOptions() - { - return $this->_options; - } - - // }}} - - /** - * For simpler unit-testing - * @param PEAR_Config - * @param int - * @param string - */ - function &getPackagefileObject(&$c, $d, $t = false) - { - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - $a = &new PEAR_PackageFile($c, $d, $t); - return $a; - } - - // {{{ _getPackageDownloadUrl() - - /** - * @param array output of {@link parsePackageName()} - * @access private - */ - function _getPackageDownloadUrl($parr) - { - $curchannel = $this->config->get('default_channel'); - $this->configSet('default_channel', $parr['channel']); - // getDownloadURL returns an array. On error, it only contains information - // on the latest release as array(version, info). On success it contains - // array(version, info, download url string) - $state = isset($parr['state']) ? $parr['state'] : $this->config->get('preferred_state'); - if (!$this->_registry->channelExists($parr['channel'])) { - do { - if ($this->config->get('auto_discover')) { - if ($this->discover($parr['channel'])) { - break; - } - } - $this->configSet('default_channel', $curchannel); - return PEAR::raiseError('Unknown remote channel: ' . $remotechannel); - } while (false); - } - $chan = &$this->_registry->getChannel($parr['channel']); - if (PEAR::isError($chan)) { - return $chan; - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $version = $this->_registry->packageInfo($parr['package'], 'version', - $parr['channel']); - PEAR::staticPopErrorHandling(); - $base2 = false; - if ($chan->supportsREST($this->config->get('preferred_mirror')) && - (($base2 = $chan->getBaseURL('REST1.3', $this->config->get('preferred_mirror'))) || - ($base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))))) { - if ($base2) { - $rest = &$this->config->getREST('1.3', $this->_options); - $base = $base2; - } else { - $rest = &$this->config->getREST('1.0', $this->_options); - } - if (!isset($parr['version']) && !isset($parr['state']) && $version - && !PEAR::isError($version) - && !isset($this->_options['downloadonly'])) { - $url = $rest->getDownloadURL($base, $parr, $state, $version, $chan->getName()); - } else { - $url = $rest->getDownloadURL($base, $parr, $state, false, $chan->getName()); - } - if (PEAR::isError($url)) { - $this->configSet('default_channel', $curchannel); - return $url; - } - if ($parr['channel'] != $curchannel) { - $this->configSet('default_channel', $curchannel); - } - if (!is_array($url)) { - return $url; - } - $url['raw'] = false; // no checking is necessary for REST - if (!is_array($url['info'])) { - return PEAR::raiseError('Invalid remote dependencies retrieved from REST - ' . - 'this should never happen'); - } - if (!isset($this->_options['force']) && - !isset($this->_options['downloadonly']) && - $version && - !PEAR::isError($version) && - !isset($parr['group'])) { - if (version_compare($version, $url['version'], '>=')) { - return PEAR::raiseError($this->_registry->parsedPackageNameToString( - $parr, true) . ' is already installed and is newer than detected ' . - 'release version ' . $url['version'], -976); - } - } - if (isset($url['info']['required']) || $url['compatible']) { - require_once 'PEAR/PackageFile/v2.php'; - $pf = new PEAR_PackageFile_v2; - $pf->setRawChannel($parr['channel']); - if ($url['compatible']) { - $pf->setRawCompatible($url['compatible']); - } - } else { - require_once 'PEAR/PackageFile/v1.php'; - $pf = new PEAR_PackageFile_v1; - } - $pf->setRawPackage($url['package']); - $pf->setDeps($url['info']); - if ($url['compatible']) { - $pf->setCompatible($url['compatible']); - } - $pf->setRawState($url['stability']); - $url['info'] = &$pf; - if (!extension_loaded("zlib") || isset($this->_options['nocompress'])) { - $ext = '.tar'; - } else { - $ext = '.tgz'; - } - if (is_array($url)) { - if (isset($url['url'])) { - $url['url'] .= $ext; - } - } - return $url; - } elseif ($chan->supports('xmlrpc', 'package.getDownloadURL', false, '1.1')) { - // don't install with the old version information unless we're doing a plain - // vanilla simple installation. If the user says to install a particular - // version or state, ignore the current installed version - if (!isset($parr['version']) && !isset($parr['state']) && $version - && !isset($this->_options['downloadonly'])) { - $url = $this->_remote->call('package.getDownloadURL', $parr, $state, $version); - } else { - $url = $this->_remote->call('package.getDownloadURL', $parr, $state); - } - } else { - $url = $this->_remote->call('package.getDownloadURL', $parr, $state); - } - if (PEAR::isError($url)) { - return $url; - } - if ($parr['channel'] != $curchannel) { - $this->configSet('default_channel', $curchannel); - } - if (isset($url['__PEAR_ERROR_CLASS__'])) { - return PEAR::raiseError($url['message']); - } - if (!is_array($url)) { - return $url; - } - $url['raw'] = $url['info']; - if (isset($this->_options['downloadonly'])) { - $pkg = &$this->getPackagefileObject($this->config, $this->debug); - } else { - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (PEAR::isError($dir = $this->getDownloadDir())) { - PEAR::staticPopErrorHandling(); - return $dir; - } - PEAR::staticPopErrorHandling(); - $pkg = &$this->getPackagefileObject($this->config, $this->debug, $dir); - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pinfo = &$pkg->fromXmlString($url['info'], PEAR_VALIDATE_DOWNLOADING, 'remote'); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pinfo)) { - if (!isset($this->_options['soft'])) { - $this->log(0, $pinfo->getMessage()); - } - return PEAR::raiseError('Remote package.xml is not valid - this should never happen'); - } - $url['info'] = &$pinfo; - if (!extension_loaded("zlib") || isset($this->_options['nocompress'])) { - $ext = '.tar'; - } else { - $ext = '.tgz'; - } - if (is_array($url)) { - if (isset($url['url'])) { - $url['url'] .= $ext; - } - } - return $url; - } - // }}} - // {{{ getDepPackageDownloadUrl() - - /** - * @param array dependency array - * @access private - */ - function _getDepPackageDownloadUrl($dep, $parr) - { - $xsdversion = isset($dep['rel']) ? '1.0' : '2.0'; - $curchannel = $this->config->get('default_channel'); - if (isset($dep['uri'])) { - $xsdversion = '2.0'; - $chan = &$this->_registry->getChannel('__uri'); - if (PEAR::isError($chan)) { - return $chan; - } - $version = $this->_registry->packageInfo($dep['name'], 'version', '__uri'); - $this->configSet('default_channel', '__uri'); - } else { - if (isset($dep['channel'])) { - $remotechannel = $dep['channel']; - } else { - $remotechannel = 'pear.php.net'; - } - if (!$this->_registry->channelExists($remotechannel)) { - do { - if ($this->config->get('auto_discover')) { - if ($this->discover($remotechannel)) { - break; - } - } - return PEAR::raiseError('Unknown remote channel: ' . $remotechannel); - } while (false); - } - $chan = &$this->_registry->getChannel($remotechannel); - if (PEAR::isError($chan)) { - return $chan; - } - $version = $this->_registry->packageInfo($dep['name'], 'version', - $remotechannel); - $this->configSet('default_channel', $remotechannel); - } - $state = isset($parr['state']) ? $parr['state'] : $this->config->get('preferred_state'); - if (isset($parr['state']) && isset($parr['version'])) { - unset($parr['state']); - } - if (isset($dep['uri'])) { - $info = &$this->newDownloaderPackage($this); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $err = $info->initialize($dep); - PEAR::staticPopErrorHandling(); - if (!$err) { - // skip parameters that were missed by preferred_state - return PEAR::raiseError('Cannot initialize dependency'); - } - if (PEAR::isError($err)) { - if (!isset($this->_options['soft'])) { - $this->log(0, $err->getMessage()); - } - if (is_object($info)) { - $param = $info->getChannel() . '/' . $info->getPackage(); - } - return PEAR::raiseError('Package "' . $param . '" is not valid'); - } - return $info; - } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) && - $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { - $rest = &$this->config->getREST('1.0', $this->_options); - $url = $rest->getDepDownloadURL($base, $xsdversion, $dep, $parr, - $state, $version, $chan->getName()); - if (PEAR::isError($url)) { - return $url; - } - if ($parr['channel'] != $curchannel) { - $this->configSet('default_channel', $curchannel); - } - if (!is_array($url)) { - return $url; - } - $url['raw'] = false; // no checking is necessary for REST - if (!is_array($url['info'])) { - return PEAR::raiseError('Invalid remote dependencies retrieved from REST - ' . - 'this should never happen'); - } - if (isset($url['info']['required'])) { - if (!class_exists('PEAR_PackageFile_v2')) { - require_once 'PEAR/PackageFile/v2.php'; - } - $pf = new PEAR_PackageFile_v2; - $pf->setRawChannel($remotechannel); - } else { - if (!class_exists('PEAR_PackageFile_v1')) { - require_once 'PEAR/PackageFile/v1.php'; - } - $pf = new PEAR_PackageFile_v1; - } - $pf->setRawPackage($url['package']); - $pf->setDeps($url['info']); - if ($url['compatible']) { - $pf->setCompatible($url['compatible']); - } - $pf->setRawState($url['stability']); - $url['info'] = &$pf; - if (!extension_loaded("zlib") || isset($this->_options['nocompress'])) { - $ext = '.tar'; - } else { - $ext = '.tgz'; - } - if (is_array($url)) { - if (isset($url['url'])) { - $url['url'] .= $ext; - } - } - return $url; - } elseif ($chan->supports('xmlrpc', 'package.getDepDownloadURL', false, '1.1')) { - if ($version) { - $url = $this->_remote->call('package.getDepDownloadURL', $xsdversion, $dep, $parr, - $state, $version); - } else { - $url = $this->_remote->call('package.getDepDownloadURL', $xsdversion, $dep, $parr, - $state); - } - } else { - $url = $this->_remote->call('package.getDepDownloadURL', $xsdversion, $dep, $parr, $state); - } - if ($this->config->get('default_channel') != $curchannel) { - $this->configSet('default_channel', $curchannel); - } - if (!is_array($url)) { - return $url; - } - if (isset($url['__PEAR_ERROR_CLASS__'])) { - return PEAR::raiseError($url['message']); - } - $url['raw'] = $url['info']; - $pkg = &$this->getPackagefileObject($this->config, $this->debug); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pinfo = &$pkg->fromXmlString($url['info'], PEAR_VALIDATE_DOWNLOADING, 'remote'); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pinfo)) { - if (!isset($this->_options['soft'])) { - $this->log(0, $pinfo->getMessage()); - } - return PEAR::raiseError('Remote package.xml is not valid - this should never happen'); - } - $url['info'] = &$pinfo; - if (is_array($url)) { - if (!extension_loaded("zlib") || isset($this->_options['nocompress'])) { - $ext = '.tar'; - } else { - $ext = '.tgz'; - } - if (isset($url['url'])) { - $url['url'] .= $ext; - } - } - return $url; - } - // }}} - // {{{ getPackageDownloadUrl() - - /** - * @deprecated in favor of _getPackageDownloadUrl - */ - function getPackageDownloadUrl($package, $version = null, $channel = false) - { - if ($version) { - $package .= "-$version"; - } - if ($this === null || $this->_registry === null) { - $package = "http://pear.php.net/get/$package"; - } else { - $chan = $this->_registry->getChannel($channel); - if (PEAR::isError($chan)) { - return ''; - } - $package = "http://" . $chan->getServer() . "/get/$package"; - } - if (!extension_loaded("zlib")) { - $package .= '?uncompress=yes'; - } - return $package; - } - - // }}} - // {{{ getDownloadedPackages() - - /** - * Retrieve a list of downloaded packages after a call to {@link download()}. - * - * Also resets the list of downloaded packages. - * @return array - */ - function getDownloadedPackages() - { - $ret = $this->_downloadedPackages; - $this->_downloadedPackages = array(); - $this->_toDownload = array(); - return $ret; - } - - // }}} - // {{{ _downloadCallback() - - function _downloadCallback($msg, $params = null) - { - switch ($msg) { - case 'saveas': - $this->log(1, "downloading $params ..."); - break; - case 'done': - $this->log(1, '...done: ' . number_format($params, 0, '', ',') . ' bytes'); - break; - case 'bytesread': - static $bytes; - if (empty($bytes)) { - $bytes = 0; - } - if (!($bytes % 10240)) { - $this->log(1, '.', false); - } - $bytes += $params; - break; - case 'start': - if($params[1] == -1) { - $length = "Unknown size"; - } else { - $length = number_format($params[1], 0, '', ',')." bytes"; - } - $this->log(1, "Starting to download {$params[0]} ($length)"); - break; - } - if (method_exists($this->ui, '_downloadCallback')) - $this->ui->_downloadCallback($msg, $params); - } - - // }}} - // {{{ _prependPath($path, $prepend) - - function _prependPath($path, $prepend) - { - if (strlen($prepend) > 0) { - if (OS_WINDOWS && preg_match('/^[a-z]:/i', $path)) { - if (preg_match('/^[a-z]:/i', $prepend)) { - $prepend = substr($prepend, 2); - } elseif ($prepend{0} != '\\') { - $prepend = "\\$prepend"; - } - $path = substr($path, 0, 2) . $prepend . substr($path, 2); - } else { - $path = $prepend . $path; - } - } - return $path; - } - // }}} - // {{{ pushError($errmsg, $code) - - /** - * @param string - * @param integer - */ - function pushError($errmsg, $code = -1) - { - array_push($this->_errorStack, array($errmsg, $code)); - } - - // }}} - // {{{ getErrorMsgs() - - function getErrorMsgs() - { - $msgs = array(); - $errs = $this->_errorStack; - foreach ($errs as $err) { - $msgs[] = $err[0]; - } - $this->_errorStack = array(); - return $msgs; - } - - // }}} - - /** - * for BC - */ - function sortPkgDeps(&$packages, $uninstall = false) - { - $uninstall ? - $this->sortPackagesForUninstall($packages) : - $this->sortPackagesForInstall($packages); - } - - /** - * Sort a list of arrays of array(downloaded packagefilename) by dependency. - * - * This uses the topological sort method from graph theory, and the - * Structures_Graph package to properly sort dependencies for installation. - * @param array an array of downloaded PEAR_Downloader_Packages - * @return array array of array(packagefilename, package.xml contents) - */ - function sortPackagesForInstall(&$packages) - { - require_once 'Structures/Graph.php'; - require_once 'Structures/Graph/Node.php'; - require_once 'Structures/Graph/Manipulator/TopologicalSorter.php'; - $depgraph = new Structures_Graph(true); - $nodes = array(); - $reg = &$this->config->getRegistry(); - foreach ($packages as $i => $package) { - $pname = $reg->parsedPackageNameToString( - array( - 'channel' => $package->getChannel(), - 'package' => strtolower($package->getPackage()), - )); - $nodes[$pname] = new Structures_Graph_Node; - $nodes[$pname]->setData($packages[$i]); - $depgraph->addNode($nodes[$pname]); - } - $deplinks = array(); - foreach ($nodes as $package => $node) { - $pf = &$node->getData(); - $pdeps = $pf->getDeps(true); - if (!$pdeps) { - continue; - } - if ($pf->getPackagexmlVersion() == '1.0') { - foreach ($pdeps as $dep) { - if ($dep['type'] != 'pkg' || - (isset($dep['optional']) && $dep['optional'] == 'yes')) { - continue; - } - $dname = $reg->parsedPackageNameToString( - array( - 'channel' => 'pear.php.net', - 'package' => strtolower($dep['name']), - )); - if (isset($nodes[$dname])) - { - if (!isset($deplinks[$dname])) { - $deplinks[$dname] = array(); - } - $deplinks[$dname][$package] = 1; - // dependency is in installed packages - continue; - } - $dname = $reg->parsedPackageNameToString( - array( - 'channel' => 'pecl.php.net', - 'package' => strtolower($dep['name']), - )); - if (isset($nodes[$dname])) - { - if (!isset($deplinks[$dname])) { - $deplinks[$dname] = array(); - } - $deplinks[$dname][$package] = 1; - // dependency is in installed packages - continue; - } - } - } else { - // the only ordering we care about is: - // 1) subpackages must be installed before packages that depend on them - // 2) required deps must be installed before packages that depend on them - if (isset($pdeps['required']['subpackage'])) { - $t = $pdeps['required']['subpackage']; - if (!isset($t[0])) { - $t = array($t); - } - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - if (isset($pdeps['group'])) { - if (!isset($pdeps['group'][0])) { - $pdeps['group'] = array($pdeps['group']); - } - foreach ($pdeps['group'] as $group) { - if (isset($group['subpackage'])) { - $t = $group['subpackage']; - if (!isset($t[0])) { - $t = array($t); - } - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - } - } - if (isset($pdeps['optional']['subpackage'])) { - $t = $pdeps['optional']['subpackage']; - if (!isset($t[0])) { - $t = array($t); - } - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - if (isset($pdeps['required']['package'])) { - $t = $pdeps['required']['package']; - if (!isset($t[0])) { - $t = array($t); - } - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - if (isset($pdeps['group'])) { - if (!isset($pdeps['group'][0])) { - $pdeps['group'] = array($pdeps['group']); - } - foreach ($pdeps['group'] as $group) { - if (isset($group['package'])) { - $t = $group['package']; - if (!isset($t[0])) { - $t = array($t); - } - $this->_setupGraph($t, $reg, $deplinks, $nodes, $package); - } - } - } - } - } - $this->_detectDepCycle($deplinks); - foreach ($deplinks as $dependent => $parents) { - foreach ($parents as $parent => $unused) { - $nodes[$dependent]->connectTo($nodes[$parent]); - } - } - $installOrder = Structures_Graph_Manipulator_TopologicalSorter::sort($depgraph); - $ret = array(); - for ($i = 0; $i < count($installOrder); $i++) { - foreach ($installOrder[$i] as $index => $sortedpackage) { - $data = &$installOrder[$i][$index]->getData(); - $ret[] = &$nodes[$reg->parsedPackageNameToString( - array( - 'channel' => $data->getChannel(), - 'package' => strtolower($data->getPackage()), - ))]->getData(); - } - } - $packages = $ret; - return; - } - - /** - * Detect recursive links between dependencies and break the cycles - * - * @param array - * @access private - */ - function _detectDepCycle(&$deplinks) - { - do { - $keepgoing = false; - foreach ($deplinks as $dep => $parents) { - foreach ($parents as $parent => $unused) { - // reset the parent cycle detector - $this->_testCycle(null, null, null); - if ($this->_testCycle($dep, $deplinks, $parent)) { - $keepgoing = true; - unset($deplinks[$dep][$parent]); - if (count($deplinks[$dep]) == 0) { - unset($deplinks[$dep]); - } - continue 3; - } - } - } - } while ($keepgoing); - } - - function _testCycle($test, $deplinks, $dep) - { - static $visited = array(); - if ($test === null) { - $visited = array(); - return; - } - // this happens when a parent has a dep cycle on another dependency - // but the child is not part of the cycle - if (isset($visited[$dep])) { - return false; - } - $visited[$dep] = 1; - if ($test == $dep) { - return true; - } - if (isset($deplinks[$dep])) { - if (in_array($test, array_keys($deplinks[$dep]), true)) { - return true; - } - foreach ($deplinks[$dep] as $parent => $unused) { - if ($this->_testCycle($test, $deplinks, $parent)) { - return true; - } - } - } - return false; - } - - /** - * Set up the dependency for installation parsing - * - * @param array $t dependency information - * @param PEAR_Registry $reg - * @param array $deplinks list of dependency links already established - * @param array $nodes all existing package nodes - * @param string $package parent package name - * @access private - */ - function _setupGraph($t, $reg, &$deplinks, &$nodes, $package) - { - foreach ($t as $dep) { - $depchannel = !isset($dep['channel']) ? - '__uri': $dep['channel']; - $dname = $reg->parsedPackageNameToString( - array( - 'channel' => $depchannel, - 'package' => strtolower($dep['name']), - )); - if (isset($nodes[$dname])) - { - if (!isset($deplinks[$dname])) { - $deplinks[$dname] = array(); - } - $deplinks[$dname][$package] = 1; - } - } - } - - function _dependsOn($a, $b) - { - return $this->_checkDepTree(strtolower($a->getChannel()), strtolower($a->getPackage()), - $b); - } - - function _checkDepTree($channel, $package, $b, $checked = array()) - { - $checked[$channel][$package] = true; - if (!isset($this->_depTree[$channel][$package])) { - return false; - } - if (isset($this->_depTree[$channel][$package][strtolower($b->getChannel())] - [strtolower($b->getPackage())])) { - return true; - } - foreach ($this->_depTree[$channel][$package] as $ch => $packages) { - foreach ($packages as $pa => $true) { - if ($this->_checkDepTree($ch, $pa, $b, $checked)) { - return true; - } - } - } - return false; - } - - function _sortInstall($a, $b) - { - if (!$a->getDeps() && !$b->getDeps()) { - return 0; // neither package has dependencies, order is insignificant - } - if ($a->getDeps() && !$b->getDeps()) { - return 1; // $a must be installed after $b because $a has dependencies - } - if (!$a->getDeps() && $b->getDeps()) { - return -1; // $b must be installed after $a because $b has dependencies - } - // both packages have dependencies - if ($this->_dependsOn($a, $b)) { - return 1; - } - if ($this->_dependsOn($b, $a)) { - return -1; - } - return 0; - } - - /** - * Download a file through HTTP. Considers suggested file name in - * Content-disposition: header and can run a callback function for - * different events. The callback will be called with two - * parameters: the callback type, and parameters. The implemented - * callback types are: - * - * 'setup' called at the very beginning, parameter is a UI object - * that should be used for all output - * 'message' the parameter is a string with an informational message - * 'saveas' may be used to save with a different file name, the - * parameter is the filename that is about to be used. - * If a 'saveas' callback returns a non-empty string, - * that file name will be used as the filename instead. - * Note that $save_dir will not be affected by this, only - * the basename of the file. - * 'start' download is starting, parameter is number of bytes - * that are expected, or -1 if unknown - * 'bytesread' parameter is the number of bytes read so far - * 'done' download is complete, parameter is the total number - * of bytes read - * 'connfailed' if the TCP/SSL connection fails, this callback is called - * with array(host,port,errno,errmsg) - * 'writefailed' if writing to disk fails, this callback is called - * with array(destfile,errmsg) - * - * If an HTTP proxy has been configured (http_proxy PEAR_Config - * setting), the proxy will be used. - * - * @param string $url the URL to download - * @param object $ui PEAR_Frontend_* instance - * @param object $config PEAR_Config instance - * @param string $save_dir directory to save file in - * @param mixed $callback function/method to call for status - * updates - * @param false|string|array $lastmodified header values to check against for caching - * use false to return the header values from this download - * @param false|array $accept Accept headers to send - * @param false|string $channel Channel to use for retrieving authentication - * @return string|array Returns the full path of the downloaded file or a PEAR - * error on failure. If the error is caused by - * socket-related errors, the error object will - * have the fsockopen error code available through - * getCode(). If caching is requested, then return the header - * values. - * - * @access public - */ - function downloadHttp($url, &$ui, $save_dir = '.', $callback = null, $lastmodified = null, - $accept = false, $channel = false) - { - static $redirect = 0; - // allways reset , so we are clean case of error - $wasredirect = $redirect; - $redirect = 0; - if ($callback) { - call_user_func($callback, 'setup', array(&$ui)); - } - $info = parse_url($url); - if (!isset($info['scheme']) || !in_array($info['scheme'], array('http', 'https'))) { - return PEAR::raiseError('Cannot download non-http URL "' . $url . '"'); - } - if (!isset($info['host'])) { - return PEAR::raiseError('Cannot download from non-URL "' . $url . '"'); - } else { - $host = isset($info['host']) ? $info['host'] : null; - $port = isset($info['port']) ? $info['port'] : null; - $path = isset($info['path']) ? $info['path'] : null; - } - if (isset($this)) { - $config = &$this->config; - } else { - $config = &PEAR_Config::singleton(); - } - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - if ($config->get('http_proxy') && - $proxy = parse_url($config->get('http_proxy'))) { - $proxy_host = isset($proxy['host']) ? $proxy['host'] : null; - if (isset($proxy['scheme']) && $proxy['scheme'] == 'https') { - $proxy_host = 'ssl://' . $proxy_host; - } - $proxy_port = isset($proxy['port']) ? $proxy['port'] : 8080; - $proxy_user = isset($proxy['user']) ? urldecode($proxy['user']) : null; - $proxy_pass = isset($proxy['pass']) ? urldecode($proxy['pass']) : null; - - if ($callback) { - call_user_func($callback, 'message', "Using HTTP proxy $host:$port"); - } - } - if (empty($port)) { - if (isset($info['scheme']) && $info['scheme'] == 'https') { - $port = 443; - } else { - $port = 80; - } - } - if ($proxy_host != '') { - $fp = @fsockopen($proxy_host, $proxy_port, $errno, $errstr); - if (!$fp) { - if ($callback) { - call_user_func($callback, 'connfailed', array($proxy_host, $proxy_port, - $errno, $errstr)); - } - return PEAR::raiseError("Connection to `$proxy_host:$proxy_port' failed: $errstr", $errno); - } - if ($lastmodified === false || $lastmodified) { - $request = "GET $url HTTP/1.1\r\n"; - } else { - $request = "GET $url HTTP/1.0\r\n"; - } - } else { - if (isset($info['scheme']) && $info['scheme'] == 'https') { - $host = 'ssl://' . $host; - } - $fp = @fsockopen($host, $port, $errno, $errstr); - if (!$fp) { - if ($callback) { - call_user_func($callback, 'connfailed', array($host, $port, - $errno, $errstr)); - } - return PEAR::raiseError("Connection to `$host:$port' failed: $errstr", $errno); - } - if ($lastmodified === false || $lastmodified) { - $request = "GET $path HTTP/1.1\r\n"; - $request .= "Host: $host:$port\r\n"; - } else { - $request = "GET $path HTTP/1.0\r\n"; - $request .= "Host: $host\r\n"; - } - } - $ifmodifiedsince = ''; - if (is_array($lastmodified)) { - if (isset($lastmodified['Last-Modified'])) { - $ifmodifiedsince = 'If-Modified-Since: ' . $lastmodified['Last-Modified'] . "\r\n"; - } - if (isset($lastmodified['ETag'])) { - $ifmodifiedsince .= "If-None-Match: $lastmodified[ETag]\r\n"; - } - } else { - $ifmodifiedsince = ($lastmodified ? "If-Modified-Since: $lastmodified\r\n" : ''); - } - $request .= $ifmodifiedsince . "User-Agent: PEAR/1.7.2/PHP/" . - PHP_VERSION . "\r\n"; - if (isset($this)) { // only pass in authentication for non-static calls - $username = $config->get('username', null, $channel); - $password = $config->get('password', null, $channel); - if ($username && $password) { - $tmp = base64_encode("$username:$password"); - $request .= "Authorization: Basic $tmp\r\n"; - } - } - if ($proxy_host != '' && $proxy_user != '') { - $request .= 'Proxy-Authorization: Basic ' . - base64_encode($proxy_user . ':' . $proxy_pass) . "\r\n"; - } - if ($accept) { - $request .= 'Accept: ' . implode(', ', $accept) . "\r\n"; - } - $request .= "Connection: close\r\n"; - $request .= "\r\n"; - fwrite($fp, $request); - $headers = array(); - $reply = 0; - while (trim($line = fgets($fp, 1024))) { - if (preg_match('/^([^:]+):\s+(.*)\s*\\z/', $line, $matches)) { - $headers[strtolower($matches[1])] = trim($matches[2]); - } elseif (preg_match('|^HTTP/1.[01] ([0-9]{3}) |', $line, $matches)) { - $reply = (int) $matches[1]; - if ($reply == 304 && ($lastmodified || ($lastmodified === false))) { - return false; - } - if (! in_array($reply, array(200, 301, 302, 303, 305, 307))) { - return PEAR::raiseError("File http://$host:$port$path not valid (received: $line)"); - } - } - } - if ($reply != 200) { - if (isset($headers['location'])) { - if ($wasredirect < 5) { - $redirect = $wasredirect + 1; - return $this->downloadHttp($headers['location'], - $ui, $save_dir, $callback, $lastmodified, $accept); - } else { - return PEAR::raiseError("File http://$host:$port$path not valid (redirection looped more than 5 times)"); - } - } else { - return PEAR::raiseError("File http://$host:$port$path not valid (redirected but no location)"); - } - } - if (isset($headers['content-disposition']) && - preg_match('/\sfilename=\"([^;]*\S)\"\s*(;|\\z)/', $headers['content-disposition'], $matches)) { - $save_as = basename($matches[1]); - } else { - $save_as = basename($url); - } - if ($callback) { - $tmp = call_user_func($callback, 'saveas', $save_as); - if ($tmp) { - $save_as = $tmp; - } - } - $dest_file = $save_dir . DIRECTORY_SEPARATOR . $save_as; - if (!$wp = @fopen($dest_file, 'wb')) { - fclose($fp); - if ($callback) { - call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg)); - } - return PEAR::raiseError("could not open $dest_file for writing"); - } - if (isset($headers['content-length'])) { - $length = $headers['content-length']; - } else { - $length = -1; - } - $bytes = 0; - if ($callback) { - call_user_func($callback, 'start', array(basename($dest_file), $length)); - } - while ($data = fread($fp, 1024)) { - $bytes += strlen($data); - if ($callback) { - call_user_func($callback, 'bytesread', $bytes); - } - if (!@fwrite($wp, $data)) { - fclose($fp); - if ($callback) { - call_user_func($callback, 'writefailed', array($dest_file, $php_errormsg)); - } - return PEAR::raiseError("$dest_file: write failed ($php_errormsg)"); - } - } - fclose($fp); - fclose($wp); - if ($callback) { - call_user_func($callback, 'done', $bytes); - } - if ($lastmodified === false || $lastmodified) { - if (isset($headers['etag'])) { - $lastmodified = array('ETag' => $headers['etag']); - } - if (isset($headers['last-modified'])) { - if (is_array($lastmodified)) { - $lastmodified['Last-Modified'] = $headers['last-modified']; - } else { - $lastmodified = $headers['last-modified']; - } - } - return array($dest_file, $lastmodified, $headers); - } - return $dest_file; - } -} -// }}} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Downloader/Package.php b/src/vitis/vas/rest/class/PEAR/Downloader/Package.php deleted file mode 100755 index 90eaa2d206eae899d24d7c5c804dc648197ecf40..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Downloader/Package.php +++ /dev/null @@ -1,1853 +0,0 @@ -<?php -/** - * PEAR_Downloader_Package - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Package.php,v 1.113 2008/03/29 14:18:36 dufuz Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Error code when parameter initialization fails because no releases - * exist within preferred_state, but releases do exist - */ -define('PEAR_DOWNLOADER_PACKAGE_STATE', -1003); -/** - * Error code when parameter initialization fails because no releases - * exist that will work with the existing PHP version - */ -define('PEAR_DOWNLOADER_PACKAGE_PHPVERSION', -1004); -/** - * Coordinates download parameters and manages their dependencies - * prior to downloading them. - * - * Input can come from three sources: - * - * - local files (archives or package.xml) - * - remote files (downloadable urls) - * - abstract package names - * - * The first two elements are handled cleanly by PEAR_PackageFile, but the third requires - * accessing pearweb's xml-rpc interface to determine necessary dependencies, and the - * format returned of dependencies is slightly different from that used in package.xml. - * - * This class hides the differences between these elements, and makes automatic - * dependency resolution a piece of cake. It also manages conflicts when - * two classes depend on incompatible dependencies, or differing versions of the same - * package dependency. In addition, download will not be attempted if the php version is - * not supported, PEAR installer version is not supported, or non-PECL extensions are not - * installed. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Downloader_Package -{ - /** - * @var PEAR_Downloader - */ - var $_downloader; - /** - * @var PEAR_Config - */ - var $_config; - /** - * @var PEAR_Registry - */ - var $_registry; - /** - * Used to implement packagingroot properly - * @var PEAR_Registry - */ - var $_installRegistry; - /** - * @var PEAR_PackageFile_v1|PEAR_PackageFile|v2 - */ - var $_packagefile; - /** - * @var array - */ - var $_parsedname; - /** - * @var array - */ - var $_downloadURL; - /** - * @var array - */ - var $_downloadDeps = array(); - /** - * @var boolean - */ - var $_valid = false; - /** - * @var boolean - */ - var $_analyzed = false; - /** - * if this or a parent package was invoked with Package-state, this is set to the - * state variable. - * - * This allows temporary reassignment of preferred_state for a parent package and all of - * its dependencies. - * @var string|false - */ - var $_explicitState = false; - /** - * If this package is invoked with Package#group, this variable will be true - */ - var $_explicitGroup = false; - /** - * Package type local|url|xmlrpc - * @var string - */ - var $_type; - /** - * Contents of package.xml, if downloaded from a remote channel - * @var string|false - * @access private - */ - var $_rawpackagefile; - /** - * @var boolean - * @access private - */ - var $_validated = false; - - /** - * @param PEAR_Downloader - */ - function PEAR_Downloader_Package(&$downloader) - { - $this->_downloader = &$downloader; - $this->_config = &$this->_downloader->config; - $this->_registry = &$this->_config->getRegistry(); - $options = $downloader->getOptions(); - if (isset($options['packagingroot'])) { - $this->_config->setInstallRoot($options['packagingroot']); - $this->_installRegistry = &$this->_config->getRegistry(); - $this->_config->setInstallRoot(false); - } else { - $this->_installRegistry = &$this->_registry; - } - $this->_valid = $this->_analyzed = false; - } - - /** - * Parse the input and determine whether this is a local file, a remote uri, or an - * abstract package name. - * - * This is the heart of the PEAR_Downloader_Package(), and is used in - * {@link PEAR_Downloader::download()} - * @param string - * @return bool|PEAR_Error - */ - function initialize($param) - { - $origErr = $this->_fromFile($param); - if (!$this->_valid) { - $options = $this->_downloader->getOptions(); - if (isset($options['offline'])) { - if (PEAR::isError($origErr)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $origErr->getMessage()); - } - } - return PEAR::raiseError('Cannot download non-local package "' . $param . '"'); - } - $err = $this->_fromUrl($param); - if (PEAR::isError($err) || !$this->_valid) { - if ($this->_type == 'url') { - if (PEAR::isError($err)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $err->getMessage()); - } - } - return PEAR::raiseError("Invalid or missing remote package file"); - } - $err = $this->_fromString($param); - if (PEAR::isError($err) || !$this->_valid) { - if (PEAR::isError($err) && - $err->getCode() == PEAR_DOWNLOADER_PACKAGE_STATE) { - return false; // instruct the downloader to silently skip - } - if (isset($this->_type) && $this->_type == 'local' && - PEAR::isError($origErr)) { - if (is_array($origErr->getUserInfo())) { - foreach ($origErr->getUserInfo() as $err) { - if (is_array($err)) { - $err = $err['message']; - } - if (!isset($options['soft'])) { - $this->_downloader->log(0, $err); - } - } - } - if (!isset($options['soft'])) { - $this->_downloader->log(0, $origErr->getMessage()); - } - if (is_array($param)) { - $param = $this->_registry->parsedPackageNameToString($param, - true); - } - return PEAR::raiseError( - "Cannot initialize '$param', invalid or missing package file"); - } - if (PEAR::isError($err)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $err->getMessage()); - } - } - if (is_array($param)) { - $param = $this->_registry->parsedPackageNameToString($param, true); - } - return PEAR::raiseError( - "Cannot initialize '$param', invalid or missing package file"); - } - } - } - return true; - } - - /** - * Retrieve any non-local packages - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2|PEAR_Error - */ - function &download() - { - if (isset($this->_packagefile)) { - return $this->_packagefile; - } - if (isset($this->_downloadURL['url'])) { - $this->_isvalid = false; - $info = $this->getParsedPackage(); - foreach ($info as $i => $p) { - $info[$i] = strtolower($p); - } - $err = $this->_fromUrl($this->_downloadURL['url'], - $this->_registry->parsedPackageNameToString($this->_parsedname, true)); - $newinfo = $this->getParsedPackage(); - foreach ($newinfo as $i => $p) { - $newinfo[$i] = strtolower($p); - } - if ($info != $newinfo) { - do { - if ($info['package'] == 'pecl.php.net' && $newinfo['package'] == 'pear.php.net') { - $info['package'] = 'pear.php.net'; - if ($info == $newinfo) { - // skip the channel check if a pecl package says it's a PEAR package - break; - } - } - return PEAR::raiseError('CRITICAL ERROR: We are ' . - $this->_registry->parsedPackageNameToString($info) . ', but the file ' . - 'downloaded claims to be ' . - $this->_registry->parsedPackageNameToString($this->getParsedPackage())); - } while (false); - } - if (PEAR::isError($err) || !$this->_valid) { - return $err; - } - } - $this->_type = 'local'; - return $this->_packagefile; - } - - function &getPackageFile() - { - return $this->_packagefile; - } - - function &getDownloader() - { - return $this->_downloader; - } - - function getType() - { - return $this->_type; - } - - /** - * Like {@link initialize()}, but operates on a dependency - */ - function fromDepURL($dep) - { - $this->_downloadURL = $dep; - if (isset($dep['uri'])) { - $options = $this->_downloader->getOptions(); - if (!extension_loaded("zlib") || isset($options['nocompress'])) { - $ext = '.tar'; - } else { - $ext = '.tgz'; - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->_fromUrl($dep['uri'] . $ext); - PEAR::popErrorHandling(); - if (PEAR::isError($err)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $err->getMessage()); - } - return PEAR::raiseError('Invalid uri dependency "' . $dep['uri'] . $ext . '", ' . - 'cannot download'); - } - } else { - $this->_parsedname = - array( - 'package' => $dep['info']->getPackage(), - 'channel' => $dep['info']->getChannel(), - 'version' => $dep['version'] - ); - if (!isset($dep['nodefault'])) { - $this->_parsedname['group'] = 'default'; // download the default dependency group - $this->_explicitGroup = false; - } - $this->_rawpackagefile = $dep['raw']; - } - } - - function detectDependencies($params) - { - $options = $this->_downloader->getOptions(); - if (isset($options['downloadonly'])) { - return; - } - if (isset($options['offline'])) { - $this->_downloader->log(3, 'Skipping dependency download check, --offline specified'); - return; - } - $pname = $this->getParsedPackage(); - if (!$pname) { - return; - } - $deps = $this->getDeps(); - if (!$deps) { - return; - } - if (isset($deps['required'])) { // package.xml 2.0 - return $this->_detect2($deps, $pname, $options, $params); - } else { - return $this->_detect1($deps, $pname, $options, $params); - } - } - - function setValidated() - { - $this->_validated = true; - } - - function alreadyValidated() - { - return $this->_validated; - } - - /** - * Remove packages to be downloaded that are already installed - * @param array of PEAR_Downloader_Package objects - * @static - */ - function removeInstalled(&$params) - { - if (!isset($params[0])) { - return; - } - $options = $params[0]->_downloader->getOptions(); - if (!isset($options['downloadonly'])) { - foreach ($params as $i => $param) { - // remove self if already installed with this version - // this does not need any pecl magic - we only remove exact matches - if ($param->_installRegistry->packageExists($param->getPackage(), $param->getChannel())) { - if (version_compare($param->_installRegistry->packageInfo($param->getPackage(), 'version', - $param->getChannel()), $param->getVersion(), '==')) { - if (!isset($options['force'])) { - $info = $param->getParsedPackage(); - unset($info['version']); - unset($info['state']); - if (!isset($options['soft'])) { - $param->_downloader->log(1, 'Skipping package "' . - $param->getShortName() . - '", already installed as version ' . - $param->_installRegistry->packageInfo($param->getPackage(), - 'version', $param->getChannel())); - } - $params[$i] = false; - } - } elseif (!isset($options['force']) && !isset($options['upgrade']) && - !isset($options['soft'])) { - $info = $param->getParsedPackage(); - $param->_downloader->log(1, 'Skipping package "' . - $param->getShortName() . - '", already installed as version ' . - $param->_installRegistry->packageInfo($param->getPackage(), 'version', - $param->getChannel())); - $params[$i] = false; - } - } - } - } - PEAR_Downloader_Package::removeDuplicates($params); - } - - function _detect2($deps, $pname, $options, $params) - { - $this->_downloadDeps = array(); - $groupnotfound = false; - foreach (array('package', 'subpackage') as $packagetype) { - // get required dependency group - if (isset($deps['required'][$packagetype])) { - if (isset($deps['required'][$packagetype][0])) { - foreach ($deps['required'][$packagetype] as $dep) { - if (isset($dep['conflicts'])) { - // skip any package that this package conflicts with - continue; - } - $ret = $this->_detect2Dep($dep, $pname, 'required', $params); - if (is_array($ret)) { - $this->_downloadDeps[] = $ret; - } - } - } else { - $dep = $deps['required'][$packagetype]; - if (!isset($dep['conflicts'])) { - // skip any package that this package conflicts with - $ret = $this->_detect2Dep($dep, $pname, 'required', $params); - if (is_array($ret)) { - $this->_downloadDeps[] = $ret; - } - } - } - } - // get optional dependency group, if any - if (isset($deps['optional'][$packagetype])) { - $skipnames = array(); - if (!isset($deps['optional'][$packagetype][0])) { - $deps['optional'][$packagetype] = array($deps['optional'][$packagetype]); - } - foreach ($deps['optional'][$packagetype] as $dep) { - $skip = false; - if (!isset($options['alldeps'])) { - $dep['package'] = $dep['name']; - if (!isset($options['soft'])) { - $this->_downloader->log(3, 'Notice: package "' . - $this->_registry->parsedPackageNameToString($this->getParsedPackage(), - true) . '" optional dependency "' . - $this->_registry->parsedPackageNameToString(array('package' => - $dep['name'], 'channel' => 'pear.php.net'), true) . - '" will not be automatically downloaded'); - } - $skipnames[] = $this->_registry->parsedPackageNameToString($dep, true); - $skip = true; - unset($dep['package']); - } - if (!($ret = $this->_detect2Dep($dep, $pname, 'optional', $params))) { - $dep['package'] = $dep['name']; - $skip = count($skipnames) ? - $skipnames[count($skipnames) - 1] : ''; - if ($skip == - $this->_registry->parsedPackageNameToString($dep, true)) { - array_pop($skipnames); - } - } - if (!$skip && is_array($ret)) { - $this->_downloadDeps[] = $ret; - } - } - if (count($skipnames)) { - if (!isset($options['soft'])) { - $this->_downloader->log(1, 'Did not download optional dependencies: ' . - implode(', ', $skipnames) . - ', use --alldeps to download automatically'); - } - } - } - // get requested dependency group, if any - $groupname = $this->getGroup(); - $explicit = $this->_explicitGroup; - if (!$groupname) { - if ($this->canDefault()) { - $groupname = 'default'; // try the default dependency group - } else { - continue; - } - } - if ($groupnotfound) { - continue; - } - if (isset($deps['group'])) { - if (isset($deps['group']['attribs'])) { - if (strtolower($deps['group']['attribs']['name']) == strtolower($groupname)) { - $group = $deps['group']; - } elseif ($explicit) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, 'Warning: package "' . - $this->_registry->parsedPackageNameToString($pname, true) . - '" has no dependency ' . 'group named "' . $groupname . '"'); - } - $groupnotfound = true; - continue; - } - } else { - $found = false; - foreach ($deps['group'] as $group) { - if (strtolower($group['attribs']['name']) == strtolower($groupname)) { - $found = true; - break; - } - } - if (!$found) { - if ($explicit) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, 'Warning: package "' . - $this->_registry->parsedPackageNameToString($pname, true) . - '" has no dependency ' . 'group named "' . $groupname . '"'); - } - } - $groupnotfound = true; - continue; - } - } - } - if (isset($group)) { - if (isset($group[$packagetype])) { - if (isset($group[$packagetype][0])) { - foreach ($group[$packagetype] as $dep) { - $ret = $this->_detect2Dep($dep, $pname, 'dependency group "' . - $group['attribs']['name'] . '"', $params); - if (is_array($ret)) { - $this->_downloadDeps[] = $ret; - } - } - } else { - $ret = $this->_detect2Dep($group[$packagetype], $pname, - 'dependency group "' . - $group['attribs']['name'] . '"', $params); - if (is_array($ret)) { - $this->_downloadDeps[] = $ret; - } - } - } - } - } - } - - function _detect2Dep($dep, $pname, $group, $params) - { - if (isset($dep['conflicts'])) { - return true; - } - $options = $this->_downloader->getOptions(); - if (isset($dep['uri'])) { - return array('uri' => $dep['uri'], 'dep' => $dep);; - } - $testdep = $dep; - $testdep['package'] = $dep['name']; - if (PEAR_Downloader_Package::willDownload($testdep, $params)) { - $dep['package'] = $dep['name']; - if (!isset($options['soft'])) { - $this->_downloader->log(2, $this->getShortName() . ': Skipping ' . $group . - ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", will be installed'); - } - return false; - } - $options = $this->_downloader->getOptions(); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if ($this->_explicitState) { - $pname['state'] = $this->_explicitState; - } - $url = - $this->_downloader->_getDepPackageDownloadUrl($dep, $pname); - if (PEAR::isError($url)) { - PEAR::popErrorHandling(); - return $url; - } - $dep['package'] = $dep['name']; - $ret = $this->_analyzeDownloadURL($url, 'dependency', $dep, $params, $group == 'optional' && - !isset($options['alldeps']), true); - PEAR::popErrorHandling(); - if (PEAR::isError($ret)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $ret->getMessage()); - } - return false; - } else { - // check to see if a dep is already installed and is the same or newer - if (!isset($dep['min']) && !isset($dep['max']) && !isset($dep['recommended'])) { - $oper = 'has'; - } else { - $oper = 'gt'; - } - // do not try to move this before getDepPackageDownloadURL - // we can't determine whether upgrade is necessary until we know what - // version would be downloaded - if (!isset($options['force']) && $this->isInstalled($ret, $oper)) { - $version = $this->_installRegistry->packageInfo($dep['name'], 'version', - $dep['channel']); - $dep['package'] = $dep['name']; - if (!isset($options['soft'])) { - $this->_downloader->log(3, $this->getShortName() . ': Skipping ' . $group . - ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '" version ' . $url['version'] . ', already installed as version ' . - $version); - } - return false; - } - } - if (isset($dep['nodefault'])) { - $ret['nodefault'] = true; - } - return $ret; - } - - function _detect1($deps, $pname, $options, $params) - { - $this->_downloadDeps = array(); - $skipnames = array(); - foreach ($deps as $dep) { - $nodownload = false; - if ($dep['type'] == 'pkg') { - $dep['channel'] = 'pear.php.net'; - $dep['package'] = $dep['name']; - switch ($dep['rel']) { - case 'not' : - continue 2; - case 'ge' : - case 'eq' : - case 'gt' : - case 'has' : - $group = (!isset($dep['optional']) || $dep['optional'] == 'no') ? - 'required' : - 'optional'; - if (PEAR_Downloader_Package::willDownload($dep, $params)) { - $this->_downloader->log(2, $this->getShortName() . ': Skipping ' . $group - . ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", will be installed'); - continue 2; - } - $fakedp = new PEAR_PackageFile_v1; - $fakedp->setPackage($dep['name']); - // skip internet check if we are not upgrading (bug #5810) - if (!isset($options['upgrade']) && $this->isInstalled( - $fakedp, $dep['rel'])) { - $this->_downloader->log(2, $this->getShortName() . ': Skipping ' . $group - . ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", is already installed'); - continue 2; - } - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if ($this->_explicitState) { - $pname['state'] = $this->_explicitState; - } - $url = - $this->_downloader->_getDepPackageDownloadUrl($dep, $pname); - $chan = 'pear.php.net'; - if (PEAR::isError($url)) { - // check to see if this is a pecl package that has jumped - // from pear.php.net to pecl.php.net channel - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - $newdep = PEAR_Dependency2::normalizeDep($dep); - $newdep = $newdep[0]; - $newdep['channel'] = 'pecl.php.net'; - $chan = 'pecl.php.net'; - $url = - $this->_downloader->_getDepPackageDownloadUrl($newdep, $pname); - $obj = &$this->_installRegistry->getPackage($dep['name']); - if (PEAR::isError($url)) { - PEAR::popErrorHandling(); - if ($obj !== null && $this->isInstalled($obj, $dep['rel'])) { - $group = (!isset($dep['optional']) || $dep['optional'] == 'no') ? - 'required' : - 'optional'; - $dep['package'] = $dep['name']; - if (!isset($options['soft'])) { - $this->_downloader->log(3, $this->getShortName() . - ': Skipping ' . $group . ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", already installed as version ' . $obj->getVersion()); - } - $skip = count($skipnames) ? - $skipnames[count($skipnames) - 1] : ''; - if ($skip == - $this->_registry->parsedPackageNameToString($dep, true)) { - array_pop($skipnames); - } - continue; - } else { - if (isset($dep['optional']) && $dep['optional'] == 'yes') { - $this->_downloader->log(2, $this->getShortName() . - ': Skipping optional dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", no releases exist'); - continue; - } else { - return $url; - } - } - } - } - PEAR::popErrorHandling(); - if (!isset($options['alldeps'])) { - if (isset($dep['optional']) && $dep['optional'] == 'yes') { - if (!isset($options['soft'])) { - $this->_downloader->log(3, 'Notice: package "' . - $this->getShortName() . - '" optional dependency "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $chan, 'package' => - $dep['name']), true) . - '" will not be automatically downloaded'); - } - $skipnames[] = $this->_registry->parsedPackageNameToString( - array('channel' => $chan, 'package' => - $dep['name']), true); - $nodownload = true; - } - } - if (!isset($options['alldeps']) && !isset($options['onlyreqdeps'])) { - if (!isset($dep['optional']) || $dep['optional'] == 'no') { - if (!isset($options['soft'])) { - $this->_downloader->log(3, 'Notice: package "' . - $this->getShortName() . - '" required dependency "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $chan, 'package' => - $dep['name']), true) . - '" will not be automatically downloaded'); - } - $skipnames[] = $this->_registry->parsedPackageNameToString( - array('channel' => $chan, 'package' => - $dep['name']), true); - $nodownload = true; - } - } - // check to see if a dep is already installed - // do not try to move this before getDepPackageDownloadURL - // we can't determine whether upgrade is necessary until we know what - // version would be downloaded - if (!isset($options['force']) && $this->isInstalled( - $url, $dep['rel'])) { - $group = (!isset($dep['optional']) || $dep['optional'] == 'no') ? - 'required' : - 'optional'; - $dep['package'] = $dep['name']; - if (isset($newdep)) { - $version = $this->_installRegistry->packageInfo($newdep['name'], 'version', - $newdep['channel']); - } else { - $version = $this->_installRegistry->packageInfo($dep['name'], 'version'); - } - $dep['version'] = $url['version']; - if (!isset($options['soft'])) { - $this->_downloader->log(3, $this->getShortName() . ': Skipping ' . $group . - ' dependency "' . - $this->_registry->parsedPackageNameToString($dep, true) . - '", already installed as version ' . $version); - } - $skip = count($skipnames) ? - $skipnames[count($skipnames) - 1] : ''; - if ($skip == - $this->_registry->parsedPackageNameToString($dep, true)) { - array_pop($skipnames); - } - continue; - } - if ($nodownload) { - continue; - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if (isset($newdep)) { - $dep = $newdep; - } - $dep['package'] = $dep['name']; - $ret = $this->_analyzeDownloadURL($url, 'dependency', $dep, $params, - isset($dep['optional']) && $dep['optional'] == 'yes' && - !isset($options['alldeps']), true); - PEAR::popErrorHandling(); - if (PEAR::isError($ret)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $ret->getMessage()); - } - continue; - } - $this->_downloadDeps[] = $ret; - } - } - if (count($skipnames)) { - if (!isset($options['soft'])) { - $this->_downloader->log(1, 'Did not download dependencies: ' . - implode(', ', $skipnames) . - ', use --alldeps or --onlyreqdeps to download automatically'); - } - } - } - - function setDownloadURL($pkg) - { - $this->_downloadURL = $pkg; - } - - /** - * Set the package.xml object for this downloaded package - * - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 $pkg - */ - function setPackageFile(&$pkg) - { - $this->_packagefile = &$pkg; - } - - function getShortName() - { - return $this->_registry->parsedPackageNameToString(array('channel' => $this->getChannel(), - 'package' => $this->getPackage()), true); - } - - function getParsedPackage() - { - if (isset($this->_packagefile) || isset($this->_parsedname)) { - return array('channel' => $this->getChannel(), - 'package' => $this->getPackage(), - 'version' => $this->getVersion()); - } - return false; - } - - function getDownloadURL() - { - return $this->_downloadURL; - } - - function canDefault() - { - if (isset($this->_downloadURL)) { - if (isset($this->_downloadURL['nodefault'])) { - return false; - } - } - return true; - } - - function getPackage() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getPackage(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getPackage(); - } else { - return false; - } - } - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - */ - function isSubpackage(&$pf) - { - if (isset($this->_packagefile)) { - return $this->_packagefile->isSubpackage($pf); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->isSubpackage($pf); - } else { - return false; - } - } - - function getPackageType() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getPackageType(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getPackageType(); - } else { - return false; - } - } - - function isBundle() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getPackageType() == 'bundle'; - } else { - return false; - } - } - - function getPackageXmlVersion() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getPackagexmlVersion(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getPackagexmlVersion(); - } else { - return '1.0'; - } - } - - function getChannel() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getChannel(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getChannel(); - } else { - return false; - } - } - - function getURI() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getURI(); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->getURI(); - } else { - return false; - } - } - - function getVersion() - { - if (isset($this->_packagefile)) { - return $this->_packagefile->getVersion(); - } elseif (isset($this->_downloadURL['version'])) { - return $this->_downloadURL['version']; - } else { - return false; - } - } - - function isCompatible($pf) - { - if (isset($this->_packagefile)) { - return $this->_packagefile->isCompatible($pf); - } elseif (isset($this->_downloadURL['info'])) { - return $this->_downloadURL['info']->isCompatible($pf); - } else { - return true; - } - } - - function setGroup($group) - { - $this->_parsedname['group'] = $group; - } - - function getGroup() - { - if (isset($this->_parsedname['group'])) { - return $this->_parsedname['group']; - } else { - return ''; - } - } - - function isExtension($name) - { - if (isset($this->_packagefile)) { - return $this->_packagefile->isExtension($name); - } elseif (isset($this->_downloadURL['info'])) { - if ($this->_downloadURL['info']->getPackagexmlVersion() == '2.0') { - return $this->_downloadURL['info']->getProvidesExtension() == $name; - } else { - return false; - } - } else { - return false; - } - } - - function getDeps() - { - if (isset($this->_packagefile)) { - $ver = $this->_packagefile->getPackagexmlVersion(); - if (version_compare($ver, '2.0', '>=')) { - return $this->_packagefile->getDeps(true); - } else { - return $this->_packagefile->getDeps(); - } - } elseif (isset($this->_downloadURL['info'])) { - $ver = $this->_downloadURL['info']->getPackagexmlVersion(); - if (version_compare($ver, '2.0', '>=')) { - return $this->_downloadURL['info']->getDeps(true); - } else { - return $this->_downloadURL['info']->getDeps(); - } - } else { - return array(); - } - } - - /** - * @param array Parsed array from {@link PEAR_Registry::parsePackageName()} or a dependency - * returned from getDepDownloadURL() - */ - function isEqual($param) - { - if (is_object($param)) { - $channel = $param->getChannel(); - $package = $param->getPackage(); - if ($param->getURI()) { - $param = array( - 'channel' => $param->getChannel(), - 'package' => $param->getPackage(), - 'version' => $param->getVersion(), - 'uri' => $param->getURI(), - ); - } else { - $param = array( - 'channel' => $param->getChannel(), - 'package' => $param->getPackage(), - 'version' => $param->getVersion(), - ); - } - } else { - if (isset($param['uri'])) { - if ($this->getChannel() != '__uri') { - return false; - } - return $param['uri'] == $this->getURI(); - } - $package = isset($param['package']) ? $param['package'] : - $param['info']->getPackage(); - $channel = isset($param['channel']) ? $param['channel'] : - $param['info']->getChannel(); - if (isset($param['rel'])) { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - $newdep = PEAR_Dependency2::normalizeDep($param); - $newdep = $newdep[0]; - } elseif (isset($param['min'])) { - $newdep = $param; - } - } - if (isset($newdep)) { - if (!isset($newdep['min'])) { - $newdep['min'] = '0'; - } - if (!isset($newdep['max'])) { - $newdep['max'] = '100000000000000000000'; - } - // use magic to support pecl packages suddenly jumping to the pecl channel - // we need to support both dependency possibilities - if ($channel == 'pear.php.net' && $this->getChannel() == 'pecl.php.net') { - if ($package == $this->getPackage()) { - $channel = 'pecl.php.net'; - } - } - if ($channel == 'pecl.php.net' && $this->getChannel() == 'pear.php.net') { - if ($package == $this->getPackage()) { - $channel = 'pear.php.net'; - } - } - return (strtolower($package) == strtolower($this->getPackage()) && - $channel == $this->getChannel() && - version_compare($newdep['min'], $this->getVersion(), '<=') && - version_compare($newdep['max'], $this->getVersion(), '>=')); - } - // use magic to support pecl packages suddenly jumping to the pecl channel - if ($channel == 'pecl.php.net' && $this->getChannel() == 'pear.php.net') { - if (strtolower($package) == strtolower($this->getPackage())) { - $channel = 'pear.php.net'; - } - } - if (isset($param['version'])) { - return (strtolower($package) == strtolower($this->getPackage()) && - $channel == $this->getChannel() && - $param['version'] == $this->getVersion()); - } else { - return strtolower($package) == strtolower($this->getPackage()) && - $channel == $this->getChannel(); - } - } - - function isInstalled($dep, $oper = '==') - { - if (!$dep) { - return false; - } - if ($oper != 'ge' && $oper != 'gt' && $oper != 'has' && $oper != '==') { - return false; - } - if (is_object($dep)) { - $package = $dep->getPackage(); - $channel = $dep->getChannel(); - if ($dep->getURI()) { - $dep = array( - 'uri' => $dep->getURI(), - 'version' => $dep->getVersion(), - ); - } else { - $dep = array( - 'version' => $dep->getVersion(), - ); - } - } else { - if (isset($dep['uri'])) { - $channel = '__uri'; - $package = $dep['dep']['name']; - } else { - $channel = $dep['info']->getChannel(); - $package = $dep['info']->getPackage(); - } - } - $options = $this->_downloader->getOptions(); - $test = $this->_installRegistry->packageExists($package, $channel); - if (!$test && $channel == 'pecl.php.net') { - // do magic to allow upgrading from old pecl packages to new ones - $test = $this->_installRegistry->packageExists($package, 'pear.php.net'); - $channel = 'pear.php.net'; - } - if ($test) { - if (isset($dep['uri'])) { - if ($this->_installRegistry->packageInfo($package, 'uri', '__uri') == $dep['uri']) { - return true; - } - } - if (isset($options['upgrade'])) { - if ($oper == 'has') { - if (version_compare($this->_installRegistry->packageInfo( - $package, 'version', $channel), - $dep['version'], '>=')) { - return true; - } else { - return false; - } - } else { - if (version_compare($this->_installRegistry->packageInfo( - $package, 'version', $channel), - $dep['version'], '>=')) { - return true; - } - return false; - } - } - return true; - } - return false; - } - - /** - * Detect duplicate package names with differing versions - * - * If a user requests to install Date 1.4.6 and Date 1.4.7, - * for instance, this is a logic error. This method - * detects this situation. - * - * @param array $params array of PEAR_Downloader_Package objects - * @param array $errorparams empty array - * @return array array of stupid duplicated packages in PEAR_Downloader_Package obejcts - */ - function detectStupidDuplicates($params, &$errorparams) - { - $existing = array(); - foreach ($params as $i => $param) { - $package = $param->getPackage(); - $channel = $param->getChannel(); - $group = $param->getGroup(); - if (!isset($existing[$channel . '/' . $package])) { - $existing[$channel . '/' . $package] = array(); - } - if (!isset($existing[$channel . '/' . $package][$group])) { - $existing[$channel . '/' . $package][$group] = array(); - } - $existing[$channel . '/' . $package][$group][] = $i; - } - - $indices = array(); - foreach ($existing as $package => $groups) { - foreach ($groups as $group => $dupes) { - if (count($dupes) > 1) { - $indices = $indices + $dupes; - } - } - } - - $indices = array_unique($indices); - foreach ($indices as $index) { - $errorparams[] = $params[$index]; - } - return count($errorparams); - } - - /** - * @param array - * @param bool ignore install groups - for final removal of dupe packages - * @static - */ - function removeDuplicates(&$params, $ignoreGroups = false) - { - $pnames = array(); - foreach ($params as $i => $param) { - if (!$param) { - continue; - } - if ($param->getPackage()) { - if ($ignoreGroups) { - $group = ''; - } else { - $group = $param->getGroup(); - } - $pnames[$i] = $param->getChannel() . '/' . - $param->getPackage() . '-' . $param->getVersion() . '#' . $group; - } - } - $pnames = array_unique($pnames); - $unset = array_diff(array_keys($params), array_keys($pnames)); - $testp = array_flip($pnames); - foreach ($params as $i => $param) { - if (!$param) { - $unset[] = $i; - continue; - } - if (!is_a($param, 'PEAR_Downloader_Package')) { - $unset[] = $i; - continue; - } - if ($ignoreGroups) { - $group = ''; - } else { - $group = $param->getGroup(); - } - if (!isset($testp[$param->getChannel() . '/' . $param->getPackage() . '-' . - $param->getVersion() . '#' . $group])) { - $unset[] = $i; - } - } - foreach ($unset as $i) { - unset($params[$i]); - } - $ret = array(); - foreach ($params as $i => $param) { - $ret[] = &$params[$i]; - } - $params = array(); - foreach ($ret as $i => $param) { - $params[] = &$ret[$i]; - } - } - - function explicitState() - { - return $this->_explicitState; - } - - function setExplicitState($s) - { - $this->_explicitState = $s; - } - - /** - * @static - */ - function mergeDependencies(&$params) - { - $newparams = array(); - $bundles = array(); - foreach ($params as $i => $param) { - if (!$param->isBundle()) { - continue; - } - $bundles[] = $i; - $pf = &$param->getPackageFile(); - $newdeps = array(); - $contents = $pf->getBundledPackages(); - if (!is_array($contents)) { - $contents = array($contents); - } - foreach ($contents as $file) { - $filecontents = $pf->getFileContents($file); - $dl = &$param->getDownloader(); - $options = $dl->getOptions(); - if (PEAR::isError($dir = $dl->getDownloadDir())) { - return $dir; - } - $fp = @fopen($dir . DIRECTORY_SEPARATOR . $file, 'wb'); - if (!$fp) { - continue; - } - fwrite($fp, $filecontents, strlen($filecontents)); - fclose($fp); - if ($s = $params[$i]->explicitState()) { - $obj->setExplicitState($s); - } - $obj = &new PEAR_Downloader_Package($params[$i]->getDownloader()); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if (PEAR::isError($dir = $dl->getDownloadDir())) { - PEAR::popErrorHandling(); - return $dir; - } - $e = $obj->_fromFile($a = $dir . DIRECTORY_SEPARATOR . $file); - PEAR::popErrorHandling(); - if (PEAR::isError($e)) { - if (!isset($options['soft'])) { - $dl->log(0, $e->getMessage()); - } - continue; - } - $j = &$obj; - if (!PEAR_Downloader_Package::willDownload($j, - array_merge($params, $newparams)) && !$param->isInstalled($j)) { - $newparams[] = &$j; - } - } - } - foreach ($bundles as $i) { - unset($params[$i]); // remove bundles - only their contents matter for installation - } - PEAR_Downloader_Package::removeDuplicates($params); // strip any unset indices - if (count($newparams)) { // add in bundled packages for install - foreach ($newparams as $i => $unused) { - $params[] = &$newparams[$i]; - } - $newparams = array(); - } - foreach ($params as $i => $param) { - $newdeps = array(); - foreach ($param->_downloadDeps as $dep) { - if (!PEAR_Downloader_Package::willDownload($dep, - array_merge($params, $newparams)) && !$param->isInstalled($dep)) { - $newdeps[] = $dep; - } else { - // detect versioning conflicts here - } - } - // convert the dependencies into PEAR_Downloader_Package objects for the next time - // around - $params[$i]->_downloadDeps = array(); - foreach ($newdeps as $dep) { - $obj = &new PEAR_Downloader_Package($params[$i]->getDownloader()); - if ($s = $params[$i]->explicitState()) { - $obj->setExplicitState($s); - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $e = $obj->fromDepURL($dep); - PEAR::popErrorHandling(); - if (PEAR::isError($e)) { - if (!isset($options['soft'])) { - $obj->_downloader->log(0, $e->getMessage()); - } - continue; - } - $e = $obj->detectDependencies($params); - if (PEAR::isError($e)) { - if (!isset($options['soft'])) { - $obj->_downloader->log(0, $e->getMessage()); - } - } - $j = &$obj; - $newparams[] = &$j; - } - } - if (count($newparams)) { - foreach ($newparams as $i => $unused) { - $params[] = &$newparams[$i]; - } - return true; - } else { - return false; - } - } - - - /** - * @static - */ - function willDownload($param, $params) - { - if (!is_array($params)) { - return false; - } - foreach ($params as $obj) { - if ($obj->isEqual($param)) { - return true; - } - } - return false; - } - - /** - * For simpler unit-testing - * @param PEAR_Config - * @param int - * @param string - */ - function &getPackagefileObject(&$c, $d, $t = false) - { - $a = &new PEAR_PackageFile($c, $d, $t); - return $a; - } - - - /** - * This will retrieve from a local file if possible, and parse out - * a group name as well. The original parameter will be modified to reflect this. - * @param string|array can be a parsed package name as well - * @access private - */ - function _fromFile(&$param) - { - $saveparam = $param; - if (is_string($param)) { - if (!@file_exists($param)) { - $test = explode('#', $param); - $group = array_pop($test); - if (@file_exists(implode('#', $test))) { - $this->setGroup($group); - $param = implode('#', $test); - $this->_explicitGroup = true; - } - } - if (@is_file($param)) { - $this->_type = 'local'; - $options = $this->_downloader->getOptions(); - if (isset($options['downloadonly'])) { - $pkg = &$this->getPackagefileObject($this->_config, - $this->_downloader->_debug); - } else { - if (PEAR::isError($dir = $this->_downloader->getDownloadDir())) { - return $dir; - } - $pkg = &$this->getPackagefileObject($this->_config, - $this->_downloader->_debug, $dir); - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pf = &$pkg->fromAnyFile($param, PEAR_VALIDATE_INSTALLING); - PEAR::popErrorHandling(); - if (PEAR::isError($pf)) { - $this->_valid = false; - $param = $saveparam; - return $pf; - } - $this->_packagefile = &$pf; - if (!$this->getGroup()) { - $this->setGroup('default'); // install the default dependency group - } - return $this->_valid = true; - } - } - $param = $saveparam; - return $this->_valid = false; - } - - function _fromUrl($param, $saveparam = '') - { - if (!is_array($param) && - (preg_match('#^(http|ftp)://#', $param))) { - $options = $this->_downloader->getOptions(); - $this->_type = 'url'; - $callback = $this->_downloader->ui ? - array(&$this->_downloader, '_downloadCallback') : null; - $this->_downloader->pushErrorHandling(PEAR_ERROR_RETURN); - if (PEAR::isError($dir = $this->_downloader->getDownloadDir())) { - $this->_downloader->popErrorHandling(); - return $dir; - } - $this->_downloader->log(3, 'Downloading "' . $param . '"'); - $file = $this->_downloader->downloadHttp($param, $this->_downloader->ui, - $dir, $callback, null, false, $this->getChannel()); - $this->_downloader->popErrorHandling(); - if (PEAR::isError($file)) { - if (!empty($saveparam)) { - $saveparam = ", cannot download \"$saveparam\""; - } - $err = PEAR::raiseError('Could not download from "' . $param . - '"' . $saveparam . ' (' . $file->getMessage() . ')'); - return $err; - } - if ($this->_rawpackagefile) { - require_once 'Archive/Tar.php'; - $tar = &new Archive_Tar($file); - $packagexml = $tar->extractInString('package2.xml'); - if (!$packagexml) { - $packagexml = $tar->extractInString('package.xml'); - } - if (str_replace(array("\n", "\r"), array('',''), $packagexml) != - str_replace(array("\n", "\r"), array('',''), $this->_rawpackagefile)) { - if ($this->getChannel() == 'pear.php.net') { - // be more lax for the existing PEAR packages that have not-ok - // characters in their package.xml - $this->_downloader->log(0, 'CRITICAL WARNING: The "' . - $this->getPackage() . '" package has invalid characters in its ' . - 'package.xml. The next version of PEAR may not be able to install ' . - 'this package for security reasons. Please open a bug report at ' . - 'http://pear.php.net/package/' . $this->getPackage() . '/bugs'); - } else { - return PEAR::raiseError('CRITICAL ERROR: package.xml downloaded does ' . - 'not match value returned from xml-rpc'); - } - } - } - // whew, download worked! - if (isset($options['downloadonly'])) { - $pkg = &$this->getPackagefileObject($this->_config, $this->_downloader->debug); - } else { - if (PEAR::isError($dir = $this->_downloader->getDownloadDir())) { - return $dir; - } - $pkg = &$this->getPackagefileObject($this->_config, $this->_downloader->debug, - $dir); - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pf = &$pkg->fromAnyFile($file, PEAR_VALIDATE_INSTALLING); - PEAR::popErrorHandling(); - if (PEAR::isError($pf)) { - if (is_array($pf->getUserInfo())) { - foreach ($pf->getUserInfo() as $err) { - if (is_array($err)) { - $err = $err['message']; - } - if (!isset($options['soft'])) { - $this->_downloader->log(0, "Validation Error: $err"); - } - } - } - if (!isset($options['soft'])) { - $this->_downloader->log(0, $pf->getMessage()); - } - $err = PEAR::raiseError('Download of "' . ($saveparam ? $saveparam : - $param) . '" succeeded, but it is not a valid package archive'); - $this->_valid = false; - return $err; - } - $this->_packagefile = &$pf; - $this->setGroup('default'); // install the default dependency group - return $this->_valid = true; - } - return $this->_valid = false; - } - - /** - * - * @param string|array pass in an array of format - * array( - * 'package' => 'pname', - * ['channel' => 'channame',] - * ['version' => 'version',] - * ['state' => 'state',]) - * or a string of format [channame/]pname[-version|-state] - */ - function _fromString($param) - { - $options = $this->_downloader->getOptions(); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pname = $this->_registry->parsePackageName($param, - $this->_config->get('default_channel')); - PEAR::popErrorHandling(); - if (PEAR::isError($pname)) { - if ($pname->getCode() == 'invalid') { - $this->_valid = false; - return false; - } - if ($pname->getCode() == 'channel') { - $parsed = $pname->getUserInfo(); - if ($this->_downloader->discover($parsed['channel'])) { - if ($this->_config->get('auto_discover')) { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pname = $this->_registry->parsePackageName($param, - $this->_config->get('default_channel')); - PEAR::popErrorHandling(); - } else { - if (!isset($options['soft'])) { - $this->_downloader->log(0, 'Channel "' . $parsed['channel'] . - '" is not initialized, use ' . - '"pear channel-discover ' . $parsed['channel'] . '" to initialize' . - 'or pear config-set auto_discover 1'); - } - } - } - if (PEAR::isError($pname)) { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $pname->getMessage()); - } - if (is_array($param)) { - $param = $this->_registry->parsedPackageNameToString($param); - } - $err = PEAR::raiseError('invalid package name/package file "' . - $param . '"'); - $this->_valid = false; - return $err; - } - } else { - if (!isset($options['soft'])) { - $this->_downloader->log(0, $pname->getMessage()); - } - $err = PEAR::raiseError('invalid package name/package file "' . - $param . '"'); - $this->_valid = false; - return $err; - } - } - if (!isset($this->_type)) { - $this->_type = 'xmlrpc'; - } - $this->_parsedname = $pname; - if (isset($pname['state'])) { - $this->_explicitState = $pname['state']; - } else { - $this->_explicitState = false; - } - if (isset($pname['group'])) { - $this->_explicitGroup = true; - } else { - $this->_explicitGroup = false; - } - $info = $this->_downloader->_getPackageDownloadUrl($pname); - if (PEAR::isError($info)) { - if ($info->getCode() != -976 && $pname['channel'] == 'pear.php.net') { - // try pecl - $pname['channel'] = 'pecl.php.net'; - if ($test = $this->_downloader->_getPackageDownloadUrl($pname)) { - if (!PEAR::isError($test)) { - $info = PEAR::raiseError($info->getMessage() . ' - package ' . - $this->_registry->parsedPackageNameToString($pname, true) . - ' can be installed with "pecl install ' . $pname['package'] . - '"'); - } else { - $pname['channel'] = 'pear.php.net'; - } - } else { - $pname['channel'] = 'pear.php.net'; - } - } - return $info; - } - $this->_rawpackagefile = $info['raw']; - $ret = $this->_analyzeDownloadURL($info, $param, $pname); - if (PEAR::isError($ret)) { - return $ret; - } - if ($ret) { - $this->_downloadURL = $ret; - return $this->_valid = (bool) $ret; - } - } - - /** - * @param array output of package.getDownloadURL - * @param string|array|object information for detecting packages to be downloaded, and - * for errors - * @param array name information of the package - * @param array|null packages to be downloaded - * @param bool is this an optional dependency? - * @param bool is this any kind of dependency? - * @access private - */ - function _analyzeDownloadURL($info, $param, $pname, $params = null, $optional = false, - $isdependency = false) - { - if (!is_string($param) && PEAR_Downloader_Package::willDownload($param, $params)) { - return false; - } - if (!$info) { - if (!is_string($param)) { - $saveparam = ", cannot download \"$param\""; - } else { - $saveparam = ''; - } - // no releases exist - return PEAR::raiseError('No releases for package "' . - $this->_registry->parsedPackageNameToString($pname, true) . '" exist' . $saveparam); - } - if (strtolower($info['info']->getChannel()) != strtolower($pname['channel'])) { - $err = false; - if ($pname['channel'] == 'pecl.php.net') { - if ($info['info']->getChannel() != 'pear.php.net') { - $err = true; - } - } elseif ($info['info']->getChannel() == 'pecl.php.net') { - if ($pname['channel'] != 'pear.php.net') { - $err = true; - } - } else { - $err = true; - } - if ($err) { - return PEAR::raiseError('SECURITY ERROR: package in channel "' . $pname['channel'] . - '" retrieved another channel\'s name for download! ("' . - $info['info']->getChannel() . '")'); - } - } - if (!isset($info['url'])) { - if ($this->isInstalled($info)) { - if ($isdependency && version_compare($info['version'], - $this->_registry->packageInfo($info['info']->getPackage(), - 'version', $info['info']->getChannel()), '<=')) { - // ignore bogus errors of "failed to download dependency" - // if it is already installed and the one that would be - // downloaded is older or the same version (Bug #7219) - return false; - } - } - $instead = ', will instead download version ' . $info['version'] . - ', stability "' . $info['info']->getState() . '"'; - // releases exist, but we failed to get any - if (isset($this->_downloader->_options['force'])) { - if (isset($pname['version'])) { - $vs = ', version "' . $pname['version'] . '"'; - } elseif (isset($pname['state'])) { - $vs = ', stability "' . $pname['state'] . '"'; - } elseif ($param == 'dependency') { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - if (!in_array($info['info']->getState(), - PEAR_Common::betterStates($this->_config->get('preferred_state'), true))) { - if ($optional) { - // don't spit out confusing error message - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } - $vs = ' within preferred state "' . $this->_config->get('preferred_state') . - '"'; - } else { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - if ($optional) { - // don't spit out confusing error message - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } - $vs = PEAR_Dependency2::_getExtraString($pname); - $instead = ''; - } - } else { - $vs = ' within preferred state "' . $this->_config->get( - 'preferred_state') . '"'; - } - if (!isset($options['soft'])) { - $this->_downloader->log(1, 'WARNING: failed to download ' . $pname['channel'] . - '/' . $pname['package'] . $vs . $instead); - } - // download the latest release - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } else { - if (isset($info['php']) && $info['php']) { - $err = PEAR::raiseError('Failed to download ' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], - 'package' => $pname['package']), - true) . - ', latest release is version ' . $info['php']['v'] . - ', but it requires PHP version "' . - $info['php']['m'] . '", use "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package'], - 'version' => $info['php']['v'])) . '" to install', - PEAR_DOWNLOADER_PACKAGE_PHPVERSION); - return $err; - } - // construct helpful error message - if (isset($pname['version'])) { - $vs = ', version "' . $pname['version'] . '"'; - } elseif (isset($pname['state'])) { - $vs = ', stability "' . $pname['state'] . '"'; - } elseif ($param == 'dependency') { - if (!class_exists('PEAR_Common')) { - require_once 'PEAR/Common.php'; - } - if (!in_array($info['info']->getState(), - PEAR_Common::betterStates($this->_config->get('preferred_state'), true))) { - if ($optional) { - // don't spit out confusing error message, and don't die on - // optional dep failure! - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } - $vs = ' within preferred state "' . $this->_config->get('preferred_state') . - '"'; - } else { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - if ($optional) { - // don't spit out confusing error message, and don't die on - // optional dep failure! - return $this->_downloader->_getPackageDownloadUrl( - array('package' => $pname['package'], - 'channel' => $pname['channel'], - 'version' => $info['version'])); - } - $vs = PEAR_Dependency2::_getExtraString($pname); - } - } else { - $vs = ' within preferred state "' . $this->_downloader->config->get( - 'preferred_state') . '"'; - } - $options = $this->_downloader->getOptions(); - // this is only set by the "download-all" command - if (isset($options['ignorepreferred_state'])) { - $err = PEAR::raiseError( - 'Failed to download ' . $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package']), - true) - . $vs . - ', latest release is version ' . $info['version'] . - ', stability "' . $info['info']->getState() . '", use "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package'], - 'version' => $info['version'])) . '" to install', - PEAR_DOWNLOADER_PACKAGE_STATE); - return $err; - } - $err = PEAR::raiseError( - 'Failed to download ' . $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package']), - true) - . $vs . - ', latest release is version ' . $info['version'] . - ', stability "' . $info['info']->getState() . '", use "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pname['channel'], 'package' => $pname['package'], - 'version' => $info['version'])) . '" to install'); - return $err; - } - } - if (isset($info['deprecated']) && $info['deprecated']) { - $this->_downloader->log(0, - 'WARNING: "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $info['info']->getChannel(), - 'package' => $info['info']->getPackage()), true) . - '" is deprecated in favor of "' . - $this->_registry->parsedPackageNameToString($info['deprecated'], true) . - '"'); - } - return $info; - } -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/ErrorStack.php b/src/vitis/vas/rest/class/PEAR/ErrorStack.php deleted file mode 100755 index ad0490110dd16dff3d6b89e1a2dfbe9b1e950a94..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/ErrorStack.php +++ /dev/null @@ -1,985 +0,0 @@ -<?php -/** - * Error Stack Implementation - * - * This is an incredibly simple implementation of a very complex error handling - * facility. It contains the ability - * to track multiple errors from multiple packages simultaneously. In addition, - * it can track errors of many levels, save data along with the error, context - * information such as the exact file, line number, class and function that - * generated the error, and if necessary, it can raise a traditional PEAR_Error. - * It has built-in support for PEAR::Log, to log errors as they occur - * - * Since version 0.2alpha, it is also possible to selectively ignore errors, - * through the use of an error callback, see {@link pushCallback()} - * - * Since version 0.3alpha, it is possible to specify the exception class - * returned from {@link push()} - * - * Since version PEAR1.3.2, ErrorStack no longer instantiates an exception class. This can - * still be done quite handily in an error callback or by manipulating the returned array - * @category Debugging - * @package PEAR_ErrorStack - * @author Greg Beaver <cellog@php.net> - * @copyright 2004-2008 Greg Beaver - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: ErrorStack.php,v 1.28 2008/01/03 20:26:35 cellog Exp $ - * @link http://pear.php.net/package/PEAR_ErrorStack - */ - -/** - * Singleton storage - * - * Format: - * <pre> - * array( - * 'package1' => PEAR_ErrorStack object, - * 'package2' => PEAR_ErrorStack object, - * ... - * ) - * </pre> - * @access private - * @global array $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] - */ -$GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] = array(); - -/** - * Global error callback (default) - * - * This is only used if set to non-false. * is the default callback for - * all packages, whereas specific packages may set a default callback - * for all instances, regardless of whether they are a singleton or not. - * - * To exclude non-singletons, only set the local callback for the singleton - * @see PEAR_ErrorStack::setDefaultCallback() - * @access private - * @global array $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'] - */ -$GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'] = array( - '*' => false, -); - -/** - * Global Log object (default) - * - * This is only used if set to non-false. Use to set a default log object for - * all stacks, regardless of instantiation order or location - * @see PEAR_ErrorStack::setDefaultLogger() - * @access private - * @global array $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] - */ -$GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] = false; - -/** - * Global Overriding Callback - * - * This callback will override any error callbacks that specific loggers have set. - * Use with EXTREME caution - * @see PEAR_ErrorStack::staticPushCallback() - * @access private - * @global array $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] - */ -$GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK'] = array(); - -/**#@+ - * One of four possible return values from the error Callback - * @see PEAR_ErrorStack::_errorCallback() - */ -/** - * If this is returned, then the error will be both pushed onto the stack - * and logged. - */ -define('PEAR_ERRORSTACK_PUSHANDLOG', 1); -/** - * If this is returned, then the error will only be pushed onto the stack, - * and not logged. - */ -define('PEAR_ERRORSTACK_PUSH', 2); -/** - * If this is returned, then the error will only be logged, but not pushed - * onto the error stack. - */ -define('PEAR_ERRORSTACK_LOG', 3); -/** - * If this is returned, then the error is completely ignored. - */ -define('PEAR_ERRORSTACK_IGNORE', 4); -/** - * If this is returned, then the error is logged and die() is called. - */ -define('PEAR_ERRORSTACK_DIE', 5); -/**#@-*/ - -/** - * Error code for an attempt to instantiate a non-class as a PEAR_ErrorStack in - * the singleton method. - */ -define('PEAR_ERRORSTACK_ERR_NONCLASS', 1); - -/** - * Error code for an attempt to pass an object into {@link PEAR_ErrorStack::getMessage()} - * that has no __toString() method - */ -define('PEAR_ERRORSTACK_ERR_OBJTOSTRING', 2); -/** - * Error Stack Implementation - * - * Usage: - * <code> - * // global error stack - * $global_stack = &PEAR_ErrorStack::singleton('MyPackage'); - * // local error stack - * $local_stack = new PEAR_ErrorStack('MyPackage'); - * </code> - * @author Greg Beaver <cellog@php.net> - * @version 1.7.2 - * @package PEAR_ErrorStack - * @category Debugging - * @copyright 2004-2008 Greg Beaver - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: ErrorStack.php,v 1.28 2008/01/03 20:26:35 cellog Exp $ - * @link http://pear.php.net/package/PEAR_ErrorStack - */ -class PEAR_ErrorStack { - /** - * Errors are stored in the order that they are pushed on the stack. - * @since 0.4alpha Errors are no longer organized by error level. - * This renders pop() nearly unusable, and levels could be more easily - * handled in a callback anyway - * @var array - * @access private - */ - var $_errors = array(); - - /** - * Storage of errors by level. - * - * Allows easy retrieval and deletion of only errors from a particular level - * @since PEAR 1.4.0dev - * @var array - * @access private - */ - var $_errorsByLevel = array(); - - /** - * Package name this error stack represents - * @var string - * @access protected - */ - var $_package; - - /** - * Determines whether a PEAR_Error is thrown upon every error addition - * @var boolean - * @access private - */ - var $_compat = false; - - /** - * If set to a valid callback, this will be used to generate the error - * message from the error code, otherwise the message passed in will be - * used - * @var false|string|array - * @access private - */ - var $_msgCallback = false; - - /** - * If set to a valid callback, this will be used to generate the error - * context for an error. For PHP-related errors, this will be a file - * and line number as retrieved from debug_backtrace(), but can be - * customized for other purposes. The error might actually be in a separate - * configuration file, or in a database query. - * @var false|string|array - * @access protected - */ - var $_contextCallback = false; - - /** - * If set to a valid callback, this will be called every time an error - * is pushed onto the stack. The return value will be used to determine - * whether to allow an error to be pushed or logged. - * - * The return value must be one an PEAR_ERRORSTACK_* constant - * @see PEAR_ERRORSTACK_PUSHANDLOG, PEAR_ERRORSTACK_PUSH, PEAR_ERRORSTACK_LOG - * @var false|string|array - * @access protected - */ - var $_errorCallback = array(); - - /** - * PEAR::Log object for logging errors - * @var false|Log - * @access protected - */ - var $_logger = false; - - /** - * Error messages - designed to be overridden - * @var array - * @abstract - */ - var $_errorMsgs = array(); - - /** - * Set up a new error stack - * - * @param string $package name of the package this error stack represents - * @param callback $msgCallback callback used for error message generation - * @param callback $contextCallback callback used for context generation, - * defaults to {@link getFileLine()} - * @param boolean $throwPEAR_Error - */ - function PEAR_ErrorStack($package, $msgCallback = false, $contextCallback = false, - $throwPEAR_Error = false) - { - $this->_package = $package; - $this->setMessageCallback($msgCallback); - $this->setContextCallback($contextCallback); - $this->_compat = $throwPEAR_Error; - } - - /** - * Return a single error stack for this package. - * - * Note that all parameters are ignored if the stack for package $package - * has already been instantiated - * @param string $package name of the package this error stack represents - * @param callback $msgCallback callback used for error message generation - * @param callback $contextCallback callback used for context generation, - * defaults to {@link getFileLine()} - * @param boolean $throwPEAR_Error - * @param string $stackClass class to instantiate - * @static - * @return PEAR_ErrorStack - */ - function &singleton($package, $msgCallback = false, $contextCallback = false, - $throwPEAR_Error = false, $stackClass = 'PEAR_ErrorStack') - { - if (isset($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package])) { - return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]; - } - if (!class_exists($stackClass)) { - if (function_exists('debug_backtrace')) { - $trace = debug_backtrace(); - } - PEAR_ErrorStack::staticPush('PEAR_ErrorStack', PEAR_ERRORSTACK_ERR_NONCLASS, - 'exception', array('stackclass' => $stackClass), - 'stack class "%stackclass%" is not a valid class name (should be like PEAR_ErrorStack)', - false, $trace); - } - $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package] = - new $stackClass($package, $msgCallback, $contextCallback, $throwPEAR_Error); - - return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]; - } - - /** - * Internal error handler for PEAR_ErrorStack class - * - * Dies if the error is an exception (and would have died anyway) - * @access private - */ - function _handleError($err) - { - if ($err['level'] == 'exception') { - $message = $err['message']; - if (isset($_SERVER['REQUEST_URI'])) { - echo '<br />'; - } else { - echo "\n"; - } - var_dump($err['context']); - die($message); - } - } - - /** - * Set up a PEAR::Log object for all error stacks that don't have one - * @param Log $log - * @static - */ - function setDefaultLogger(&$log) - { - if (is_object($log) && method_exists($log, 'log') ) { - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] = &$log; - } elseif (is_callable($log)) { - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER'] = &$log; - } - } - - /** - * Set up a PEAR::Log object for this error stack - * @param Log $log - */ - function setLogger(&$log) - { - if (is_object($log) && method_exists($log, 'log') ) { - $this->_logger = &$log; - } elseif (is_callable($log)) { - $this->_logger = &$log; - } - } - - /** - * Set an error code => error message mapping callback - * - * This method sets the callback that can be used to generate error - * messages for any instance - * @param array|string Callback function/method - */ - function setMessageCallback($msgCallback) - { - if (!$msgCallback) { - $this->_msgCallback = array(&$this, 'getErrorMessage'); - } else { - if (is_callable($msgCallback)) { - $this->_msgCallback = $msgCallback; - } - } - } - - /** - * Get an error code => error message mapping callback - * - * This method returns the current callback that can be used to generate error - * messages - * @return array|string|false Callback function/method or false if none - */ - function getMessageCallback() - { - return $this->_msgCallback; - } - - /** - * Sets a default callback to be used by all error stacks - * - * This method sets the callback that can be used to generate error - * messages for a singleton - * @param array|string Callback function/method - * @param string Package name, or false for all packages - * @static - */ - function setDefaultCallback($callback = false, $package = false) - { - if (!is_callable($callback)) { - $callback = false; - } - $package = $package ? $package : '*'; - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'][$package] = $callback; - } - - /** - * Set a callback that generates context information (location of error) for an error stack - * - * This method sets the callback that can be used to generate context - * information for an error. Passing in NULL will disable context generation - * and remove the expensive call to debug_backtrace() - * @param array|string|null Callback function/method - */ - function setContextCallback($contextCallback) - { - if ($contextCallback === null) { - return $this->_contextCallback = false; - } - if (!$contextCallback) { - $this->_contextCallback = array(&$this, 'getFileLine'); - } else { - if (is_callable($contextCallback)) { - $this->_contextCallback = $contextCallback; - } - } - } - - /** - * Set an error Callback - * If set to a valid callback, this will be called every time an error - * is pushed onto the stack. The return value will be used to determine - * whether to allow an error to be pushed or logged. - * - * The return value must be one of the ERRORSTACK_* constants. - * - * This functionality can be used to emulate PEAR's pushErrorHandling, and - * the PEAR_ERROR_CALLBACK mode, without affecting the integrity of - * the error stack or logging - * @see PEAR_ERRORSTACK_PUSHANDLOG, PEAR_ERRORSTACK_PUSH, PEAR_ERRORSTACK_LOG - * @see popCallback() - * @param string|array $cb - */ - function pushCallback($cb) - { - array_push($this->_errorCallback, $cb); - } - - /** - * Remove a callback from the error callback stack - * @see pushCallback() - * @return array|string|false - */ - function popCallback() - { - if (!count($this->_errorCallback)) { - return false; - } - return array_pop($this->_errorCallback); - } - - /** - * Set a temporary overriding error callback for every package error stack - * - * Use this to temporarily disable all existing callbacks (can be used - * to emulate the @ operator, for instance) - * @see PEAR_ERRORSTACK_PUSHANDLOG, PEAR_ERRORSTACK_PUSH, PEAR_ERRORSTACK_LOG - * @see staticPopCallback(), pushCallback() - * @param string|array $cb - * @static - */ - function staticPushCallback($cb) - { - array_push($GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK'], $cb); - } - - /** - * Remove a temporary overriding error callback - * @see staticPushCallback() - * @return array|string|false - * @static - */ - function staticPopCallback() - { - $ret = array_pop($GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK']); - if (!is_array($GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK'])) { - $GLOBALS['_PEAR_ERRORSTACK_OVERRIDE_CALLBACK'] = array(); - } - return $ret; - } - - /** - * Add an error to the stack - * - * If the message generator exists, it is called with 2 parameters. - * - the current Error Stack object - * - an array that is in the same format as an error. Available indices - * are 'code', 'package', 'time', 'params', 'level', and 'context' - * - * Next, if the error should contain context information, this is - * handled by the context grabbing method. - * Finally, the error is pushed onto the proper error stack - * @param int $code Package-specific error code - * @param string $level Error level. This is NOT spell-checked - * @param array $params associative array of error parameters - * @param string $msg Error message, or a portion of it if the message - * is to be generated - * @param array $repackage If this error re-packages an error pushed by - * another package, place the array returned from - * {@link pop()} in this parameter - * @param array $backtrace Protected parameter: use this to pass in the - * {@link debug_backtrace()} that should be used - * to find error context - * @return PEAR_Error|array if compatibility mode is on, a PEAR_Error is also - * thrown. If a PEAR_Error is returned, the userinfo - * property is set to the following array: - * - * <code> - * array( - * 'code' => $code, - * 'params' => $params, - * 'package' => $this->_package, - * 'level' => $level, - * 'time' => time(), - * 'context' => $context, - * 'message' => $msg, - * //['repackage' => $err] repackaged error array/Exception class - * ); - * </code> - * - * Normally, the previous array is returned. - */ - function push($code, $level = 'error', $params = array(), $msg = false, - $repackage = false, $backtrace = false) - { - $context = false; - // grab error context - if ($this->_contextCallback) { - if (!$backtrace) { - $backtrace = debug_backtrace(); - } - $context = call_user_func($this->_contextCallback, $code, $params, $backtrace); - } - - // save error - $time = explode(' ', microtime()); - $time = $time[1] + $time[0]; - $err = array( - 'code' => $code, - 'params' => $params, - 'package' => $this->_package, - 'level' => $level, - 'time' => $time, - 'context' => $context, - 'message' => $msg, - ); - - if ($repackage) { - $err['repackage'] = $repackage; - } - - // set up the error message, if necessary - if ($this->_msgCallback) { - $msg = call_user_func_array($this->_msgCallback, - array(&$this, $err)); - $err['message'] = $msg; - } - $push = $log = true; - $die = false; - // try the overriding callback first - $callback = $this->staticPopCallback(); - if ($callback) { - $this->staticPushCallback($callback); - } - if (!is_callable($callback)) { - // try the local callback next - $callback = $this->popCallback(); - if (is_callable($callback)) { - $this->pushCallback($callback); - } else { - // try the default callback - $callback = isset($GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'][$this->_package]) ? - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK'][$this->_package] : - $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_CALLBACK']['*']; - } - } - if (is_callable($callback)) { - switch(call_user_func($callback, $err)){ - case PEAR_ERRORSTACK_IGNORE: - return $err; - break; - case PEAR_ERRORSTACK_PUSH: - $log = false; - break; - case PEAR_ERRORSTACK_LOG: - $push = false; - break; - case PEAR_ERRORSTACK_DIE: - $die = true; - break; - // anything else returned has the same effect as pushandlog - } - } - if ($push) { - array_unshift($this->_errors, $err); - if (!isset($this->_errorsByLevel[$err['level']])) { - $this->_errorsByLevel[$err['level']] = array(); - } - $this->_errorsByLevel[$err['level']][] = &$this->_errors[0]; - } - if ($log) { - if ($this->_logger || $GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER']) { - $this->_log($err); - } - } - if ($die) { - die(); - } - if ($this->_compat && $push) { - return $this->raiseError($msg, $code, null, null, $err); - } - return $err; - } - - /** - * Static version of {@link push()} - * - * @param string $package Package name this error belongs to - * @param int $code Package-specific error code - * @param string $level Error level. This is NOT spell-checked - * @param array $params associative array of error parameters - * @param string $msg Error message, or a portion of it if the message - * is to be generated - * @param array $repackage If this error re-packages an error pushed by - * another package, place the array returned from - * {@link pop()} in this parameter - * @param array $backtrace Protected parameter: use this to pass in the - * {@link debug_backtrace()} that should be used - * to find error context - * @return PEAR_Error|array if compatibility mode is on, a PEAR_Error is also - * thrown. see docs for {@link push()} - * @static - */ - function staticPush($package, $code, $level = 'error', $params = array(), - $msg = false, $repackage = false, $backtrace = false) - { - $s = &PEAR_ErrorStack::singleton($package); - if ($s->_contextCallback) { - if (!$backtrace) { - if (function_exists('debug_backtrace')) { - $backtrace = debug_backtrace(); - } - } - } - return $s->push($code, $level, $params, $msg, $repackage, $backtrace); - } - - /** - * Log an error using PEAR::Log - * @param array $err Error array - * @param array $levels Error level => Log constant map - * @access protected - */ - function _log($err) - { - if ($this->_logger) { - $logger = &$this->_logger; - } else { - $logger = &$GLOBALS['_PEAR_ERRORSTACK_DEFAULT_LOGGER']; - } - if (is_a($logger, 'Log')) { - $levels = array( - 'exception' => PEAR_LOG_CRIT, - 'alert' => PEAR_LOG_ALERT, - 'critical' => PEAR_LOG_CRIT, - 'error' => PEAR_LOG_ERR, - 'warning' => PEAR_LOG_WARNING, - 'notice' => PEAR_LOG_NOTICE, - 'info' => PEAR_LOG_INFO, - 'debug' => PEAR_LOG_DEBUG); - if (isset($levels[$err['level']])) { - $level = $levels[$err['level']]; - } else { - $level = PEAR_LOG_INFO; - } - $logger->log($err['message'], $level, $err); - } else { // support non-standard logs - call_user_func($logger, $err); - } - } - - - /** - * Pop an error off of the error stack - * - * @return false|array - * @since 0.4alpha it is no longer possible to specify a specific error - * level to return - the last error pushed will be returned, instead - */ - function pop() - { - $err = @array_shift($this->_errors); - if (!is_null($err)) { - @array_pop($this->_errorsByLevel[$err['level']]); - if (!count($this->_errorsByLevel[$err['level']])) { - unset($this->_errorsByLevel[$err['level']]); - } - } - return $err; - } - - /** - * Pop an error off of the error stack, static method - * - * @param string package name - * @return boolean - * @since PEAR1.5.0a1 - */ - function staticPop($package) - { - if ($package) { - if (!isset($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package])) { - return false; - } - return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]->pop(); - } - } - - /** - * Determine whether there are any errors on the stack - * @param string|array Level name. Use to determine if any errors - * of level (string), or levels (array) have been pushed - * @return boolean - */ - function hasErrors($level = false) - { - if ($level) { - return isset($this->_errorsByLevel[$level]); - } - return count($this->_errors); - } - - /** - * Retrieve all errors since last purge - * - * @param boolean set in order to empty the error stack - * @param string level name, to return only errors of a particular severity - * @return array - */ - function getErrors($purge = false, $level = false) - { - if (!$purge) { - if ($level) { - if (!isset($this->_errorsByLevel[$level])) { - return array(); - } else { - return $this->_errorsByLevel[$level]; - } - } else { - return $this->_errors; - } - } - if ($level) { - $ret = $this->_errorsByLevel[$level]; - foreach ($this->_errorsByLevel[$level] as $i => $unused) { - // entries are references to the $_errors array - $this->_errorsByLevel[$level][$i] = false; - } - // array_filter removes all entries === false - $this->_errors = array_filter($this->_errors); - unset($this->_errorsByLevel[$level]); - return $ret; - } - $ret = $this->_errors; - $this->_errors = array(); - $this->_errorsByLevel = array(); - return $ret; - } - - /** - * Determine whether there are any errors on a single error stack, or on any error stack - * - * The optional parameter can be used to test the existence of any errors without the need of - * singleton instantiation - * @param string|false Package name to check for errors - * @param string Level name to check for a particular severity - * @return boolean - * @static - */ - function staticHasErrors($package = false, $level = false) - { - if ($package) { - if (!isset($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package])) { - return false; - } - return $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]->hasErrors($level); - } - foreach ($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] as $package => $obj) { - if ($obj->hasErrors($level)) { - return true; - } - } - return false; - } - - /** - * Get a list of all errors since last purge, organized by package - * @since PEAR 1.4.0dev BC break! $level is now in the place $merge used to be - * @param boolean $purge Set to purge the error stack of existing errors - * @param string $level Set to a level name in order to retrieve only errors of a particular level - * @param boolean $merge Set to return a flat array, not organized by package - * @param array $sortfunc Function used to sort a merged array - default - * sorts by time, and should be good for most cases - * @static - * @return array - */ - function staticGetErrors($purge = false, $level = false, $merge = false, - $sortfunc = array('PEAR_ErrorStack', '_sortErrors')) - { - $ret = array(); - if (!is_callable($sortfunc)) { - $sortfunc = array('PEAR_ErrorStack', '_sortErrors'); - } - foreach ($GLOBALS['_PEAR_ERRORSTACK_SINGLETON'] as $package => $obj) { - $test = $GLOBALS['_PEAR_ERRORSTACK_SINGLETON'][$package]->getErrors($purge, $level); - if ($test) { - if ($merge) { - $ret = array_merge($ret, $test); - } else { - $ret[$package] = $test; - } - } - } - if ($merge) { - usort($ret, $sortfunc); - } - return $ret; - } - - /** - * Error sorting function, sorts by time - * @access private - */ - function _sortErrors($a, $b) - { - if ($a['time'] == $b['time']) { - return 0; - } - if ($a['time'] < $b['time']) { - return 1; - } - return -1; - } - - /** - * Standard file/line number/function/class context callback - * - * This function uses a backtrace generated from {@link debug_backtrace()} - * and so will not work at all in PHP < 4.3.0. The frame should - * reference the frame that contains the source of the error. - * @return array|false either array('file' => file, 'line' => line, - * 'function' => function name, 'class' => class name) or - * if this doesn't work, then false - * @param unused - * @param integer backtrace frame. - * @param array Results of debug_backtrace() - * @static - */ - function getFileLine($code, $params, $backtrace = null) - { - if ($backtrace === null) { - return false; - } - $frame = 0; - $functionframe = 1; - if (!isset($backtrace[1])) { - $functionframe = 0; - } else { - while (isset($backtrace[$functionframe]['function']) && - $backtrace[$functionframe]['function'] == 'eval' && - isset($backtrace[$functionframe + 1])) { - $functionframe++; - } - } - if (isset($backtrace[$frame])) { - if (!isset($backtrace[$frame]['file'])) { - $frame++; - } - $funcbacktrace = $backtrace[$functionframe]; - $filebacktrace = $backtrace[$frame]; - $ret = array('file' => $filebacktrace['file'], - 'line' => $filebacktrace['line']); - // rearrange for eval'd code or create function errors - if (strpos($filebacktrace['file'], '(') && - preg_match(';^(.*?)\((\d+)\) : (.*?)\\z;', $filebacktrace['file'], - $matches)) { - $ret['file'] = $matches[1]; - $ret['line'] = $matches[2] + 0; - } - if (isset($funcbacktrace['function']) && isset($backtrace[1])) { - if ($funcbacktrace['function'] != 'eval') { - if ($funcbacktrace['function'] == '__lambda_func') { - $ret['function'] = 'create_function() code'; - } else { - $ret['function'] = $funcbacktrace['function']; - } - } - } - if (isset($funcbacktrace['class']) && isset($backtrace[1])) { - $ret['class'] = $funcbacktrace['class']; - } - return $ret; - } - return false; - } - - /** - * Standard error message generation callback - * - * This method may also be called by a custom error message generator - * to fill in template values from the params array, simply - * set the third parameter to the error message template string to use - * - * The special variable %__msg% is reserved: use it only to specify - * where a message passed in by the user should be placed in the template, - * like so: - * - * Error message: %msg% - internal error - * - * If the message passed like so: - * - * <code> - * $stack->push(ERROR_CODE, 'error', array(), 'server error 500'); - * </code> - * - * The returned error message will be "Error message: server error 500 - - * internal error" - * @param PEAR_ErrorStack - * @param array - * @param string|false Pre-generated error message template - * @static - * @return string - */ - function getErrorMessage(&$stack, $err, $template = false) - { - if ($template) { - $mainmsg = $template; - } else { - $mainmsg = $stack->getErrorMessageTemplate($err['code']); - } - $mainmsg = str_replace('%__msg%', $err['message'], $mainmsg); - if (is_array($err['params']) && count($err['params'])) { - foreach ($err['params'] as $name => $val) { - if (is_array($val)) { - // @ is needed in case $val is a multi-dimensional array - $val = @implode(', ', $val); - } - if (is_object($val)) { - if (method_exists($val, '__toString')) { - $val = $val->__toString(); - } else { - PEAR_ErrorStack::staticPush('PEAR_ErrorStack', PEAR_ERRORSTACK_ERR_OBJTOSTRING, - 'warning', array('obj' => get_class($val)), - 'object %obj% passed into getErrorMessage, but has no __toString() method'); - $val = 'Object'; - } - } - $mainmsg = str_replace('%' . $name . '%', $val, $mainmsg); - } - } - return $mainmsg; - } - - /** - * Standard Error Message Template generator from code - * @return string - */ - function getErrorMessageTemplate($code) - { - if (!isset($this->_errorMsgs[$code])) { - return '%__msg%'; - } - return $this->_errorMsgs[$code]; - } - - /** - * Set the Error Message Template array - * - * The array format must be: - * <pre> - * array(error code => 'message template',...) - * </pre> - * - * Error message parameters passed into {@link push()} will be used as input - * for the error message. If the template is 'message %foo% was %bar%', and the - * parameters are array('foo' => 'one', 'bar' => 'six'), the error message returned will - * be 'message one was six' - * @return string - */ - function setErrorMessageTemplate($template) - { - $this->_errorMsgs = $template; - } - - - /** - * emulate PEAR::raiseError() - * - * @return PEAR_Error - */ - function raiseError() - { - require_once 'PEAR.php'; - $args = func_get_args(); - return call_user_func_array(array('PEAR', 'raiseError'), $args); - } -} -$stack = &PEAR_ErrorStack::singleton('PEAR_ErrorStack'); -$stack->pushCallback(array('PEAR_ErrorStack', '_handleError')); -?> diff --git a/src/vitis/vas/rest/class/PEAR/Exception.php b/src/vitis/vas/rest/class/PEAR/Exception.php deleted file mode 100755 index b3d75b20c9cfe886530994469f0275d059ab665a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Exception.php +++ /dev/null @@ -1,397 +0,0 @@ -<?php -/* vim: set expandtab tabstop=4 shiftwidth=4 foldmethod=marker: */ -/** - * PEAR_Exception - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Tomas V. V. Cox <cox@idecnet.com> - * @author Hans Lellelid <hans@velum.net> - * @author Bertrand Mansion <bmansion@mamasam.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Exception.php,v 1.29 2008/01/03 20:26:35 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.3.3 - */ - - -/** - * Base PEAR_Exception Class - * - * 1) Features: - * - * - Nestable exceptions (throw new PEAR_Exception($msg, $prev_exception)) - * - Definable triggers, shot when exceptions occur - * - Pretty and informative error messages - * - Added more context info available (like class, method or cause) - * - cause can be a PEAR_Exception or an array of mixed - * PEAR_Exceptions/PEAR_ErrorStack warnings - * - callbacks for specific exception classes and their children - * - * 2) Ideas: - * - * - Maybe a way to define a 'template' for the output - * - * 3) Inherited properties from PHP Exception Class: - * - * protected $message - * protected $code - * protected $line - * protected $file - * private $trace - * - * 4) Inherited methods from PHP Exception Class: - * - * __clone - * __construct - * getMessage - * getCode - * getFile - * getLine - * getTraceSafe - * getTraceSafeAsString - * __toString - * - * 5) Usage example - * - * <code> - * require_once 'PEAR/Exception.php'; - * - * class Test { - * function foo() { - * throw new PEAR_Exception('Error Message', ERROR_CODE); - * } - * } - * - * function myLogger($pear_exception) { - * echo $pear_exception->getMessage(); - * } - * // each time a exception is thrown the 'myLogger' will be called - * // (its use is completely optional) - * PEAR_Exception::addObserver('myLogger'); - * $test = new Test; - * try { - * $test->foo(); - * } catch (PEAR_Exception $e) { - * print $e; - * } - * </code> - * - * @category pear - * @package PEAR - * @author Tomas V.V.Cox <cox@idecnet.com> - * @author Hans Lellelid <hans@velum.net> - * @author Bertrand Mansion <bmansion@mamasam.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.3.3 - * - */ -class PEAR_Exception extends Exception -{ - const OBSERVER_PRINT = -2; - const OBSERVER_TRIGGER = -4; - const OBSERVER_DIE = -8; - protected $cause; - private static $_observers = array(); - private static $_uniqueid = 0; - private $_trace; - - /** - * Supported signatures: - * - PEAR_Exception(string $message); - * - PEAR_Exception(string $message, int $code); - * - PEAR_Exception(string $message, Exception $cause); - * - PEAR_Exception(string $message, Exception $cause, int $code); - * - PEAR_Exception(string $message, PEAR_Error $cause); - * - PEAR_Exception(string $message, PEAR_Error $cause, int $code); - * - PEAR_Exception(string $message, array $causes); - * - PEAR_Exception(string $message, array $causes, int $code); - * @param string exception message - * @param int|Exception|PEAR_Error|array|null exception cause - * @param int|null exception code or null - */ - public function __construct($message, $p2 = null, $p3 = null) - { - if (is_int($p2)) { - $code = $p2; - $this->cause = null; - } elseif (is_object($p2) || is_array($p2)) { - // using is_object allows both Exception and PEAR_Error - if (is_object($p2) && !($p2 instanceof Exception)) { - if (!class_exists('PEAR_Error') || !($p2 instanceof PEAR_Error)) { - throw new PEAR_Exception('exception cause must be Exception, ' . - 'array, or PEAR_Error'); - } - } - $code = $p3; - if (is_array($p2) && isset($p2['message'])) { - // fix potential problem of passing in a single warning - $p2 = array($p2); - } - $this->cause = $p2; - } else { - $code = null; - $this->cause = null; - } - parent::__construct($message, $code); - $this->signal(); - } - - /** - * @param mixed $callback - A valid php callback, see php func is_callable() - * - A PEAR_Exception::OBSERVER_* constant - * - An array(const PEAR_Exception::OBSERVER_*, - * mixed $options) - * @param string $label The name of the observer. Use this if you want - * to remove it later with removeObserver() - */ - public static function addObserver($callback, $label = 'default') - { - self::$_observers[$label] = $callback; - } - - public static function removeObserver($label = 'default') - { - unset(self::$_observers[$label]); - } - - /** - * @return int unique identifier for an observer - */ - public static function getUniqueId() - { - return self::$_uniqueid++; - } - - private function signal() - { - foreach (self::$_observers as $func) { - if (is_callable($func)) { - call_user_func($func, $this); - continue; - } - settype($func, 'array'); - switch ($func[0]) { - case self::OBSERVER_PRINT : - $f = (isset($func[1])) ? $func[1] : '%s'; - printf($f, $this->getMessage()); - break; - case self::OBSERVER_TRIGGER : - $f = (isset($func[1])) ? $func[1] : E_USER_NOTICE; - trigger_error($this->getMessage(), $f); - break; - case self::OBSERVER_DIE : - $f = (isset($func[1])) ? $func[1] : '%s'; - die(printf($f, $this->getMessage())); - break; - default: - trigger_error('invalid observer type', E_USER_WARNING); - } - } - } - - /** - * Return specific error information that can be used for more detailed - * error messages or translation. - * - * This method may be overridden in child exception classes in order - * to add functionality not present in PEAR_Exception and is a placeholder - * to define API - * - * The returned array must be an associative array of parameter => value like so: - * <pre> - * array('name' => $name, 'context' => array(...)) - * </pre> - * @return array - */ - public function getErrorData() - { - return array(); - } - - /** - * Returns the exception that caused this exception to be thrown - * @access public - * @return Exception|array The context of the exception - */ - public function getCause() - { - return $this->cause; - } - - /** - * Function must be public to call on caused exceptions - * @param array - */ - public function getCauseMessage(&$causes) - { - $trace = $this->getTraceSafe(); - $cause = array('class' => get_class($this), - 'message' => $this->message, - 'file' => 'unknown', - 'line' => 'unknown'); - if (isset($trace[0])) { - if (isset($trace[0]['file'])) { - $cause['file'] = $trace[0]['file']; - $cause['line'] = $trace[0]['line']; - } - } - $causes[] = $cause; - if ($this->cause instanceof PEAR_Exception) { - $this->cause->getCauseMessage($causes); - } elseif ($this->cause instanceof Exception) { - $causes[] = array('class' => get_class($this->cause), - 'message' => $this->cause->getMessage(), - 'file' => $this->cause->getFile(), - 'line' => $this->cause->getLine()); - } elseif (class_exists('PEAR_Error') && $this->cause instanceof PEAR_Error) { - $causes[] = array('class' => get_class($this->cause), - 'message' => $this->cause->getMessage(), - 'file' => 'unknown', - 'line' => 'unknown'); - } elseif (is_array($this->cause)) { - foreach ($this->cause as $cause) { - if ($cause instanceof PEAR_Exception) { - $cause->getCauseMessage($causes); - } elseif ($cause instanceof Exception) { - $causes[] = array('class' => get_class($cause), - 'message' => $cause->getMessage(), - 'file' => $cause->getFile(), - 'line' => $cause->getLine()); - } elseif (class_exists('PEAR_Error') && $cause instanceof PEAR_Error) { - $causes[] = array('class' => get_class($cause), - 'message' => $cause->getMessage(), - 'file' => 'unknown', - 'line' => 'unknown'); - } elseif (is_array($cause) && isset($cause['message'])) { - // PEAR_ErrorStack warning - $causes[] = array( - 'class' => $cause['package'], - 'message' => $cause['message'], - 'file' => isset($cause['context']['file']) ? - $cause['context']['file'] : - 'unknown', - 'line' => isset($cause['context']['line']) ? - $cause['context']['line'] : - 'unknown', - ); - } - } - } - } - - public function getTraceSafe() - { - if (!isset($this->_trace)) { - $this->_trace = $this->getTrace(); - if (empty($this->_trace)) { - $backtrace = debug_backtrace(); - $this->_trace = array($backtrace[count($backtrace)-1]); - } - } - return $this->_trace; - } - - public function getErrorClass() - { - $trace = $this->getTraceSafe(); - return $trace[0]['class']; - } - - public function getErrorMethod() - { - $trace = $this->getTraceSafe(); - return $trace[0]['function']; - } - - public function __toString() - { - if (isset($_SERVER['REQUEST_URI'])) { - return $this->toHtml(); - } - return $this->toText(); - } - - public function toHtml() - { - $trace = $this->getTraceSafe(); - $causes = array(); - $this->getCauseMessage($causes); - $html = '<table border="1" cellspacing="0">' . "\n"; - foreach ($causes as $i => $cause) { - $html .= '<tr><td colspan="3" bgcolor="#ff9999">' - . str_repeat('-', $i) . ' <b>' . $cause['class'] . '</b>: ' - . htmlspecialchars($cause['message']) . ' in <b>' . $cause['file'] . '</b> ' - . 'on line <b>' . $cause['line'] . '</b>' - . "</td></tr>\n"; - } - $html .= '<tr><td colspan="3" bgcolor="#aaaaaa" align="center"><b>Exception trace</b></td></tr>' . "\n" - . '<tr><td align="center" bgcolor="#cccccc" width="20"><b>#</b></td>' - . '<td align="center" bgcolor="#cccccc"><b>Function</b></td>' - . '<td align="center" bgcolor="#cccccc"><b>Location</b></td></tr>' . "\n"; - - foreach ($trace as $k => $v) { - $html .= '<tr><td align="center">' . $k . '</td>' - . '<td>'; - if (!empty($v['class'])) { - $html .= $v['class'] . $v['type']; - } - $html .= $v['function']; - $args = array(); - if (!empty($v['args'])) { - foreach ($v['args'] as $arg) { - if (is_null($arg)) $args[] = 'null'; - elseif (is_array($arg)) $args[] = 'Array'; - elseif (is_object($arg)) $args[] = 'Object('.get_class($arg).')'; - elseif (is_bool($arg)) $args[] = $arg ? 'true' : 'false'; - elseif (is_int($arg) || is_double($arg)) $args[] = $arg; - else { - $arg = (string)$arg; - $str = htmlspecialchars(substr($arg, 0, 16)); - if (strlen($arg) > 16) $str .= '…'; - $args[] = "'" . $str . "'"; - } - } - } - $html .= '(' . implode(', ',$args) . ')' - . '</td>' - . '<td>' . (isset($v['file']) ? $v['file'] : 'unknown') - . ':' . (isset($v['line']) ? $v['line'] : 'unknown') - . '</td></tr>' . "\n"; - } - $html .= '<tr><td align="center">' . ($k+1) . '</td>' - . '<td>{main}</td>' - . '<td> </td></tr>' . "\n" - . '</table>'; - return $html; - } - - public function toText() - { - $causes = array(); - $this->getCauseMessage($causes); - $causeMsg = ''; - foreach ($causes as $i => $cause) { - $causeMsg .= str_repeat(' ', $i) . $cause['class'] . ': ' - . $cause['message'] . ' in ' . $cause['file'] - . ' on line ' . $cause['line'] . "\n"; - } - return $causeMsg . $this->getTraceAsString(); - } -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/FixPHP5PEARWarnings.php b/src/vitis/vas/rest/class/PEAR/FixPHP5PEARWarnings.php deleted file mode 100755 index be5dc3ce707c3e06189b89395819ae49edbab19c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/FixPHP5PEARWarnings.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php -if ($skipmsg) { - $a = &new $ec($code, $mode, $options, $userinfo); -} else { - $a = &new $ec($message, $code, $mode, $options, $userinfo); -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Frontend.php b/src/vitis/vas/rest/class/PEAR/Frontend.php deleted file mode 100755 index bf7d4ba6aa1d703e6e093367948904e64918569a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Frontend.php +++ /dev/null @@ -1,223 +0,0 @@ -<?php -/** - * PEAR_Frontend, the singleton-based frontend for user input/output - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Frontend.php,v 1.13 2008/01/03 20:26:35 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Which user interface class is being used. - * @var string class name - */ -$GLOBALS['_PEAR_FRONTEND_CLASS'] = 'PEAR_Frontend_CLI'; - -/** - * Instance of $_PEAR_Command_uiclass. - * @var object - */ -$GLOBALS['_PEAR_FRONTEND_SINGLETON'] = null; - -/** - * Singleton-based frontend for PEAR user input/output - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Frontend extends PEAR -{ - /** - * Retrieve the frontend object - * @return PEAR_Frontend_CLI|PEAR_Frontend_Web|PEAR_Frontend_Gtk - * @static - */ - function &singleton($type = null) - { - if ($type === null) { - if (!isset($GLOBALS['_PEAR_FRONTEND_SINGLETON'])) { - $a = false; - return $a; - } - return $GLOBALS['_PEAR_FRONTEND_SINGLETON']; - } else { - $a = PEAR_Frontend::setFrontendClass($type); - return $a; - } - } - - /** - * Set the frontend class that will be used by calls to {@link singleton()} - * - * Frontends are expected to conform to the PEAR naming standard of - * _ => DIRECTORY_SEPARATOR (PEAR_Frontend_CLI is in PEAR/Frontend/CLI.php) - * @param string $uiclass full class name - * @return PEAR_Frontend - * @static - */ - function &setFrontendClass($uiclass) - { - if (is_object($GLOBALS['_PEAR_FRONTEND_SINGLETON']) && - is_a($GLOBALS['_PEAR_FRONTEND_SINGLETON'], $uiclass)) { - return $GLOBALS['_PEAR_FRONTEND_SINGLETON']; - } - if (!class_exists($uiclass)) { - $file = str_replace('_', '/', $uiclass) . '.php'; - if (PEAR_Frontend::isIncludeable($file)) { - include_once $file; - } - } - if (class_exists($uiclass)) { - $obj = &new $uiclass; - // quick test to see if this class implements a few of the most - // important frontend methods - if (is_a($obj, 'PEAR_Frontend')) { - $GLOBALS['_PEAR_FRONTEND_SINGLETON'] = &$obj; - $GLOBALS['_PEAR_FRONTEND_CLASS'] = $uiclass; - return $obj; - } else { - $err = PEAR::raiseError("not a frontend class: $uiclass"); - return $err; - } - } - $err = PEAR::raiseError("no such class: $uiclass"); - return $err; - } - - /** - * Set the frontend class that will be used by calls to {@link singleton()} - * - * Frontends are expected to be a descendant of PEAR_Frontend - * @param PEAR_Frontend - * @return PEAR_Frontend - * @static - */ - function &setFrontendObject($uiobject) - { - if (is_object($GLOBALS['_PEAR_FRONTEND_SINGLETON']) && - is_a($GLOBALS['_PEAR_FRONTEND_SINGLETON'], get_class($uiobject))) { - return $GLOBALS['_PEAR_FRONTEND_SINGLETON']; - } - if (!is_a($uiobject, 'PEAR_Frontend')) { - $err = PEAR::raiseError('not a valid frontend class: (' . - get_class($uiobject) . ')'); - return $err; - } - $GLOBALS['_PEAR_FRONTEND_SINGLETON'] = &$uiobject; - $GLOBALS['_PEAR_FRONTEND_CLASS'] = get_class($uiobject); - return $uiobject; - } - - /** - * @param string $path relative or absolute include path - * @return boolean - * @static - */ - function isIncludeable($path) - { - if (file_exists($path) && is_readable($path)) { - return true; - } - $fp = @fopen($path, 'r', true); - if ($fp) { - fclose($fp); - return true; - } - return false; - } - - /** - * @param PEAR_Config - */ - function setConfig(&$config) - { - } - - /** - * This can be overridden to allow session-based temporary file management - * - * By default, all files are deleted at the end of a session. The web installer - * needs to be able to sustain a list over many sessions in order to support - * user interaction with install scripts - */ - function addTempFile($file) - { - $GLOBALS['_PEAR_Common_tempfiles'][] = $file; - } - - /** - * Log an action - * - * @param string $msg the message to log - * @param boolean $append_crlf - * @return boolean true - * @abstract - */ - function log($msg, $append_crlf = true) - { - } - - /** - * Run a post-installation script - * - * @param array $scripts array of post-install scripts - * @abstract - */ - function runPostinstallScripts(&$scripts) - { - } - - /** - * Display human-friendly output formatted depending on the - * $command parameter. - * - * This should be able to handle basic output data with no command - * @param mixed $data data structure containing the information to display - * @param string $command command from which this method was called - * @abstract - */ - function outputData($data, $command = '_default') - { - } - - /** - * Display a modal form dialog and return the given input - * - * A frontend that requires multiple requests to retrieve and process - * data must take these needs into account, and implement the request - * handling code. - * @param string $command command from which this method was called - * @param array $prompts associative array. keys are the input field names - * and values are the description - * @param array $types array of input field types (text, password, - * etc.) keys have to be the same like in $prompts - * @param array $defaults array of default values. again keys have - * to be the same like in $prompts. Do not depend - * on a default value being set. - * @return array input sent by the user - * @abstract - */ - function userDialog($command, $prompts, $types = array(), $defaults = array()) - { - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Frontend/CLI.php b/src/vitis/vas/rest/class/PEAR/Frontend/CLI.php deleted file mode 100755 index 0655aba161686fcb28b4fb1c0cb2ea38760f6bdb..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Frontend/CLI.php +++ /dev/null @@ -1,794 +0,0 @@ -<?php -/** - * PEAR_Frontend_CLI - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: CLI.php,v 1.68 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ -/** - * base class - */ -require_once 'PEAR/Frontend.php'; - -/** - * Command-line Frontend for the PEAR Installer - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Frontend_CLI extends PEAR_Frontend -{ - // {{{ properties - - /** - * What type of user interface this frontend is for. - * @var string - * @access public - */ - var $type = 'CLI'; - var $lp = ''; // line prefix - - var $params = array(); - var $term = array( - 'bold' => '', - 'normal' => '', - ); - - // }}} - - // {{{ constructor - - function PEAR_Frontend_CLI() - { - parent::PEAR(); - $term = getenv('TERM'); //(cox) $_ENV is empty for me in 4.1.1 - if (function_exists('posix_isatty') && !posix_isatty(1)) { - // output is being redirected to a file or through a pipe - } elseif ($term) { - // XXX can use ncurses extension here, if available - if (preg_match('/^(xterm|vt220|linux)/', $term)) { - $this->term['bold'] = sprintf("%c%c%c%c", 27, 91, 49, 109); - $this->term['normal']=sprintf("%c%c%c", 27, 91, 109); - } elseif (preg_match('/^vt100/', $term)) { - $this->term['bold'] = sprintf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); - $this->term['normal']=sprintf("%c%c%c%c%c", 27, 91, 109, 0, 0); - } - } elseif (OS_WINDOWS) { - // XXX add ANSI codes here - } - } - - // }}} - - // {{{ displayLine(text) - - function displayLine($text) - { - trigger_error("PEAR_Frontend_CLI::displayLine deprecated", E_USER_ERROR); - } - - function _displayLine($text) - { - print "$this->lp$text\n"; - } - - // }}} - // {{{ display(text) - - function display($text) - { - trigger_error("PEAR_Frontend_CLI::display deprecated", E_USER_ERROR); - } - - function _display($text) - { - print $text; - } - - // }}} - // {{{ displayError(eobj) - - /** - * @param object PEAR_Error object - */ - function displayError($eobj) - { - return $this->_displayLine($eobj->getMessage()); - } - - // }}} - // {{{ displayFatalError(eobj) - - /** - * @param object PEAR_Error object - */ - function displayFatalError($eobj) - { - $this->displayError($eobj); - if (class_exists('PEAR_Config')) { - $config = &PEAR_Config::singleton(); - if ($config->get('verbose') > 5) { - if (function_exists('debug_print_backtrace')) { - debug_print_backtrace(); - } elseif (function_exists('debug_backtrace')) { - $trace = debug_backtrace(); - $raised = false; - foreach ($trace as $i => $frame) { - if (!$raised) { - if (isset($frame['class']) && strtolower($frame['class']) == - 'pear' && strtolower($frame['function']) == 'raiseerror') { - $raised = true; - } else { - continue; - } - } - if (!isset($frame['class'])) { - $frame['class'] = ''; - } - if (!isset($frame['type'])) { - $frame['type'] = ''; - } - if (!isset($frame['function'])) { - $frame['function'] = ''; - } - if (!isset($frame['line'])) { - $frame['line'] = ''; - } - $this->_displayLine("#$i: $frame[class]$frame[type]$frame[function] $frame[line]"); - } - } - } - } - exit(1); - } - - // }}} - // {{{ displayHeading(title) - - function displayHeading($title) - { - trigger_error("PEAR_Frontend_CLI::displayHeading deprecated", E_USER_ERROR); - } - - function _displayHeading($title) - { - print $this->lp.$this->bold($title)."\n"; - print $this->lp.str_repeat("=", strlen($title))."\n"; - } - - // }}} - - /** - * Instruct the runInstallScript method to skip a paramgroup that matches the - * id value passed in. - * - * This method is useful for dynamically configuring which sections of a post-install script - * will be run based on the user's setup, which is very useful for making flexible - * post-install scripts without losing the cross-Frontend ability to retrieve user input - * @param string - */ - function skipParamgroup($id) - { - $this->_skipSections[$id] = true; - } - - function runPostinstallScripts(&$scripts) - { - foreach ($scripts as $i => $script) { - $this->runInstallScript($scripts[$i]->_params, $scripts[$i]->_obj); - } - } - - /** - * @param array $xml contents of postinstallscript tag - * @param object $script post-installation script - * @param string install|upgrade - */ - function runInstallScript($xml, &$script) - { - $this->_skipSections = array(); - if (!is_array($xml) || !isset($xml['paramgroup'])) { - $script->run(array(), '_default'); - } else { - $completedPhases = array(); - if (!isset($xml['paramgroup'][0])) { - $xml['paramgroup'] = array($xml['paramgroup']); - } - foreach ($xml['paramgroup'] as $group) { - if (isset($this->_skipSections[$group['id']])) { - // the post-install script chose to skip this section dynamically - continue; - } - if (isset($group['name'])) { - $paramname = explode('::', $group['name']); - if ($lastgroup['id'] != $paramname[0]) { - continue; - } - $group['name'] = $paramname[1]; - if (isset($answers)) { - if (isset($answers[$group['name']])) { - switch ($group['conditiontype']) { - case '=' : - if ($answers[$group['name']] != $group['value']) { - continue 2; - } - break; - case '!=' : - if ($answers[$group['name']] == $group['value']) { - continue 2; - } - break; - case 'preg_match' : - if (!@preg_match('/' . $group['value'] . '/', - $answers[$group['name']])) { - continue 2; - } - break; - default : - return; - } - } - } else { - return; - } - } - $lastgroup = $group; - if (isset($group['instructions'])) { - $this->_display($group['instructions']); - } - if (!isset($group['param'][0])) { - $group['param'] = array($group['param']); - } - if (isset($group['param'])) { - if (method_exists($script, 'postProcessPrompts')) { - $prompts = $script->postProcessPrompts($group['param'], $group['id']); - if (!is_array($prompts) || count($prompts) != count($group['param'])) { - $this->outputData('postinstall', 'Error: post-install script did not ' . - 'return proper post-processed prompts'); - $prompts = $group['param']; - } else { - foreach ($prompts as $i => $var) { - if (!is_array($var) || !isset($var['prompt']) || - !isset($var['name']) || - ($var['name'] != $group['param'][$i]['name']) || - ($var['type'] != $group['param'][$i]['type'])) { - $this->outputData('postinstall', 'Error: post-install script ' . - 'modified the variables or prompts, severe security risk. ' . - 'Will instead use the defaults from the package.xml'); - $prompts = $group['param']; - } - } - } - $answers = $this->confirmDialog($prompts); - } else { - $answers = $this->confirmDialog($group['param']); - } - } - if ((isset($answers) && $answers) || !isset($group['param'])) { - if (!isset($answers)) { - $answers = array(); - } - array_unshift($completedPhases, $group['id']); - if (!$script->run($answers, $group['id'])) { - $script->run($completedPhases, '_undoOnError'); - return; - } - } else { - $script->run($completedPhases, '_undoOnError'); - return; - } - } - } - } - - /** - * Ask for user input, confirm the answers and continue until the user is satisfied - * @param array an array of arrays, format array('name' => 'paramname', 'prompt' => - * 'text to display', 'type' => 'string'[, default => 'default value']) - * @return array - */ - function confirmDialog($params) - { - $answers = array(); - $prompts = $types = array(); - foreach ($params as $param) { - $prompts[$param['name']] = $param['prompt']; - $types[$param['name']] = $param['type']; - if (isset($param['default'])) { - $answers[$param['name']] = $param['default']; - } else { - $answers[$param['name']] = ''; - } - } - $tried = false; - do { - if ($tried) { - $i = 1; - foreach ($answers as $var => $value) { - if (!strlen($value)) { - echo $this->bold("* Enter an answer for #" . $i . ": ({$prompts[$var]})\n"); - } - $i++; - } - } - $answers = $this->userDialog('', $prompts, $types, $answers); - $tried = true; - } while (is_array($answers) && count(array_filter($answers)) != count($prompts)); - return $answers; - } - // {{{ userDialog(prompt, [type], [default]) - - function userDialog($command, $prompts, $types = array(), $defaults = array(), - $screensize = 20) - { - if (!is_array($prompts)) { - return array(); - } - $testprompts = array_keys($prompts); - $result = $defaults; - if (!defined('STDIN')) { - $fp = fopen('php://stdin', 'r'); - } else { - $fp = STDIN; - } - reset($prompts); - if (count($prompts) == 1 && $types[key($prompts)] == 'yesno') { - foreach ($prompts as $key => $prompt) { - $type = $types[$key]; - $default = @$defaults[$key]; - print "$prompt "; - if ($default) { - print "[$default] "; - } - print ": "; - if (version_compare(phpversion(), '5.0.0', '<')) { - $line = fgets($fp, 2048); - } else { - if (!defined('STDIN')) { - define('STDIN', fopen('php://stdin', 'r')); - } - $line = fgets(STDIN, 2048); - } - if ($default && trim($line) == "") { - $result[$key] = $default; - } else { - $result[$key] = trim($line); - } - } - return $result; - } - while (true) { - $descLength = max(array_map('strlen', $prompts)); - $descFormat = "%-{$descLength}s"; - $last = count($prompts); - - $i = 0; - foreach ($prompts as $n => $var) { - printf("%2d. $descFormat : %s\n", ++$i, $prompts[$n], isset($result[$n]) ? - $result[$n] : null); - } - - print "\n1-$last, 'all', 'abort', or Enter to continue: "; - $tmp = trim(fgets($fp, 1024)); - if (empty($tmp)) { - break; - } - if ($tmp == 'abort') { - return false; - } - if (isset($testprompts[(int)$tmp - 1])) { - $var = $testprompts[(int)$tmp - 1]; - $desc = $prompts[$var]; - $current = @$result[$var]; - print "$desc [$current] : "; - $tmp = trim(fgets($fp, 1024)); - if (trim($tmp) !== '') { - $result[$var] = trim($tmp); - } - } elseif ($tmp == 'all') { - foreach ($prompts as $var => $desc) { - $current = $result[$var]; - print "$desc [$current] : "; - $tmp = trim(fgets($fp, 1024)); - if (trim($tmp) !== '') { - $result[$var] = trim($tmp); - } - } - } - } - if (!defined('STDIN')) { - fclose($fp); - } - return $result; - } - - // }}} - // {{{ userConfirm(prompt, [default]) - - function userConfirm($prompt, $default = 'yes') - { - trigger_error("PEAR_Frontend_CLI::userConfirm not yet converted", E_USER_ERROR); - static $positives = array('y', 'yes', 'on', '1'); - static $negatives = array('n', 'no', 'off', '0'); - print "$this->lp$prompt [$default] : "; - $fp = fopen("php://stdin", "r"); - $line = fgets($fp, 2048); - fclose($fp); - $answer = strtolower(trim($line)); - if (empty($answer)) { - $answer = $default; - } - if (in_array($answer, $positives)) { - return true; - } - if (in_array($answer, $negatives)) { - return false; - } - if (in_array($default, $positives)) { - return true; - } - return false; - } - - // }}} - // {{{ startTable([params]) - - function startTable($params = array()) - { - trigger_error("PEAR_Frontend_CLI::startTable deprecated", E_USER_ERROR); - } - - function _startTable($params = array()) - { - $params['table_data'] = array(); - $params['widest'] = array(); // indexed by column - $params['highest'] = array(); // indexed by row - $params['ncols'] = 0; - $this->params = $params; - } - - // }}} - // {{{ tableRow(columns, [rowparams], [colparams]) - - function tableRow($columns, $rowparams = array(), $colparams = array()) - { - trigger_error("PEAR_Frontend_CLI::tableRow deprecated", E_USER_ERROR); - } - - function _tableRow($columns, $rowparams = array(), $colparams = array()) - { - $highest = 1; - for ($i = 0; $i < sizeof($columns); $i++) { - $col = &$columns[$i]; - if (isset($colparams[$i]) && !empty($colparams[$i]['wrap'])) { - $col = wordwrap($col, $colparams[$i]['wrap'], "\n", 0); - } - if (strpos($col, "\n") !== false) { - $multiline = explode("\n", $col); - $w = 0; - foreach ($multiline as $n => $line) { - if (strlen($line) > $w) { - $w = strlen($line); - } - } - $lines = sizeof($multiline); - } else { - $w = strlen($col); - } - - if (isset($this->params['widest'][$i])) { - if ($w > $this->params['widest'][$i]) { - $this->params['widest'][$i] = $w; - } - } else { - $this->params['widest'][$i] = $w; - } - $tmp = count_chars($columns[$i], 1); - // handle unix, mac and windows formats - $lines = (isset($tmp[10]) ? $tmp[10] : (isset($tmp[13]) ? $tmp[13] : 0)) + 1; - if ($lines > $highest) { - $highest = $lines; - } - } - if (sizeof($columns) > $this->params['ncols']) { - $this->params['ncols'] = sizeof($columns); - } - $new_row = array( - 'data' => $columns, - 'height' => $highest, - 'rowparams' => $rowparams, - 'colparams' => $colparams, - ); - $this->params['table_data'][] = $new_row; - } - - // }}} - // {{{ endTable() - - function endTable() - { - trigger_error("PEAR_Frontend_CLI::endTable deprecated", E_USER_ERROR); - } - - function _endTable() - { - extract($this->params); - if (!empty($caption)) { - $this->_displayHeading($caption); - } - if (count($table_data) == 0) { - return; - } - if (!isset($width)) { - $width = $widest; - } else { - for ($i = 0; $i < $ncols; $i++) { - if (!isset($width[$i])) { - $width[$i] = $widest[$i]; - } - } - } - $border = false; - if (empty($border)) { - $cellstart = ''; - $cellend = ' '; - $rowend = ''; - $padrowend = false; - $borderline = ''; - } else { - $cellstart = '| '; - $cellend = ' '; - $rowend = '|'; - $padrowend = true; - $borderline = '+'; - foreach ($width as $w) { - $borderline .= str_repeat('-', $w + strlen($cellstart) + strlen($cellend) - 1); - $borderline .= '+'; - } - } - if ($borderline) { - $this->_displayLine($borderline); - } - for ($i = 0; $i < sizeof($table_data); $i++) { - extract($table_data[$i]); - if (!is_array($rowparams)) { - $rowparams = array(); - } - if (!is_array($colparams)) { - $colparams = array(); - } - $rowlines = array(); - if ($height > 1) { - for ($c = 0; $c < sizeof($data); $c++) { - $rowlines[$c] = preg_split('/(\r?\n|\r)/', $data[$c]); - if (sizeof($rowlines[$c]) < $height) { - $rowlines[$c] = array_pad($rowlines[$c], $height, ''); - } - } - } else { - for ($c = 0; $c < sizeof($data); $c++) { - $rowlines[$c] = array($data[$c]); - } - } - for ($r = 0; $r < $height; $r++) { - $rowtext = ''; - for ($c = 0; $c < sizeof($data); $c++) { - if (isset($colparams[$c])) { - $attribs = array_merge($rowparams, $colparams); - } else { - $attribs = $rowparams; - } - $w = isset($width[$c]) ? $width[$c] : 0; - //$cell = $data[$c]; - $cell = $rowlines[$c][$r]; - $l = strlen($cell); - if ($l > $w) { - $cell = substr($cell, 0, $w); - } - if (isset($attribs['bold'])) { - $cell = $this->bold($cell); - } - if ($l < $w) { - // not using str_pad here because we may - // add bold escape characters to $cell - $cell .= str_repeat(' ', $w - $l); - } - - $rowtext .= $cellstart . $cell . $cellend; - } - if (!$border) { - $rowtext = rtrim($rowtext); - } - $rowtext .= $rowend; - $this->_displayLine($rowtext); - } - } - if ($borderline) { - $this->_displayLine($borderline); - } - } - - // }}} - // {{{ outputData() - - function outputData($data, $command = '_default') - { - switch ($command) { - case 'channel-info': - foreach ($data as $type => $section) { - if ($type == 'main') { - $section['data'] = array_values($section['data']); - } - $this->outputData($section); - } - break; - case 'install': - case 'upgrade': - case 'upgrade-all': - if (isset($data['release_warnings'])) { - $this->_displayLine(''); - $this->_startTable(array( - 'border' => false, - 'caption' => 'Release Warnings' - )); - $this->_tableRow(array($data['release_warnings']), null, array(1 => array('wrap' => 55))); - $this->_endTable(); - $this->_displayLine(''); - } - $this->_displayLine($data['data']); - break; - case 'search': - $this->_startTable($data); - if (isset($data['headline']) && is_array($data['headline'])) { - $this->_tableRow($data['headline'], array('bold' => true), array(1 => array('wrap' => 55))); - } - - foreach($data['data'] as $category) { - foreach($category as $pkg) { - $this->_tableRow($pkg, null, array(1 => array('wrap' => 55))); - } - }; - $this->_endTable(); - break; - case 'list-all': - if (!isset($data['data'])) { - $this->_displayLine('No packages in channel'); - break; - } - $this->_startTable($data); - if (isset($data['headline']) && is_array($data['headline'])) { - $this->_tableRow($data['headline'], array('bold' => true), array(1 => array('wrap' => 55))); - } - - foreach($data['data'] as $category) { - foreach($category as $pkg) { - unset($pkg[4]); - unset($pkg[5]); - $this->_tableRow($pkg, null, array(1 => array('wrap' => 55))); - } - }; - $this->_endTable(); - break; - case 'config-show': - $data['border'] = false; - $opts = array(0 => array('wrap' => 30), - 1 => array('wrap' => 20), - 2 => array('wrap' => 35)); - $this->_startTable($data); - if (isset($data['headline']) && is_array($data['headline'])) { - $this->_tableRow($data['headline'], - array('bold' => true), - $opts); - } - foreach($data['data'] as $group) { - foreach($group as $value) { - if ($value[2] == '') { - $value[2] = "<not set>"; - } - $this->_tableRow($value, null, $opts); - } - } - $this->_endTable(); - break; - case 'remote-info': - $d = $data; - $data = array( - 'caption' => 'Package details:', - 'border' => false, - 'data' => array( - array("Latest", $data['stable']), - array("Installed", $data['installed']), - array("Package", $data['name']), - array("License", $data['license']), - array("Category", $data['category']), - array("Summary", $data['summary']), - array("Description", $data['description']), - ), - ); - if (isset($d['deprecated']) && $d['deprecated']) { - $conf = &PEAR_Config::singleton(); - $reg = $conf->getRegistry(); - $name = $reg->parsedPackageNameToString($d['deprecated'], true); - $data['data'][] = array('Deprecated! use', $name); - } - default: { - if (is_array($data)) { - $this->_startTable($data); - $count = count($data['data'][0]); - if ($count == 2) { - $opts = array(0 => array('wrap' => 25), - 1 => array('wrap' => 48) - ); - } elseif ($count == 3) { - $opts = array(0 => array('wrap' => 30), - 1 => array('wrap' => 20), - 2 => array('wrap' => 35) - ); - } else { - $opts = null; - } - if (isset($data['headline']) && is_array($data['headline'])) { - $this->_tableRow($data['headline'], - array('bold' => true), - $opts); - } - foreach($data['data'] as $row) { - $this->_tableRow($row, null, $opts); - } - $this->_endTable(); - } else { - $this->_displayLine($data); - } - } - } - } - - // }}} - // {{{ log(text) - - - function log($text, $append_crlf = true) - { - if ($append_crlf) { - return $this->_displayLine($text); - } - return $this->_display($text); - } - - - // }}} - // {{{ bold($text) - - function bold($text) - { - if (empty($this->term['bold'])) { - return strtoupper($text); - } - return $this->term['bold'] . $text . $this->term['normal']; - } - - // }}} -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Installer.php b/src/vitis/vas/rest/class/PEAR/Installer.php deleted file mode 100755 index d3f316217b29cb085a40161490e8e189151b5028..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer.php +++ /dev/null @@ -1,1723 +0,0 @@ -<?php -/** - * PEAR_Installer - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V.V. Cox <cox@idecnet.com> - * @author Martin Jansen <mj@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Installer.php,v 1.253 2008/05/13 22:46:07 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * Used for installation groups in package.xml 2.0 and platform exceptions - */ -require_once 'OS/Guess.php'; -require_once 'PEAR/Downloader.php'; - -define('PEAR_INSTALLER_NOBINARY', -240); -/** - * Administration class used to install PEAR packages and maintain the - * installed package database. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V.V. Cox <cox@idecnet.com> - * @author Martin Jansen <mj@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Installer extends PEAR_Downloader -{ - // {{{ properties - - /** name of the package directory, for example Foo-1.0 - * @var string - */ - var $pkgdir; - - /** directory where PHP code files go - * @var string - */ - var $phpdir; - - /** directory where PHP extension files go - * @var string - */ - var $extdir; - - /** directory where documentation goes - * @var string - */ - var $docdir; - - /** installation root directory (ala PHP's INSTALL_ROOT or - * automake's DESTDIR - * @var string - */ - var $installroot = ''; - - /** debug level - * @var int - */ - var $debug = 1; - - /** temporary directory - * @var string - */ - var $tmpdir; - - /** - * PEAR_Registry object used by the installer - * @var PEAR_Registry - */ - var $registry; - - /** - * array of PEAR_Downloader_Packages - * @var array - */ - var $_downloadedPackages; - - /** List of file transactions queued for an install/upgrade/uninstall. - * - * Format: - * array( - * 0 => array("rename => array("from-file", "to-file")), - * 1 => array("delete" => array("file-to-delete")), - * ... - * ) - * - * @var array - */ - var $file_operations = array(); - - // }}} - - // {{{ constructor - - /** - * PEAR_Installer constructor. - * - * @param object $ui user interface object (instance of PEAR_Frontend_*) - * - * @access public - */ - function PEAR_Installer(&$ui) - { - parent::PEAR_Common(); - $this->setFrontendObject($ui); - $this->debug = $this->config->get('verbose'); - } - - function setOptions($options) - { - $this->_options = $options; - } - - function setConfig(&$config) - { - $this->config = &$config; - $this->_registry = &$config->getRegistry(); - } - - // }}} - - function _removeBackups($files) - { - foreach ($files as $path) { - $this->addFileOperation('removebackup', array($path)); - } - } - - // {{{ _deletePackageFiles() - - /** - * Delete a package's installed files, does not remove empty directories. - * - * @param string package name - * @param string channel name - * @param bool if true, then files are backed up first - * @return bool TRUE on success, or a PEAR error on failure - * @access protected - */ - function _deletePackageFiles($package, $channel = false, $backup = false) - { - if (!$channel) { - $channel = 'pear.php.net'; - } - if (!strlen($package)) { - return $this->raiseError("No package to uninstall given"); - } - if (strtolower($package) == 'pear' && $channel == 'pear.php.net') { - // to avoid race conditions, include all possible needed files - require_once 'PEAR/Task/Common.php'; - require_once 'PEAR/Task/Replace.php'; - require_once 'PEAR/Task/Unixeol.php'; - require_once 'PEAR/Task/Windowseol.php'; - require_once 'PEAR/PackageFile/v1.php'; - require_once 'PEAR/PackageFile/v2.php'; - require_once 'PEAR/PackageFile/Generator/v1.php'; - require_once 'PEAR/PackageFile/Generator/v2.php'; - } - $filelist = $this->_registry->packageInfo($package, 'filelist', $channel); - if ($filelist == null) { - return $this->raiseError("$channel/$package not installed"); - } - $ret = array(); - foreach ($filelist as $file => $props) { - if (empty($props['installed_as'])) { - continue; - } - $path = $props['installed_as']; - if ($backup) { - $this->addFileOperation('backup', array($path)); - $ret[] = $path; - } - $this->addFileOperation('delete', array($path)); - } - if ($backup) { - return $ret; - } - return true; - } - - // }}} - // {{{ _installFile() - - /** - * @param string filename - * @param array attributes from <file> tag in package.xml - * @param string path to install the file in - * @param array options from command-line - * @access private - */ - function _installFile($file, $atts, $tmp_path, $options) - { - // {{{ return if this file is meant for another platform - static $os; - if (!isset($this->_registry)) { - $this->_registry = &$this->config->getRegistry(); - } - if (isset($atts['platform'])) { - if (empty($os)) { - $os = new OS_Guess(); - } - if (strlen($atts['platform']) && $atts['platform']{0} == '!') { - $negate = true; - $platform = substr($atts['platform'], 1); - } else { - $negate = false; - $platform = $atts['platform']; - } - if ((bool) $os->matchSignature($platform) === $negate) { - $this->log(3, "skipped $file (meant for $atts[platform], we are ".$os->getSignature().")"); - return PEAR_INSTALLER_SKIPPED; - } - } - // }}} - - $channel = $this->pkginfo->getChannel(); - // {{{ assemble the destination paths - switch ($atts['role']) { - case 'src': - case 'extsrc': - $this->source_files++; - return; - case 'doc': - case 'data': - case 'test': - $dest_dir = $this->config->get($atts['role'] . '_dir', null, $channel) . - DIRECTORY_SEPARATOR . $this->pkginfo->getPackage(); - unset($atts['baseinstalldir']); - break; - case 'ext': - case 'php': - $dest_dir = $this->config->get($atts['role'] . '_dir', null, $channel); - break; - case 'script': - $dest_dir = $this->config->get('bin_dir', null, $channel); - break; - default: - return $this->raiseError("Invalid role `$atts[role]' for file $file"); - } - $save_destdir = $dest_dir; - if (!empty($atts['baseinstalldir'])) { - $dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir']; - } - if (dirname($file) != '.' && empty($atts['install-as'])) { - $dest_dir .= DIRECTORY_SEPARATOR . dirname($file); - } - if (empty($atts['install-as'])) { - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . basename($file); - } else { - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . $atts['install-as']; - } - $orig_file = $tmp_path . DIRECTORY_SEPARATOR . $file; - - // Clean up the DIRECTORY_SEPARATOR mess - $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR; - list($dest_file, $orig_file) = preg_replace(array('!\\\\+!', '!/!', "!$ds2+!"), - array(DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR), - array($dest_file, $orig_file)); - $final_dest_file = $installed_as = $dest_file; - if (isset($this->_options['packagingroot'])) { - $installedas_dest_dir = dirname($final_dest_file); - $installedas_dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); - $final_dest_file = $this->_prependPath($final_dest_file, - $this->_options['packagingroot']); - } else { - $installedas_dest_dir = dirname($final_dest_file); - $installedas_dest_file = $installedas_dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); - } - $dest_dir = dirname($final_dest_file); - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); - if (preg_match('~/\.\.(/|\\z)|^\.\./~', str_replace('\\', '/', $dest_file))) { - return $this->raiseError("SECURITY ERROR: file $file (installed to $dest_file) contains parent directory reference ..", PEAR_INSTALLER_FAILED); - } - // }}} - - if (empty($this->_options['register-only']) && - (!file_exists($dest_dir) || !is_dir($dest_dir))) { - if (!$this->mkDirHier($dest_dir)) { - return $this->raiseError("failed to mkdir $dest_dir", - PEAR_INSTALLER_FAILED); - } - $this->log(3, "+ mkdir $dest_dir"); - } - // pretty much nothing happens if we are only registering the install - if (empty($this->_options['register-only'])) { - if (empty($atts['replacements'])) { - if (!file_exists($orig_file)) { - return $this->raiseError("file $orig_file does not exist", - PEAR_INSTALLER_FAILED); - } - if (!@copy($orig_file, $dest_file)) { - return $this->raiseError("failed to write $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - $this->log(3, "+ cp $orig_file $dest_file"); - if (isset($atts['md5sum'])) { - $md5sum = md5_file($dest_file); - } - } else { - // {{{ file with replacements - if (!file_exists($orig_file)) { - return $this->raiseError("file does not exist", - PEAR_INSTALLER_FAILED); - } - $contents = file_get_contents($orig_file); - if ($contents === false) { - $contents = ''; - } - if (isset($atts['md5sum'])) { - $md5sum = md5($contents); - } - $subst_from = $subst_to = array(); - foreach ($atts['replacements'] as $a) { - $to = ''; - if ($a['type'] == 'php-const') { - if (preg_match('/^[a-z0-9_]+\\z/i', $a['to'])) { - eval("\$to = $a[to];"); - } else { - if (!isset($options['soft'])) { - $this->log(0, "invalid php-const replacement: $a[to]"); - } - continue; - } - } elseif ($a['type'] == 'pear-config') { - if ($a['to'] == 'master_server') { - $chan = $this->_registry->getChannel($channel); - if (!PEAR::isError($chan)) { - $to = $chan->getServer(); - } else { - $to = $this->config->get($a['to'], null, $channel); - } - } else { - $to = $this->config->get($a['to'], null, $channel); - } - if (is_null($to)) { - if (!isset($options['soft'])) { - $this->log(0, "invalid pear-config replacement: $a[to]"); - } - continue; - } - } elseif ($a['type'] == 'package-info') { - if ($t = $this->pkginfo->packageInfo($a['to'])) { - $to = $t; - } else { - if (!isset($options['soft'])) { - $this->log(0, "invalid package-info replacement: $a[to]"); - } - continue; - } - } - if (!is_null($to)) { - $subst_from[] = $a['from']; - $subst_to[] = $to; - } - } - $this->log(3, "doing ".sizeof($subst_from)." substitution(s) for $final_dest_file"); - if (sizeof($subst_from)) { - $contents = str_replace($subst_from, $subst_to, $contents); - } - $wp = @fopen($dest_file, "wb"); - if (!is_resource($wp)) { - return $this->raiseError("failed to create $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - if (@fwrite($wp, $contents) === false) { - return $this->raiseError("failed writing to $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - fclose($wp); - // }}} - } - // {{{ check the md5 - if (isset($md5sum)) { - if (strtolower($md5sum) === strtolower($atts['md5sum'])) { - $this->log(2, "md5sum ok: $final_dest_file"); - } else { - if (empty($options['force'])) { - // delete the file - if (file_exists($dest_file)) { - unlink($dest_file); - } - if (!isset($options['ignore-errors'])) { - return $this->raiseError("bad md5sum for file $final_dest_file", - PEAR_INSTALLER_FAILED); - } else { - if (!isset($options['soft'])) { - $this->log(0, "warning : bad md5sum for file $final_dest_file"); - } - } - } else { - if (!isset($options['soft'])) { - $this->log(0, "warning : bad md5sum for file $final_dest_file"); - } - } - } - } - // }}} - // {{{ set file permissions - if (!OS_WINDOWS) { - if ($atts['role'] == 'script') { - $mode = 0777 & ~(int)octdec($this->config->get('umask')); - $this->log(3, "+ chmod +x $dest_file"); - } else { - $mode = 0666 & ~(int)octdec($this->config->get('umask')); - } - if ($atts['role'] != 'src') { - $this->addFileOperation("chmod", array($mode, $dest_file)); - if (!@chmod($dest_file, $mode)) { - if (!isset($options['soft'])) { - $this->log(0, "failed to change mode of $dest_file: $php_errormsg"); - } - } - } - } - // }}} - if ($atts['role'] == 'src') { - rename($dest_file, $final_dest_file); - $this->log(2, "renamed source file $dest_file to $final_dest_file"); - } else { - $this->addFileOperation("rename", array($dest_file, $final_dest_file, - $atts['role'] == 'ext')); - } - } - // Store the full path where the file was installed for easy unistall - if ($atts['role'] != 'script') { - $loc = $this->config->get($atts['role'] . '_dir'); - } else { - $loc = $this->config->get('bin_dir'); - } - if ($atts['role'] != 'src') { - $this->addFileOperation("installed_as", array($file, $installed_as, - $loc, - dirname(substr($installedas_dest_file, strlen($loc))))); - } - - //$this->log(2, "installed: $dest_file"); - return PEAR_INSTALLER_OK; - } - - // }}} - // {{{ _installFile2() - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string filename - * @param array attributes from <file> tag in package.xml - * @param string path to install the file in - * @param array options from command-line - * @access private - */ - function _installFile2(&$pkg, $file, &$real_atts, $tmp_path, $options) - { - $atts = $real_atts; - if (!isset($this->_registry)) { - $this->_registry = &$this->config->getRegistry(); - } - - $channel = $pkg->getChannel(); - // {{{ assemble the destination paths - if (!in_array($atts['attribs']['role'], - PEAR_Installer_Role::getValidRoles($pkg->getPackageType()))) { - return $this->raiseError('Invalid role `' . $atts['attribs']['role'] . - "' for file $file"); - } - $role = &PEAR_Installer_Role::factory($pkg, $atts['attribs']['role'], $this->config); - $err = $role->setup($this, $pkg, $atts['attribs'], $file); - if (PEAR::isError($err)) { - return $err; - } - if (!$role->isInstallable()) { - return; - } - $info = $role->processInstallation($pkg, $atts['attribs'], $file, $tmp_path); - if (PEAR::isError($info)) { - return $info; - } else { - list($save_destdir, $dest_dir, $dest_file, $orig_file) = $info; - } - if (preg_match('~/\.\.(/|\\z)|^\.\./~', str_replace('\\', '/', $dest_file))) { - return $this->raiseError("SECURITY ERROR: file $file (installed to $dest_file) contains parent directory reference ..", PEAR_INSTALLER_FAILED); - } - $final_dest_file = $installed_as = $dest_file; - if (isset($this->_options['packagingroot'])) { - $final_dest_file = $this->_prependPath($final_dest_file, - $this->_options['packagingroot']); - } - $dest_dir = dirname($final_dest_file); - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . '.tmp' . basename($final_dest_file); - // }}} - - if (empty($this->_options['register-only'])) { - if (!file_exists($dest_dir) || !is_dir($dest_dir)) { - if (!$this->mkDirHier($dest_dir)) { - return $this->raiseError("failed to mkdir $dest_dir", - PEAR_INSTALLER_FAILED); - } - $this->log(3, "+ mkdir $dest_dir"); - } - } - $attribs = $atts['attribs']; - unset($atts['attribs']); - // pretty much nothing happens if we are only registering the install - if (empty($this->_options['register-only'])) { - if (!count($atts)) { // no tasks - if (!file_exists($orig_file)) { - return $this->raiseError("file $orig_file does not exist", - PEAR_INSTALLER_FAILED); - } - if (!@copy($orig_file, $dest_file)) { - return $this->raiseError("failed to write $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - $this->log(3, "+ cp $orig_file $dest_file"); - if (isset($attribs['md5sum'])) { - $md5sum = md5_file($dest_file); - } - } else { // file with tasks - if (!file_exists($orig_file)) { - return $this->raiseError("file $orig_file does not exist", - PEAR_INSTALLER_FAILED); - } - $contents = file_get_contents($orig_file); - if ($contents === false) { - $contents = ''; - } - if (isset($attribs['md5sum'])) { - $md5sum = md5($contents); - } - foreach ($atts as $tag => $raw) { - $tag = str_replace(array($pkg->getTasksNs() . ':', '-'), - array('', '_'), $tag); - $task = "PEAR_Task_$tag"; - $task = &new $task($this->config, $this, PEAR_TASK_INSTALL); - if (!$task->isScript()) { // scripts are only handled after installation - $task->init($raw, $attribs, $pkg->getLastInstalledVersion()); - $res = $task->startSession($pkg, $contents, $final_dest_file); - if ($res === false) { - continue; // skip this file - } - if (PEAR::isError($res)) { - return $res; - } - $contents = $res; // save changes - } - $wp = @fopen($dest_file, "wb"); - if (!is_resource($wp)) { - return $this->raiseError("failed to create $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - if (fwrite($wp, $contents) === false) { - return $this->raiseError("failed writing to $dest_file: $php_errormsg", - PEAR_INSTALLER_FAILED); - } - fclose($wp); - } - } - // {{{ check the md5 - if (isset($md5sum)) { - if (strtolower($md5sum) === strtolower($attribs['md5sum'])) { - $this->log(2, "md5sum ok: $final_dest_file"); - } else { - if (empty($options['force'])) { - // delete the file - if (file_exists($dest_file)) { - unlink($dest_file); - } - if (!isset($options['ignore-errors'])) { - return $this->raiseError("bad md5sum for file $final_dest_file", - PEAR_INSTALLER_FAILED); - } else { - if (!isset($options['soft'])) { - $this->log(0, "warning : bad md5sum for file $final_dest_file"); - } - } - } else { - if (!isset($options['soft'])) { - $this->log(0, "warning : bad md5sum for file $final_dest_file"); - } - } - } - } else { - $real_atts['attribs']['md5sum'] = md5_file($dest_file); - } - // }}} - // {{{ set file permissions - if (!OS_WINDOWS) { - if ($role->isExecutable()) { - $mode = 0777 & ~(int)octdec($this->config->get('umask')); - $this->log(3, "+ chmod +x $dest_file"); - } else { - $mode = 0666 & ~(int)octdec($this->config->get('umask')); - } - if ($attribs['role'] != 'src') { - $this->addFileOperation("chmod", array($mode, $dest_file)); - if (!@chmod($dest_file, $mode)) { - if (!isset($options['soft'])) { - $this->log(0, "failed to change mode of $dest_file: $php_errormsg"); - } - } - } - } - // }}} - if ($attribs['role'] == 'src') { - rename($dest_file, $final_dest_file); - $this->log(2, "renamed source file $dest_file to $final_dest_file"); - } else { - $this->addFileOperation("rename", array($dest_file, $final_dest_file, $role->isExtension())); - } - } - // Store the full path where the file was installed for easy uninstall - if ($attribs['role'] != 'src') { - $loc = $this->config->get($role->getLocationConfig(), null, $channel); - $this->addFileOperation("installed_as", array($file, $installed_as, - $loc, - dirname(substr($installed_as, strlen($loc))))); - } - - //$this->log(2, "installed: $dest_file"); - return PEAR_INSTALLER_OK; - } - - // }}} - // {{{ addFileOperation() - - /** - * Add a file operation to the current file transaction. - * - * @see startFileTransaction() - * @param string $type This can be one of: - * - rename: rename a file ($data has 3 values) - * - backup: backup an existing file ($data has 1 value) - * - removebackup: clean up backups created during install ($data has 1 value) - * - chmod: change permissions on a file ($data has 2 values) - * - delete: delete a file ($data has 1 value) - * - rmdir: delete a directory if empty ($data has 1 value) - * - installed_as: mark a file as installed ($data has 4 values). - * @param array $data For all file operations, this array must contain the - * full path to the file or directory that is being operated on. For - * the rename command, the first parameter must be the file to rename, - * the second its new name, the third whether this is a PHP extension. - * - * The installed_as operation contains 4 elements in this order: - * 1. Filename as listed in the filelist element from package.xml - * 2. Full path to the installed file - * 3. Full path from the php_dir configuration variable used in this - * installation - * 4. Relative path from the php_dir that this file is installed in - */ - function addFileOperation($type, $data) - { - if (!is_array($data)) { - return $this->raiseError('Internal Error: $data in addFileOperation' - . ' must be an array, was ' . gettype($data)); - } - if ($type == 'chmod') { - $octmode = decoct($data[0]); - $this->log(3, "adding to transaction: $type $octmode $data[1]"); - } else { - $this->log(3, "adding to transaction: $type " . implode(" ", $data)); - } - $this->file_operations[] = array($type, $data); - } - - // }}} - // {{{ startFileTransaction() - - function startFileTransaction($rollback_in_case = false) - { - if (count($this->file_operations) && $rollback_in_case) { - $this->rollbackFileTransaction(); - } - $this->file_operations = array(); - } - - // }}} - // {{{ commitFileTransaction() - - function commitFileTransaction() - { - $n = count($this->file_operations); - $this->log(2, "about to commit $n file operations"); - // {{{ first, check permissions and such manually - $errors = array(); - foreach ($this->file_operations as $tr) { - list($type, $data) = $tr; - switch ($type) { - case 'rename': - if (!file_exists($data[0])) { - $errors[] = "cannot rename file $data[0], doesn't exist"; - } - // check that dest dir. is writable - if (!is_writable(dirname($data[1]))) { - $errors[] = "permission denied ($type): $data[1]"; - } - break; - case 'chmod': - // check that file is writable - if (!is_writable($data[1])) { - $errors[] = "permission denied ($type): $data[1] " . decoct($data[0]); - } - break; - case 'delete': - if (!file_exists($data[0])) { - $this->log(2, "warning: file $data[0] doesn't exist, can't be deleted"); - } - // check that directory is writable - if (file_exists($data[0])) { - if (!is_writable(dirname($data[0]))) { - $errors[] = "permission denied ($type): $data[0]"; - } else { - // make sure the file to be deleted can be opened for writing - $fp = false; - if (!is_dir($data[0]) && - (!is_writable($data[0]) || !($fp = @fopen($data[0], 'a')))) { - $errors[] = "permission denied ($type): $data[0]"; - } elseif ($fp) { - fclose($fp); - } - } - } - break; - } - - } - // }}} - $m = sizeof($errors); - if ($m > 0) { - foreach ($errors as $error) { - if (!isset($this->_options['soft'])) { - $this->log(1, $error); - } - } - if (!isset($this->_options['ignore-errors'])) { - return false; - } - } - $this->_dirtree = array(); - // {{{ really commit the transaction - foreach ($this->file_operations as $i => $tr) { - if (!$tr) { - // support removal of non-existing backups - continue; - } - list($type, $data) = $tr; - switch ($type) { - case 'backup': - if (!file_exists($data[0])) { - $this->file_operations[$i] = false; - break; - } - if (!@copy($data[0], $data[0] . '.bak')) { - $this->log(1, 'Could not copy ' . $data[0] . ' to ' . $data[0] . - '.bak ' . $php_errormsg); - return false; - } - $this->log(3, "+ backup $data[0] to $data[0].bak"); - break; - case 'removebackup': - if (file_exists($data[0] . '.bak') && is_writable($data[0] . '.bak')) { - unlink($data[0] . '.bak'); - $this->log(3, "+ rm backup of $data[0] ($data[0].bak)"); - } - break; - case 'rename': - if (file_exists($data[1])) { - $test = @unlink($data[1]); - } else { - $test = null; - } - if (!$test && file_exists($data[1])) { - if ($data[2]) { - $extra = ', this extension must be installed manually. Rename to "' . - basename($data[1]) . '"'; - } else { - $extra = ''; - } - if (!isset($this->_options['soft'])) { - $this->log(1, 'Could not delete ' . $data[1] . ', cannot rename ' . - $data[0] . $extra); - } - if (!isset($this->_options['ignore-errors'])) { - return false; - } - } - // permissions issues with rename - copy() is far superior - $perms = @fileperms($data[0]); - if (!@copy($data[0], $data[1])) { - $this->log(1, 'Could not rename ' . $data[0] . ' to ' . $data[1] . - ' ' . $php_errormsg); - return false; - } - // copy over permissions, otherwise they are lost - @chmod($data[1], $perms); - @unlink($data[0]); - $this->log(3, "+ mv $data[0] $data[1]"); - break; - case 'chmod': - if (!@chmod($data[1], $data[0])) { - $this->log(1, 'Could not chmod ' . $data[1] . ' to ' . - decoct($data[0]) . ' ' . $php_errormsg); - return false; - } - $octmode = decoct($data[0]); - $this->log(3, "+ chmod $octmode $data[1]"); - break; - case 'delete': - if (file_exists($data[0])) { - if (!@unlink($data[0])) { - $this->log(1, 'Could not delete ' . $data[0] . ' ' . - $php_errormsg); - return false; - } - $this->log(3, "+ rm $data[0]"); - } - break; - case 'rmdir': - if (file_exists($data[0])) { - do { - $testme = opendir($data[0]); - while (false !== ($entry = readdir($testme))) { - if ($entry == '.' || $entry == '..') { - continue; - } - closedir($testme); - break 2; // this directory is not empty and can't be - // deleted - } - closedir($testme); - if (!@rmdir($data[0])) { - $this->log(1, 'Could not rmdir ' . $data[0] . ' ' . - $php_errormsg); - return false; - } - $this->log(3, "+ rmdir $data[0]"); - } while (false); - } - break; - case 'installed_as': - $this->pkginfo->setInstalledAs($data[0], $data[1]); - if (!isset($this->_dirtree[dirname($data[1])])) { - $this->_dirtree[dirname($data[1])] = true; - $this->pkginfo->setDirtree(dirname($data[1])); - - while(!empty($data[3]) && dirname($data[3]) != $data[3] && - $data[3] != '/' && $data[3] != '\\') { - $this->pkginfo->setDirtree($pp = - $this->_prependPath($data[3], $data[2])); - $this->_dirtree[$pp] = true; - $data[3] = dirname($data[3]); - } - } - break; - } - } - // }}} - $this->log(2, "successfully committed $n file operations"); - $this->file_operations = array(); - return true; - } - - // }}} - // {{{ rollbackFileTransaction() - - function rollbackFileTransaction() - { - $n = count($this->file_operations); - $this->log(2, "rolling back $n file operations"); - foreach ($this->file_operations as $tr) { - list($type, $data) = $tr; - switch ($type) { - case 'backup': - if (file_exists($data[0] . '.bak')) { - if (file_exists($data[0] && is_writable($data[0]))) { - unlink($data[0]); - } - @copy($data[0] . '.bak', $data[0]); - $this->log(3, "+ restore $data[0] from $data[0].bak"); - } - break; - case 'removebackup': - if (file_exists($data[0] . '.bak') && is_writable($data[0] . '.bak')) { - unlink($data[0] . '.bak'); - $this->log(3, "+ rm backup of $data[0] ($data[0].bak)"); - } - break; - case 'rename': - @unlink($data[0]); - $this->log(3, "+ rm $data[0]"); - break; - case 'mkdir': - @rmdir($data[0]); - $this->log(3, "+ rmdir $data[0]"); - break; - case 'chmod': - break; - case 'delete': - break; - case 'installed_as': - $this->pkginfo->setInstalledAs($data[0], false); - break; - } - } - $this->pkginfo->resetDirtree(); - $this->file_operations = array(); - } - - // }}} - // {{{ mkDirHier($dir) - - function mkDirHier($dir) - { - $this->addFileOperation('mkdir', array($dir)); - return parent::mkDirHier($dir); - } - - // }}} - // {{{ download() - - /** - * Download any files and their dependencies, if necessary - * - * @param array a mixed list of package names, local files, or package.xml - * @param PEAR_Config - * @param array options from the command line - * @param array this is the array that will be populated with packages to - * install. Format of each entry: - * - * <code> - * array('pkg' => 'package_name', 'file' => '/path/to/local/file', - * 'info' => array() // parsed package.xml - * ); - * </code> - * @param array this will be populated with any error messages - * @param false private recursion variable - * @param false private recursion variable - * @param false private recursion variable - * @deprecated in favor of PEAR_Downloader - */ - function download($packages, $options, &$config, &$installpackages, - &$errors, $installed = false, $willinstall = false, $state = false) - { - // trickiness: initialize here - parent::PEAR_Downloader($this->ui, $options, $config); - $ret = parent::download($packages); - $errors = $this->getErrorMsgs(); - $installpackages = $this->getDownloadedPackages(); - trigger_error("PEAR Warning: PEAR_Installer::download() is deprecated " . - "in favor of PEAR_Downloader class", E_USER_WARNING); - return $ret; - } - - // }}} - // {{{ _parsePackageXml() - - function _parsePackageXml(&$descfile, &$tmpdir) - { - if (substr($descfile, -4) == '.xml') { - $tmpdir = false; - } else { - // {{{ Decompress pack in tmp dir ------------------------------------- - - // To allow relative package file names - $descfile = realpath($descfile); - - if (PEAR::isError($tmpdir = System::mktemp('-d'))) { - return $tmpdir; - } - $this->log(3, '+ tmp dir created at ' . $tmpdir); - // }}} - } - // Parse xml file ----------------------------------------------- - $pkg = new PEAR_PackageFile($this->config, $this->debug, $tmpdir); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $p = &$pkg->fromAnyFile($descfile, PEAR_VALIDATE_INSTALLING); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($p)) { - if (is_array($p->getUserInfo())) { - foreach ($p->getUserInfo() as $err) { - $loglevel = $err['level'] == 'error' ? 0 : 1; - if (!isset($this->_options['soft'])) { - $this->log($loglevel, ucfirst($err['level']) . ': ' . $err['message']); - } - } - } - return $this->raiseError('Installation failed: invalid package file'); - } else { - $descfile = $p->getPackageFile(); - } - return $p; - } - - // }}} - /** - * Set the list of PEAR_Downloader_Package objects to allow more sane - * dependency validation - * @param array - */ - function setDownloadedPackages(&$pkgs) - { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $this->analyzeDependencies($pkgs); - PEAR::popErrorHandling(); - if (PEAR::isError($err)) { - return $err; - } - $this->_downloadedPackages = &$pkgs; - } - - /** - * Set the list of PEAR_Downloader_Package objects to allow more sane - * dependency validation - * @param array - */ - function setUninstallPackages(&$pkgs) - { - $this->_downloadedPackages = &$pkgs; - } - - function getInstallPackages() - { - return $this->_downloadedPackages; - } - - // {{{ install() - - /** - * Installs the files within the package file specified. - * - * @param string|PEAR_Downloader_Package $pkgfile path to the package file, - * or a pre-initialized packagefile object - * @param array $options - * recognized options: - * - installroot : optional prefix directory for installation - * - force : force installation - * - register-only : update registry but don't install files - * - upgrade : upgrade existing install - * - soft : fail silently - * - nodeps : ignore dependency conflicts/missing dependencies - * - alldeps : install all dependencies - * - onlyreqdeps : install only required dependencies - * - * @return array|PEAR_Error package info if successful - */ - - function install($pkgfile, $options = array()) - { - $this->_options = $options; - $this->_registry = &$this->config->getRegistry(); - if (is_object($pkgfile)) { - $dlpkg = &$pkgfile; - $pkg = $pkgfile->getPackageFile(); - $pkgfile = $pkg->getArchiveFile(); - $descfile = $pkg->getPackageFile(); - $tmpdir = dirname($descfile); - } else { - $descfile = $pkgfile; - $tmpdir = ''; - if (PEAR::isError($pkg = &$this->_parsePackageXml($descfile, $tmpdir))) { - return $pkg; - } - } - - if (realpath($descfile) != realpath($pkgfile)) { - $tar = new Archive_Tar($pkgfile); - if (!$tar->extract($tmpdir)) { - return $this->raiseError("unable to unpack $pkgfile"); - } - } - - $pkgname = $pkg->getName(); - $channel = $pkg->getChannel(); - if (isset($this->_options['packagingroot'])) { - $regdir = $this->_prependPath( - $this->config->get('php_dir', null, 'pear.php.net'), - $this->_options['packagingroot']); - $packrootphp_dir = $this->_prependPath( - $this->config->get('php_dir', null, $channel), - $this->_options['packagingroot']); - } - - if (isset($options['installroot'])) { - $this->config->setInstallRoot($options['installroot']); - $this->_registry = &$this->config->getRegistry(); - $installregistry = &$this->_registry; - $this->installroot = ''; // all done automagically now - $php_dir = $this->config->get('php_dir', null, $channel); - } else { - $this->config->setInstallRoot(false); - $this->_registry = &$this->config->getRegistry(); - if (isset($this->_options['packagingroot'])) { - $installregistry = &new PEAR_Registry($regdir); - if (!$installregistry->channelExists($channel, true)) { - // we need to fake a channel-discover of this channel - $chanobj = $this->_registry->getChannel($channel, true); - $installregistry->addChannel($chanobj); - } - $php_dir = $packrootphp_dir; - } else { - $installregistry = &$this->_registry; - $php_dir = $this->config->get('php_dir', null, $channel); - } - $this->installroot = ''; - } - - // {{{ checks to do when not in "force" mode - if (empty($options['force']) && - (file_exists($this->config->get('php_dir')) && - is_dir($this->config->get('php_dir')))) { - $testp = $channel == 'pear.php.net' ? $pkgname : array($channel, $pkgname); - $instfilelist = $pkg->getInstallationFileList(true); - if (PEAR::isError($instfilelist)) { - return $instfilelist; - } - // ensure we have the most accurate registry - $installregistry->flushFileMap(); - $test = $installregistry->checkFileMap($instfilelist, $testp, '1.1'); - if (PEAR::isError($test)) { - return $test; - } - if (sizeof($test)) { - $pkgs = $this->getInstallPackages(); - $found = false; - foreach ($pkgs as $param) { - if ($pkg->isSubpackageOf($param)) { - $found = true; - break; - } - } - if ($found) { - // subpackages can conflict with earlier versions of parent packages - $parentreg = $installregistry->packageInfo($param->getPackage(), null, $param->getChannel()); - $tmp = $test; - foreach ($tmp as $file => $info) { - if (is_array($info)) { - if (strtolower($info[1]) == strtolower($param->getPackage()) && - strtolower($info[0]) == strtolower($param->getChannel())) { - unset($test[$file]); - unset($parentreg['filelist'][$file]); - } - } else { - if (strtolower($param->getChannel()) != 'pear.php.net') { - continue; - } - if (strtolower($info) == strtolower($param->getPackage())) { - unset($test[$file]); - unset($parentreg['filelist'][$file]); - } - } - } - $pfk = &new PEAR_PackageFile($this->config); - $parentpkg = &$pfk->fromArray($parentreg); - $installregistry->updatePackage2($parentpkg); - } - if ($param->getChannel() == 'pecl.php.net' && isset($options['upgrade'])) { - $tmp = $test; - foreach ($tmp as $file => $info) { - if (is_string($info)) { - // pear.php.net packages are always stored as strings - if (strtolower($info) == strtolower($param->getPackage())) { - // upgrading existing package - unset($test[$file]); - } - } - } - } - if (sizeof($test)) { - $msg = "$channel/$pkgname: conflicting files found:\n"; - $longest = max(array_map("strlen", array_keys($test))); - $fmt = "%${longest}s (%s)\n"; - foreach ($test as $file => $info) { - if (!is_array($info)) { - $info = array('pear.php.net', $info); - } - $info = $info[0] . '/' . $info[1]; - $msg .= sprintf($fmt, $file, $info); - } - if (!isset($options['ignore-errors'])) { - return $this->raiseError($msg); - } else { - if (!isset($options['soft'])) { - $this->log(0, "WARNING: $msg"); - } - } - } - } - } - // }}} - - $this->startFileTransaction(); - - if (empty($options['upgrade']) && empty($options['soft'])) { - // checks to do only when installing new packages - if ($channel == 'pecl.php.net') { - $test = $installregistry->packageExists($pkgname, $channel); - if (!$test) { - $test = $installregistry->packageExists($pkgname, 'pear.php.net'); - } - } else { - $test = $installregistry->packageExists($pkgname, $channel); - } - if (empty($options['force']) && $test) { - return $this->raiseError("$channel/$pkgname is already installed"); - } - } else { - $usechannel = $channel; - if ($channel == 'pecl.php.net') { - $test = $installregistry->packageExists($pkgname, $channel); - if (!$test) { - $test = $installregistry->packageExists($pkgname, 'pear.php.net'); - $usechannel = 'pear.php.net'; - } - } else { - $test = $installregistry->packageExists($pkgname, $channel); - } - if ($test) { - $v1 = $installregistry->packageInfo($pkgname, 'version', $usechannel); - $v2 = $pkg->getVersion(); - $cmp = version_compare("$v1", "$v2", 'gt'); - if (empty($options['force']) && !version_compare("$v2", "$v1", 'gt')) { - return $this->raiseError("upgrade to a newer version ($v2 is not newer than $v1)"); - } - if (empty($options['register-only'])) { - // when upgrading, remove old release's files first: - if (PEAR::isError($err = $this->_deletePackageFiles($pkgname, $usechannel, - true))) { - if (!isset($options['ignore-errors'])) { - return $this->raiseError($err); - } else { - if (!isset($options['soft'])) { - $this->log(0, 'WARNING: ' . $err->getMessage()); - } - } - } else { - $backedup = $err; - } - } - } - } - - // {{{ Copy files to dest dir --------------------------------------- - - // info from the package it self we want to access from _installFile - $this->pkginfo = &$pkg; - // used to determine whether we should build any C code - $this->source_files = 0; - - $savechannel = $this->config->get('default_channel'); - if (empty($options['register-only']) && !is_dir($php_dir)) { - if (PEAR::isError(System::mkdir(array('-p'), $php_dir))) { - return $this->raiseError("no installation destination directory '$php_dir'\n"); - } - } - - $tmp_path = dirname($descfile); - if (substr($pkgfile, -4) != '.xml') { - $tmp_path .= DIRECTORY_SEPARATOR . $pkgname . '-' . $pkg->getVersion(); - } - - $this->configSet('default_channel', $channel); - // {{{ install files - - $ver = $pkg->getPackagexmlVersion(); - if (version_compare($ver, '2.0', '>=')) { - $filelist = $pkg->getInstallationFilelist(); - } else { - $filelist = $pkg->getFileList(); - } - if (PEAR::isError($filelist)) { - return $filelist; - } - $p = &$installregistry->getPackage($pkgname, $channel); - if (empty($options['register-only']) && $p) { - $dirtree = $p->getDirTree(); - } else { - $dirtree = false; - } - $pkg->resetFilelist(); - $pkg->setLastInstalledVersion($installregistry->packageInfo($pkg->getPackage(), - 'version', $pkg->getChannel())); - foreach ($filelist as $file => $atts) { - if ($pkg->getPackagexmlVersion() == '1.0') { - $this->expectError(PEAR_INSTALLER_FAILED); - $res = $this->_installFile($file, $atts, $tmp_path, $options); - $this->popExpect(); - } else { - $this->expectError(PEAR_INSTALLER_FAILED); - $res = $this->_installFile2($pkg, $file, $atts, $tmp_path, $options); - $this->popExpect(); - } - if (PEAR::isError($res)) { - if (empty($options['ignore-errors'])) { - $this->rollbackFileTransaction(); - if ($res->getMessage() == "file does not exist") { - $this->raiseError("file $file in package.xml does not exist"); - } - return $this->raiseError($res); - } else { - if (!isset($options['soft'])) { - $this->log(0, "Warning: " . $res->getMessage()); - } - } - } - $real = isset($atts['attribs']) ? $atts['attribs'] : $atts; - if ($res == PEAR_INSTALLER_OK && $real['role'] != 'src') { - // Register files that were installed - $pkg->installedFile($file, $atts); - } - } - // }}} - - // {{{ compile and install source files - if ($this->source_files > 0 && empty($options['nobuild'])) { - if (PEAR::isError($err = - $this->_compileSourceFiles($savechannel, $pkg))) { - return $err; - } - } - // }}} - - if (isset($backedup)) { - $this->_removeBackups($backedup); - } - if (!$this->commitFileTransaction()) { - $this->rollbackFileTransaction(); - $this->configSet('default_channel', $savechannel); - return $this->raiseError("commit failed", PEAR_INSTALLER_FAILED); - } - // }}} - - $ret = false; - $installphase = 'install'; - $oldversion = false; - // {{{ Register that the package is installed ----------------------- - if (empty($options['upgrade'])) { - // if 'force' is used, replace the info in registry - $usechannel = $channel; - if ($channel == 'pecl.php.net') { - $test = $installregistry->packageExists($pkgname, $channel); - if (!$test) { - $test = $installregistry->packageExists($pkgname, 'pear.php.net'); - $usechannel = 'pear.php.net'; - } - } else { - $test = $installregistry->packageExists($pkgname, $channel); - } - if (!empty($options['force']) && $test) { - $oldversion = $installregistry->packageInfo($pkgname, 'version', $usechannel); - $installregistry->deletePackage($pkgname, $usechannel); - } - $ret = $installregistry->addPackage2($pkg); - } else { - if ($dirtree) { - $this->startFileTransaction(); - // attempt to delete empty directories - uksort($dirtree, array($this, '_sortDirs')); - foreach($dirtree as $dir => $notused) { - $this->addFileOperation('rmdir', array($dir)); - } - $this->commitFileTransaction(); - } - $usechannel = $channel; - if ($channel == 'pecl.php.net') { - $test = $installregistry->packageExists($pkgname, $channel); - if (!$test) { - $test = $installregistry->packageExists($pkgname, 'pear.php.net'); - $usechannel = 'pear.php.net'; - } - } else { - $test = $installregistry->packageExists($pkgname, $channel); - } - // new: upgrade installs a package if it isn't installed - if (!$test) { - $ret = $installregistry->addPackage2($pkg); - } else { - if ($usechannel != $channel) { - $installregistry->deletePackage($pkgname, $usechannel); - $ret = $installregistry->addPackage2($pkg); - } else { - $ret = $installregistry->updatePackage2($pkg); - } - $installphase = 'upgrade'; - } - } - if (!$ret) { - $this->configSet('default_channel', $savechannel); - return $this->raiseError("Adding package $channel/$pkgname to registry failed"); - } - // }}} - $this->configSet('default_channel', $savechannel); - if (class_exists('PEAR_Task_Common')) { // this is auto-included if any tasks exist - if (PEAR_Task_Common::hasPostinstallTasks()) { - PEAR_Task_Common::runPostinstallTasks($installphase); - } - } - return $pkg->toArray(true); - } - - // }}} - - // {{{ _compileSourceFiles() - /** - * @param string - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - */ - function _compileSourceFiles($savechannel, &$filelist) - { - require_once 'PEAR/Builder.php'; - $this->log(1, "$this->source_files source files, building"); - $bob = &new PEAR_Builder($this->ui); - $bob->debug = $this->debug; - $built = $bob->build($filelist, array(&$this, '_buildCallback')); - if (PEAR::isError($built)) { - $this->rollbackFileTransaction(); - $this->configSet('default_channel', $savechannel); - return $built; - } - $this->log(1, "\nBuild process completed successfully"); - foreach ($built as $ext) { - $bn = basename($ext['file']); - list($_ext_name, $_ext_suff) = explode('.', $bn); - if ($_ext_suff == '.so' || $_ext_suff == '.dll') { - if (extension_loaded($_ext_name)) { - $this->raiseError("Extension '$_ext_name' already loaded. " . - 'Please unload it in your php.ini file ' . - 'prior to install or upgrade'); - } - $role = 'ext'; - } else { - $role = 'src'; - } - $dest = $ext['dest']; - $packagingroot = ''; - if (isset($this->_options['packagingroot'])) { - $packagingroot = $this->_options['packagingroot']; - } - $copyto = $this->_prependPath($dest, $packagingroot); - if ($copyto != $dest) { - $this->log(1, "Installing '$dest' as '$copyto'"); - } else { - $this->log(1, "Installing '$dest'"); - } - $copydir = dirname($copyto); - // pretty much nothing happens if we are only registering the install - if (empty($this->_options['register-only'])) { - if (!file_exists($copydir) || !is_dir($copydir)) { - if (!$this->mkDirHier($copydir)) { - return $this->raiseError("failed to mkdir $copydir", - PEAR_INSTALLER_FAILED); - } - $this->log(3, "+ mkdir $copydir"); - } - if (!@copy($ext['file'], $copyto)) { - return $this->raiseError("failed to write $copyto ($php_errormsg)", PEAR_INSTALLER_FAILED); - } - $this->log(3, "+ cp $ext[file] $copyto"); - $this->addFileOperation('rename', array($ext['file'], $copyto)); - if (!OS_WINDOWS) { - $mode = 0666 & ~(int)octdec($this->config->get('umask')); - $this->addFileOperation('chmod', array($mode, $copyto)); - if (!@chmod($copyto, $mode)) { - $this->log(0, "failed to change mode of $copyto ($php_errormsg)"); - } - } - } - - if ($filelist->getPackageXmlVersion() == '1.0') { - $filelist->installedFile($bn, array( - 'role' => $role, - 'name' => $bn, - 'installed_as' => $dest, - 'php_api' => $ext['php_api'], - 'zend_mod_api' => $ext['zend_mod_api'], - 'zend_ext_api' => $ext['zend_ext_api'], - )); - } else { - $filelist->installedFile($bn, array('attribs' => array( - 'role' => $role, - 'name' => $bn, - 'installed_as' => $dest, - 'php_api' => $ext['php_api'], - 'zend_mod_api' => $ext['zend_mod_api'], - 'zend_ext_api' => $ext['zend_ext_api'], - ))); - } - } - } - - // }}} - function &getUninstallPackages() - { - return $this->_downloadedPackages; - } - // {{{ uninstall() - - /** - * Uninstall a package - * - * This method removes all files installed by the application, and then - * removes any empty directories. - * @param string package name - * @param array Command-line options. Possibilities include: - * - * - installroot: base installation dir, if not the default - * - register-only : update registry but don't remove files - * - nodeps: do not process dependencies of other packages to ensure - * uninstallation does not break things - */ - function uninstall($package, $options = array()) - { - if (isset($options['installroot'])) { - $this->config->setInstallRoot($options['installroot']); - $this->installroot = ''; - } else { - $this->config->setInstallRoot(''); - $this->installroot = ''; - } - $this->_registry = &$this->config->getRegistry(); - if (is_object($package)) { - $channel = $package->getChannel(); - $pkg = $package; - $package = $pkg->getPackage(); - } else { - $pkg = false; - $info = $this->_registry->parsePackageName($package, - $this->config->get('default_channel')); - $channel = $info['channel']; - $package = $info['package']; - } - $savechannel = $this->config->get('default_channel'); - $this->configSet('default_channel', $channel); - if (!is_object($pkg)) { - $pkg = $this->_registry->getPackage($package, $channel); - } - if (!$pkg) { - $this->configSet('default_channel', $savechannel); - return $this->raiseError($this->_registry->parsedPackageNameToString( - array( - 'channel' => $channel, - 'package' => $package - ), true) . ' not installed'); - } - if ($pkg->getInstalledBinary()) { - // this is just an alias for a binary package - return $this->_registry->deletePackage($package, $channel); - } - $filelist = $pkg->getFilelist(); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - $depchecker = &new PEAR_Dependency2($this->config, $options, - array('channel' => $channel, 'package' => $package), - PEAR_VALIDATE_UNINSTALLING); - $e = $depchecker->validatePackageUninstall($this); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($e)) { - if (!isset($options['ignore-errors'])) { - return $this->raiseError($e); - } else { - if (!isset($options['soft'])) { - $this->log(0, 'WARNING: ' . $e->getMessage()); - } - } - } elseif (is_array($e)) { - if (!isset($options['soft'])) { - $this->log(0, $e[0]); - } - } - $this->pkginfo = &$pkg; - // pretty much nothing happens if we are only registering the uninstall - if (empty($options['register-only'])) { - // {{{ Delete the files - $this->startFileTransaction(); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - if (PEAR::isError($err = $this->_deletePackageFiles($package, $channel))) { - PEAR::popErrorHandling(); - $this->rollbackFileTransaction(); - $this->configSet('default_channel', $savechannel); - if (!isset($options['ignore-errors'])) { - return $this->raiseError($err); - } else { - if (!isset($options['soft'])) { - $this->log(0, 'WARNING: ' . $err->getMessage()); - } - } - } else { - PEAR::popErrorHandling(); - } - if (!$this->commitFileTransaction()) { - $this->rollbackFileTransaction(); - if (!isset($options['ignore-errors'])) { - return $this->raiseError("uninstall failed"); - } elseif (!isset($options['soft'])) { - $this->log(0, 'WARNING: uninstall failed'); - } - } else { - $this->startFileTransaction(); - if ($dirtree = $pkg->getDirTree()) { - // attempt to delete empty directories - uksort($dirtree, array($this, '_sortDirs')); - foreach($dirtree as $dir => $notused) { - $this->addFileOperation('rmdir', array($dir)); - } - } else { - $this->configSet('default_channel', $savechannel); - return $this->_registry->deletePackage($package, $channel); - } - if (!$this->commitFileTransaction()) { - $this->rollbackFileTransaction(); - if (!isset($options['ignore-errors'])) { - return $this->raiseError("uninstall failed"); - } elseif (!isset($options['soft'])) { - $this->log(0, 'WARNING: uninstall failed'); - } - } - } - // }}} - } - - $this->configSet('default_channel', $savechannel); - // Register that the package is no longer installed - return $this->_registry->deletePackage($package, $channel); - } - - /** - * Sort a list of arrays of array(downloaded packagefilename) by dependency. - * - * It also removes duplicate dependencies - * @param array an array of PEAR_PackageFile_v[1/2] objects - * @return array|PEAR_Error array of array(packagefilename, package.xml contents) - */ - function sortPackagesForUninstall(&$packages) - { - $this->_dependencyDB = &PEAR_DependencyDB::singleton($this->config); - if (PEAR::isError($this->_dependencyDB)) { - return $this->_dependencyDB; - } - usort($packages, array(&$this, '_sortUninstall')); - } - - function _sortUninstall($a, $b) - { - if (!$a->getDeps() && !$b->getDeps()) { - return 0; // neither package has dependencies, order is insignificant - } - if ($a->getDeps() && !$b->getDeps()) { - return -1; // $a must be installed after $b because $a has dependencies - } - if (!$a->getDeps() && $b->getDeps()) { - return 1; // $b must be installed after $a because $b has dependencies - } - // both packages have dependencies - if ($this->_dependencyDB->dependsOn($a, $b)) { - return -1; - } - if ($this->_dependencyDB->dependsOn($b, $a)) { - return 1; - } - return 0; - } - - // }}} - // {{{ _sortDirs() - function _sortDirs($a, $b) - { - if (strnatcmp($a, $b) == -1) return 1; - if (strnatcmp($a, $b) == 1) return -1; - return 0; - } - - // }}} - - // {{{ _buildCallback() - - function _buildCallback($what, $data) - { - if (($what == 'cmdoutput' && $this->debug > 1) || - ($what == 'output' && $this->debug > 0)) { - $this->ui->outputData(rtrim($data), 'build'); - } - } - - // }}} -} - -// {{{ md5_file() utility function -if (!function_exists("md5_file")) { - function md5_file($filename) { - if (!$fd = @fopen($file, 'r')) { - return false; - } - fclose($fd); - return md5(file_get_contents($filename)); - } -} -// }}} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role.php b/src/vitis/vas/rest/class/PEAR/Installer/Role.php deleted file mode 100755 index 3b50db3c5a753554262f5b97ddf6f39629570f4f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role.php +++ /dev/null @@ -1,253 +0,0 @@ -<?php -/** - * PEAR_Installer_Role - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Role.php,v 1.20 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * base class for installer roles - */ -require_once 'PEAR/Installer/Role/Common.php'; -require_once 'PEAR/XMLParser.php'; -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role -{ - /** - * Set up any additional configuration variables that file roles require - * - * Never call this directly, it is called by the PEAR_Config constructor - * @param PEAR_Config - * @access private - * @static - */ - function initializeConfig(&$config) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $class => $info) { - if (!$info['config_vars']) { - continue; - } - $config->_addConfigVars($class, $info['config_vars']); - } - } - - /** - * @param PEAR_PackageFile_v2 - * @param string role name - * @param PEAR_Config - * @return PEAR_Installer_Role_Common - * @static - */ - function &factory($pkg, $role, &$config) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - if (!in_array($role, PEAR_Installer_Role::getValidRoles($pkg->getPackageType()))) { - $a = false; - return $a; - } - $a = 'PEAR_Installer_Role_' . ucfirst($role); - if (!class_exists($a)) { - require_once str_replace('_', '/', $a) . '.php'; - } - $b = new $a($config); - return $b; - } - - /** - * Get a list of file roles that are valid for the particular release type. - * - * For instance, src files serve no purpose in regular php releases. - * @param string - * @param bool clear cache - * @return array - * @static - */ - function getValidRoles($release, $clear = false) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - static $ret = array(); - if ($clear) { - $ret = array(); - } - if (isset($ret[$release])) { - return $ret[$release]; - } - $ret[$release] = array(); - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { - if (in_array($release, $okreleases['releasetypes'])) { - $ret[$release][] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); - } - } - return $ret[$release]; - } - - /** - * Get a list of roles that require their files to be installed - * - * Most roles must be installed, but src and package roles, for instance - * are pseudo-roles. src files are compiled into a new extension. Package - * roles are actually fully bundled releases of a package - * @param bool clear cache - * @return array - * @static - */ - function getInstallableRoles($clear = false) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - static $ret; - if ($clear) { - unset($ret); - } - if (!isset($ret)) { - $ret = array(); - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { - if ($okreleases['installable']) { - $ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); - } - } - } - return $ret; - } - - /** - * Return an array of roles that are affected by the baseinstalldir attribute - * - * Most roles ignore this attribute, and instead install directly into: - * PackageName/filepath - * so a tests file tests/file.phpt is installed into PackageName/tests/filepath.php - * @param bool clear cache - * @return array - * @static - */ - function getBaseinstallRoles($clear = false) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - static $ret; - if ($clear) { - unset($ret); - } - if (!isset($ret)) { - $ret = array(); - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { - if ($okreleases['honorsbaseinstall']) { - $ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); - } - } - } - return $ret; - } - - /** - * Return an array of file roles that should be analyzed for PHP content at package time, - * like the "php" role. - * @param bool clear cache - * @return array - * @static - */ - function getPhpRoles($clear = false) - { - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'])) { - PEAR_Installer_Role::registerRoles(); - } - static $ret; - if ($clear) { - unset($ret); - } - if (!isset($ret)) { - $ret = array(); - foreach ($GLOBALS['_PEAR_INSTALLER_ROLES'] as $role => $okreleases) { - if ($okreleases['phpfile']) { - $ret[] = strtolower(str_replace('PEAR_Installer_Role_', '', $role)); - } - } - } - return $ret; - } - - /** - * Scan through the Command directory looking for classes - * and see what commands they implement. - * @param string which directory to look for classes, defaults to - * the Installer/Roles subdirectory of - * the directory from where this file (__FILE__) is - * included. - * - * @return bool TRUE on success, a PEAR error on failure - * @access public - * @static - */ - function registerRoles($dir = null) - { - $GLOBALS['_PEAR_INSTALLER_ROLES'] = array(); - $parser = new PEAR_XMLParser; - if ($dir === null) { - $dir = dirname(__FILE__) . '/Role'; - } - if (!file_exists($dir) || !is_dir($dir)) { - return PEAR::raiseError("registerRoles: opendir($dir) failed: does not exist/is not directory"); - } - $dp = @opendir($dir); - if (empty($dp)) { - return PEAR::raiseError("registerRoles: opendir($dir) failed: $php_errmsg"); - } - while ($entry = readdir($dp)) { - if ($entry{0} == '.' || substr($entry, -4) != '.xml') { - continue; - } - $class = "PEAR_Installer_Role_".substr($entry, 0, -4); - // List of roles - if (!isset($GLOBALS['_PEAR_INSTALLER_ROLES'][$class])) { - $file = "$dir/$entry"; - $parser->parse(file_get_contents($file)); - $data = $parser->getData(); - if (!is_array($data['releasetypes'])) { - $data['releasetypes'] = array($data['releasetypes']); - } - $GLOBALS['_PEAR_INSTALLER_ROLES'][$class] = $data; - } - } - closedir($dp); - ksort($GLOBALS['_PEAR_INSTALLER_ROLES']); - PEAR_Installer_Role::getBaseinstallRoles(true); - PEAR_Installer_Role::getInstallableRoles(true); - PEAR_Installer_Role::getPhpRoles(true); - PEAR_Installer_Role::getValidRoles('****', true); - return true; - } -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Cfg.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Cfg.php deleted file mode 100755 index 1f85ebb5a1970e71adc58591b992776fb3c3d34d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Cfg.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php -/** - * PEAR_Installer_Role_Cfg - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 2007-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Cfg.php,v 1.8 2008/05/14 21:26:30 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.7.0 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 2007-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.7.0 - */ -class PEAR_Installer_Role_Cfg extends PEAR_Installer_Role_Common -{ - /** - * @var PEAR_Installer - */ - var $installer; - /** - * the md5 of the original file - * - * @var unknown_type - */ - var $md5 = null; - /** - * Do any unusual setup here - * @param PEAR_Installer - * @param PEAR_PackageFile_v2 - * @param array file attributes - * @param string file name - */ - function setup(&$installer, $pkg, $atts, $file) - { - $this->installer = &$installer; - $reg = &$this->installer->config->getRegistry(); - $package = $reg->getPackage($pkg->getPackage(), $pkg->getChannel()); - if ($package) { - $filelist = $package->getFilelist(); - if (isset($filelist[$file]) && isset($filelist[$file]['md5sum'])) { - $this->md5 = $filelist[$file]['md5sum']; - } - } - } - - function processInstallation($pkg, $atts, $file, $tmp_path, $layer = null) - { - $test = parent::processInstallation($pkg, $atts, $file, $tmp_path, $layer); - if (@file_exists($test[2]) && @file_exists($test[3])) { - $md5 = md5_file($test[2]); - // configuration has already been installed, check for mods - if ($md5 !== $this->md5 && $md5 !== md5_file($test[3])) { - // configuration has been modified, so save our version as - // configfile-version - $old = $test[2]; - $test[2] .= '.new-' . $pkg->getVersion(); - // backup original and re-install it - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $tmpcfg = $this->config->get('temp_dir'); - $newloc = System::mkdir(array('-p', $tmpcfg)); - if (!$newloc) { - // try temp_dir - $newloc = System::mktemp(array('-d')); - if (!$newloc || PEAR::isError($newloc)) { - PEAR::popErrorHandling(); - return PEAR::raiseError('Could not save existing configuration file '. - $old . ', unable to install. Please set temp_dir ' . - 'configuration variable to a writeable location and try again'); - } - } else { - $newloc = $tmpcfg; - } - $temp_file = $newloc . DIRECTORY_SEPARATOR . uniqid('savefile'); - if (!@copy($old, $temp_file)) { - PEAR::popErrorHandling(); - return PEAR::raiseError('Could not save existing configuration file '. - $old . ', unable to install. Please set temp_dir ' . - 'configuration variable to a writeable location and try again'); - } - PEAR::popErrorHandling(); - $this->installer->log(0, "WARNING: configuration file $old is being installed as $test[2], you should manually merge in changes to the existing configuration file"); - $this->installer->addFileOperation('rename', array($temp_file, $old, false)); - $this->installer->addFileOperation('delete', array($temp_file)); - } - } - return $test; - } -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Cfg.xml b/src/vitis/vas/rest/class/PEAR/Installer/Role/Cfg.xml deleted file mode 100755 index 7a415dc466ab9a58607c4bed3dc2900f7414e76d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Cfg.xml +++ /dev/null @@ -1,15 +0,0 @@ -<role version="1.0"> - <releasetypes>php</releasetypes> - <releasetypes>extsrc</releasetypes> - <releasetypes>extbin</releasetypes> - <releasetypes>zendextsrc</releasetypes> - <releasetypes>zendextbin</releasetypes> - <installable>1</installable> - <locationconfig>cfg_dir</locationconfig> - <honorsbaseinstall /> - <unusualbaseinstall>1</unusualbaseinstall> - <phpfile /> - <executable /> - <phpextension /> - <config_vars /> -</role> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Common.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Common.php deleted file mode 100755 index 32cd821751b15cda89184a6c1793ac591cdf8e80..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Common.php +++ /dev/null @@ -1,180 +0,0 @@ -<?php -/** - * Base class for all installation roles. - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2006 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Common.php,v 1.12 2006/10/19 23:55:32 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class for all installation roles. - * - * This class allows extensibility of file roles. Packages with complex - * customization can now provide custom file roles along with the possibility of - * adding configuration values to match. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2006 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Common -{ - /** - * @var PEAR_Config - * @access protected - */ - var $config; - - /** - * @param PEAR_Config - */ - function PEAR_Installer_Role_Common(&$config) - { - $this->config = $config; - } - - /** - * Retrieve configuration information about a file role from its XML info - * - * @param string $role Role Classname, as in "PEAR_Installer_Role_Data" - * @return array - */ - function getInfo($role) - { - if (empty($GLOBALS['_PEAR_INSTALLER_ROLES'][$role])) { - return PEAR::raiseError('Unknown Role class: "' . $role . '"'); - } - return $GLOBALS['_PEAR_INSTALLER_ROLES'][$role]; - } - - /** - * This is called for each file to set up the directories and files - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param array attributes from the <file> tag - * @param string file name - * @return array an array consisting of: - * - * 1 the original, pre-baseinstalldir installation directory - * 2 the final installation directory - * 3 the full path to the final location of the file - * 4 the location of the pre-installation file - */ - function processInstallation($pkg, $atts, $file, $tmp_path, $layer = null) - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - if (!$roleInfo['locationconfig']) { - return false; - } - if ($roleInfo['honorsbaseinstall']) { - $dest_dir = $save_destdir = $this->config->get($roleInfo['locationconfig'], $layer, - $pkg->getChannel()); - if (!empty($atts['baseinstalldir'])) { - $dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir']; - } - } elseif ($roleInfo['unusualbaseinstall']) { - $dest_dir = $save_destdir = $this->config->get($roleInfo['locationconfig'], - $layer, $pkg->getChannel()) . DIRECTORY_SEPARATOR . $pkg->getPackage(); - if (!empty($atts['baseinstalldir'])) { - $dest_dir .= DIRECTORY_SEPARATOR . $atts['baseinstalldir']; - } - } else { - $dest_dir = $save_destdir = $this->config->get($roleInfo['locationconfig'], - $layer, $pkg->getChannel()) . DIRECTORY_SEPARATOR . $pkg->getPackage(); - } - if (dirname($file) != '.' && empty($atts['install-as'])) { - $dest_dir .= DIRECTORY_SEPARATOR . dirname($file); - } - if (empty($atts['install-as'])) { - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . basename($file); - } else { - $dest_file = $dest_dir . DIRECTORY_SEPARATOR . $atts['install-as']; - } - $orig_file = $tmp_path . DIRECTORY_SEPARATOR . $file; - - // Clean up the DIRECTORY_SEPARATOR mess - $ds2 = DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR; - - list($dest_dir, $dest_file, $orig_file) = preg_replace(array('!\\\\+!', '!/!', "!$ds2+!"), - array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, - DIRECTORY_SEPARATOR), - array($dest_dir, $dest_file, $orig_file)); - return array($save_destdir, $dest_dir, $dest_file, $orig_file); - } - - /** - * Get the name of the configuration variable that specifies the location of this file - * @return string|false - */ - function getLocationConfig() - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - return $roleInfo['locationconfig']; - } - - /** - * Do any unusual setup here - * @param PEAR_Installer - * @param PEAR_PackageFile_v2 - * @param array file attributes - * @param string file name - */ - function setup(&$installer, $pkg, $atts, $file) - { - } - - function isExecutable() - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - return $roleInfo['executable']; - } - - function isInstallable() - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - return $roleInfo['installable']; - } - - function isExtension() - { - $roleInfo = PEAR_Installer_Role_Common::getInfo('PEAR_Installer_Role_' . - ucfirst(str_replace('pear_installer_role_', '', strtolower(get_class($this))))); - if (PEAR::isError($roleInfo)) { - return $roleInfo; - } - return $roleInfo['phpextension']; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Data.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Data.php deleted file mode 100755 index 394f68ce26bb0b07c60faee5fe2970372d040d1d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Data.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * PEAR_Installer_Role_Data - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Data.php,v 1.7 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Data extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Data.xml b/src/vitis/vas/rest/class/PEAR/Installer/Role/Data.xml deleted file mode 100755 index eae63720d3ba4022846e7ed36880cd71af734139..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Data.xml +++ /dev/null @@ -1,15 +0,0 @@ -<role version="1.0"> - <releasetypes>php</releasetypes> - <releasetypes>extsrc</releasetypes> - <releasetypes>extbin</releasetypes> - <releasetypes>zendextsrc</releasetypes> - <releasetypes>zendextbin</releasetypes> - <installable>1</installable> - <locationconfig>data_dir</locationconfig> - <honorsbaseinstall /> - <unusualbaseinstall /> - <phpfile /> - <executable /> - <phpextension /> - <config_vars /> -</role> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Doc.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Doc.php deleted file mode 100755 index b974dc6846c03efc198bbcfa57958fb2e1f7db42..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Doc.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * PEAR_Installer_Role_Doc - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Doc.php,v 1.7 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Doc extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Doc.xml b/src/vitis/vas/rest/class/PEAR/Installer/Role/Doc.xml deleted file mode 100755 index 173afba011a0f45e88da18659bd47c3cb47471a1..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Doc.xml +++ /dev/null @@ -1,15 +0,0 @@ -<role version="1.0"> - <releasetypes>php</releasetypes> - <releasetypes>extsrc</releasetypes> - <releasetypes>extbin</releasetypes> - <releasetypes>zendextsrc</releasetypes> - <releasetypes>zendextbin</releasetypes> - <installable>1</installable> - <locationconfig>doc_dir</locationconfig> - <honorsbaseinstall /> - <unusualbaseinstall /> - <phpfile /> - <executable /> - <phpextension /> - <config_vars /> -</role> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Ext.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Ext.php deleted file mode 100755 index 38c0e9af40b7fa9e46106614e6cd1d7a13defe7d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Ext.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * PEAR_Installer_Role_Ext - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Ext.php,v 1.7 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Ext extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Ext.xml b/src/vitis/vas/rest/class/PEAR/Installer/Role/Ext.xml deleted file mode 100755 index e2940fe1f22cbe7dc1c7a1b02e97e0c6ab9ca7ef..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Ext.xml +++ /dev/null @@ -1,12 +0,0 @@ -<role version="1.0"> - <releasetypes>extbin</releasetypes> - <releasetypes>zendextbin</releasetypes> - <installable>1</installable> - <locationconfig>ext_dir</locationconfig> - <honorsbaseinstall>1</honorsbaseinstall> - <unusualbaseinstall /> - <phpfile /> - <executable /> - <phpextension>1</phpextension> - <config_vars /> -</role> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Php.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Php.php deleted file mode 100755 index f232b723df8613b7277400e90b3aeace97c413b6..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Php.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * PEAR_Installer_Role_Php - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Php.php,v 1.8 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Php extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Php.xml b/src/vitis/vas/rest/class/PEAR/Installer/Role/Php.xml deleted file mode 100755 index 6b9a0e67af9ac8d90543de9575988a7da3427da8..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Php.xml +++ /dev/null @@ -1,15 +0,0 @@ -<role version="1.0"> - <releasetypes>php</releasetypes> - <releasetypes>extsrc</releasetypes> - <releasetypes>extbin</releasetypes> - <releasetypes>zendextsrc</releasetypes> - <releasetypes>zendextbin</releasetypes> - <installable>1</installable> - <locationconfig>php_dir</locationconfig> - <honorsbaseinstall>1</honorsbaseinstall> - <unusualbaseinstall /> - <phpfile>1</phpfile> - <executable /> - <phpextension /> - <config_vars /> -</role> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Script.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Script.php deleted file mode 100755 index b8affdbb450a4b5c236cb3de6b15076ae9764b2b..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Script.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * PEAR_Installer_Role_Script - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Script.php,v 1.7 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Script extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Script.xml b/src/vitis/vas/rest/class/PEAR/Installer/Role/Script.xml deleted file mode 100755 index e732cf2af6f8e3731d0f91068053787eb23ad4eb..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Script.xml +++ /dev/null @@ -1,15 +0,0 @@ -<role version="1.0"> - <releasetypes>php</releasetypes> - <releasetypes>extsrc</releasetypes> - <releasetypes>extbin</releasetypes> - <releasetypes>zendextsrc</releasetypes> - <releasetypes>zendextbin</releasetypes> - <installable>1</installable> - <locationconfig>bin_dir</locationconfig> - <honorsbaseinstall>1</honorsbaseinstall> - <unusualbaseinstall /> - <phpfile /> - <executable>1</executable> - <phpextension /> - <config_vars /> -</role> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Src.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Src.php deleted file mode 100755 index 68d07e4dc9bf4cee6215139d85bef37c8f042f4d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Src.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php -/** - * PEAR_Installer_Role_Src - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Src.php,v 1.7 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Src extends PEAR_Installer_Role_Common -{ - function setup(&$installer, $pkg, $atts, $file) - { - $installer->source_files++; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Src.xml b/src/vitis/vas/rest/class/PEAR/Installer/Role/Src.xml deleted file mode 100755 index 103483402f04d40d2630ffa2e46d866c039d806a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Src.xml +++ /dev/null @@ -1,12 +0,0 @@ -<role version="1.0"> - <releasetypes>extsrc</releasetypes> - <releasetypes>zendextsrc</releasetypes> - <installable>1</installable> - <locationconfig>temp_dir</locationconfig> - <honorsbaseinstall /> - <unusualbaseinstall /> - <phpfile /> - <executable /> - <phpextension /> - <config_vars /> -</role> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Test.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Test.php deleted file mode 100755 index 63979b93735886f33e7a33064f53a3443bc2317c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Test.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * PEAR_Installer_Role_Test - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Test.php,v 1.7 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Installer_Role_Test extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Test.xml b/src/vitis/vas/rest/class/PEAR/Installer/Role/Test.xml deleted file mode 100755 index 51d5b894e07b695f5766bf10a7c70a8630eefa61..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Test.xml +++ /dev/null @@ -1,15 +0,0 @@ -<role version="1.0"> - <releasetypes>php</releasetypes> - <releasetypes>extsrc</releasetypes> - <releasetypes>extbin</releasetypes> - <releasetypes>zendextsrc</releasetypes> - <releasetypes>zendextbin</releasetypes> - <installable>1</installable> - <locationconfig>test_dir</locationconfig> - <honorsbaseinstall /> - <unusualbaseinstall /> - <phpfile /> - <executable /> - <phpextension /> - <config_vars /> -</role> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Www.php b/src/vitis/vas/rest/class/PEAR/Installer/Role/Www.php deleted file mode 100755 index 801097f998180c7d0a530788ba81be9ef73d0bce..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Www.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/** - * PEAR_Installer_Role_Www - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 2007-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Www.php,v 1.2 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.7.0 - */ - -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 2007-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.7.0 - */ -class PEAR_Installer_Role_Www extends PEAR_Installer_Role_Common {} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Installer/Role/Www.xml b/src/vitis/vas/rest/class/PEAR/Installer/Role/Www.xml deleted file mode 100755 index 7598be38892571d3eca2d32d24b5413377ad6099..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Installer/Role/Www.xml +++ /dev/null @@ -1,15 +0,0 @@ -<role version="1.0"> - <releasetypes>php</releasetypes> - <releasetypes>extsrc</releasetypes> - <releasetypes>extbin</releasetypes> - <releasetypes>zendextsrc</releasetypes> - <releasetypes>zendextbin</releasetypes> - <installable>1</installable> - <locationconfig>www_dir</locationconfig> - <honorsbaseinstall>1</honorsbaseinstall> - <unusualbaseinstall /> - <phpfile /> - <executable /> - <phpextension /> - <config_vars /> -</role> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Mail.php b/src/vitis/vas/rest/class/PEAR/Mail.php deleted file mode 100755 index 51421869e0e2e995926a7b90e17112e9b056fe6b..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail.php +++ /dev/null @@ -1,245 +0,0 @@ -<?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: Mail.php,v 1.20 2007/10/06 17:00:00 chagenbu Exp $ - -require_once 'PEAR.php'; - -/** - * PEAR's Mail:: interface. Defines the interface for implementing - * mailers under the PEAR hierarchy, and provides supporting functions - * useful in multiple mailer backends. - * - * @access public - * @version $Revision: 1.20 $ - * @package Mail - */ -class Mail -{ - /** - * Line terminator used for separating header lines. - * @var string - */ - var $sep = "\r\n"; - - /** - * Provides an interface for generating Mail:: objects of various - * types - * - * @param string $driver The kind of Mail:: object to instantiate. - * @param array $params The parameters to pass to the Mail:: object. - * @return object Mail a instance of the driver class or if fails a PEAR Error - * @access public - */ - function &factory($driver, $params = array()) - { - $driver = strtolower($driver); - @include_once 'Mail/' . $driver . '.php'; - $class = 'Mail_' . $driver; - if (class_exists($class)) { - $mailer = new $class($params); - return $mailer; - } else { - return PEAR::raiseError('Unable to find class for driver ' . $driver); - } - } - - /** - * Implements Mail::send() function using php's built-in mail() - * command. - * - * @param mixed $recipients Either a comma-seperated list of recipients - * (RFC822 compliant), or an array of recipients, - * each RFC822 valid. This may contain recipients not - * specified in the headers, for Bcc:, resending - * messages, etc. - * - * @param array $headers The array of headers to send with the mail, in an - * associative array, where the array key is the - * header name (ie, 'Subject'), and the array value - * is the header value (ie, 'test'). The header - * produced from those values would be 'Subject: - * test'. - * - * @param string $body The full text of the message body, including any - * Mime parts, etc. - * - * @return mixed Returns true on success, or a PEAR_Error - * containing a descriptive error message on - * failure. - * - * @access public - * @deprecated use Mail_mail::send instead - */ - function send($recipients, $headers, $body) - { - if (!is_array($headers)) { - return PEAR::raiseError('$headers must be an array'); - } - - $result = $this->_sanitizeHeaders($headers); - if (is_a($result, 'PEAR_Error')) { - return $result; - } - - // if we're passed an array of recipients, implode it. - if (is_array($recipients)) { - $recipients = implode(', ', $recipients); - } - - // get the Subject out of the headers array so that we can - // pass it as a seperate argument to mail(). - $subject = ''; - if (isset($headers['Subject'])) { - $subject = $headers['Subject']; - unset($headers['Subject']); - } - - // flatten the headers out. - list(, $text_headers) = Mail::prepareHeaders($headers); - - return mail($recipients, $subject, $body, $text_headers); - } - - /** - * Sanitize an array of mail headers by removing any additional header - * strings present in a legitimate header's value. The goal of this - * filter is to prevent mail injection attacks. - * - * @param array $headers The associative array of headers to sanitize. - * - * @access private - */ - function _sanitizeHeaders(&$headers) - { - foreach ($headers as $key => $value) { - $headers[$key] = - preg_replace('=((<CR>|<LF>|0x0A/%0A|0x0D/%0D|\\n|\\r)\S).*=i', - null, $value); - } - } - - /** - * Take an array of mail headers and return a string containing - * text usable in sending a message. - * - * @param array $headers The array of headers to prepare, in an associative - * array, where the array key is the header name (ie, - * 'Subject'), and the array value is the header - * value (ie, 'test'). The header produced from those - * values would be 'Subject: test'. - * - * @return mixed Returns false if it encounters a bad address, - * otherwise returns an array containing two - * elements: Any From: address found in the headers, - * and the plain text version of the headers. - * @access private - */ - function prepareHeaders($headers) - { - $lines = array(); - $from = null; - - foreach ($headers as $key => $value) { - if (strcasecmp($key, 'From') === 0) { - include_once 'Mail/RFC822.php'; - $parser = new Mail_RFC822(); - $addresses = $parser->parseAddressList($value, 'localhost', false); - if (is_a($addresses, 'PEAR_Error')) { - return $addresses; - } - - $from = $addresses[0]->mailbox . '@' . $addresses[0]->host; - - // Reject envelope From: addresses with spaces. - if (strstr($from, ' ')) { - return false; - } - - $lines[] = $key . ': ' . $value; - } elseif (strcasecmp($key, 'Received') === 0) { - $received = array(); - if (is_array($value)) { - foreach ($value as $line) { - $received[] = $key . ': ' . $line; - } - } - else { - $received[] = $key . ': ' . $value; - } - // Put Received: headers at the top. Spam detectors often - // flag messages with Received: headers after the Subject: - // as spam. - $lines = array_merge($received, $lines); - } else { - // If $value is an array (i.e., a list of addresses), convert - // it to a comma-delimited string of its elements (addresses). - if (is_array($value)) { - $value = implode(', ', $value); - } - $lines[] = $key . ': ' . $value; - } - } - - return array($from, join($this->sep, $lines)); - } - - /** - * Take a set of recipients and parse them, returning an array of - * bare addresses (forward paths) that can be passed to sendmail - * or an smtp server with the rcpt to: command. - * - * @param mixed Either a comma-seperated list of recipients - * (RFC822 compliant), or an array of recipients, - * each RFC822 valid. - * - * @return mixed An array of forward paths (bare addresses) or a PEAR_Error - * object if the address list could not be parsed. - * @access private - */ - function parseRecipients($recipients) - { - include_once 'Mail/RFC822.php'; - - // if we're passed an array, assume addresses are valid and - // implode them before parsing. - if (is_array($recipients)) { - $recipients = implode(', ', $recipients); - } - - // Parse recipients, leaving out all personal info. This is - // for smtp recipients, etc. All relevant personal information - // should already be in the headers. - $addresses = Mail_RFC822::parseAddressList($recipients, 'localhost', false); - - // If parseAddressList() returned a PEAR_Error object, just return it. - if (is_a($addresses, 'PEAR_Error')) { - return $addresses; - } - - $recipients = array(); - if (is_array($addresses)) { - foreach ($addresses as $ob) { - $recipients[] = $ob->mailbox . '@' . $ob->host; - } - } - - return $recipients; - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/Mail/RFC822.php b/src/vitis/vas/rest/class/PEAR/Mail/RFC822.php deleted file mode 100755 index 09938c48d5c349e182b1ec55e97d478b0611afa5..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/RFC822.php +++ /dev/null @@ -1,940 +0,0 @@ -<?php -// +-----------------------------------------------------------------------+ -// | Copyright (c) 2001-2002, Richard Heyes | -// | All rights reserved. | -// | | -// | Redistribution and use in source and binary forms, with or without | -// | modification, are permitted provided that the following conditions | -// | are met: | -// | | -// | o Redistributions of source code must retain the above copyright | -// | notice, this list of conditions and the following disclaimer. | -// | o Redistributions in binary form must reproduce the above copyright | -// | notice, this list of conditions and the following disclaimer in the | -// | documentation and/or other materials provided with the distribution.| -// | o The names of the authors may not be used to endorse or promote | -// | products derived from this software without specific prior written | -// | permission. | -// | | -// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | -// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | -// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | -// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | -// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | -// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | -// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | -// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | -// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | -// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | -// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | -// | | -// +-----------------------------------------------------------------------+ -// | Authors: Richard Heyes <richard@phpguru.org> | -// | Chuck Hagenbuch <chuck@horde.org> | -// +-----------------------------------------------------------------------+ - -/** - * RFC 822 Email address list validation Utility - * - * What is it? - * - * This class will take an address string, and parse it into it's consituent - * parts, be that either addresses, groups, or combinations. Nested groups - * are not supported. The structure it returns is pretty straight forward, - * and is similar to that provided by the imap_rfc822_parse_adrlist(). Use - * print_r() to view the structure. - * - * How do I use it? - * - * $address_string = 'My Group: "Richard" <richard@localhost> (A comment), ted@example.com (Ted Bloggs), Barney;'; - * $structure = Mail_RFC822::parseAddressList($address_string, 'example.com', true) - * print_r($structure); - * - * @author Richard Heyes <richard@phpguru.org> - * @author Chuck Hagenbuch <chuck@horde.org> - * @version $Revision: 1.24 $ - * @license BSD - * @package Mail - */ -class Mail_RFC822 { - - /** - * The address being parsed by the RFC822 object. - * @var string $address - */ - var $address = ''; - - /** - * The default domain to use for unqualified addresses. - * @var string $default_domain - */ - var $default_domain = 'localhost'; - - /** - * Should we return a nested array showing groups, or flatten everything? - * @var boolean $nestGroups - */ - var $nestGroups = true; - - /** - * Whether or not to validate atoms for non-ascii characters. - * @var boolean $validate - */ - var $validate = true; - - /** - * The array of raw addresses built up as we parse. - * @var array $addresses - */ - var $addresses = array(); - - /** - * The final array of parsed address information that we build up. - * @var array $structure - */ - var $structure = array(); - - /** - * The current error message, if any. - * @var string $error - */ - var $error = null; - - /** - * An internal counter/pointer. - * @var integer $index - */ - var $index = null; - - /** - * The number of groups that have been found in the address list. - * @var integer $num_groups - * @access public - */ - var $num_groups = 0; - - /** - * A variable so that we can tell whether or not we're inside a - * Mail_RFC822 object. - * @var boolean $mailRFC822 - */ - var $mailRFC822 = true; - - /** - * A limit after which processing stops - * @var int $limit - */ - var $limit = null; - - /** - * Sets up the object. The address must either be set here or when - * calling parseAddressList(). One or the other. - * - * @access public - * @param string $address The address(es) to validate. - * @param string $default_domain Default domain/host etc. If not supplied, will be set to localhost. - * @param boolean $nest_groups Whether to return the structure with groups nested for easier viewing. - * @param boolean $validate Whether to validate atoms. Turn this off if you need to run addresses through before encoding the personal names, for instance. - * - * @return object Mail_RFC822 A new Mail_RFC822 object. - */ - function Mail_RFC822($address = null, $default_domain = null, $nest_groups = null, $validate = null, $limit = null) - { - if (isset($address)) $this->address = $address; - if (isset($default_domain)) $this->default_domain = $default_domain; - if (isset($nest_groups)) $this->nestGroups = $nest_groups; - if (isset($validate)) $this->validate = $validate; - if (isset($limit)) $this->limit = $limit; - } - - /** - * Starts the whole process. The address must either be set here - * or when creating the object. One or the other. - * - * @access public - * @param string $address The address(es) to validate. - * @param string $default_domain Default domain/host etc. - * @param boolean $nest_groups Whether to return the structure with groups nested for easier viewing. - * @param boolean $validate Whether to validate atoms. Turn this off if you need to run addresses through before encoding the personal names, for instance. - * - * @return array A structured array of addresses. - */ - function parseAddressList($address = null, $default_domain = null, $nest_groups = null, $validate = null, $limit = null) - { - if (!isset($this) || !isset($this->mailRFC822)) { - $obj = new Mail_RFC822($address, $default_domain, $nest_groups, $validate, $limit); - return $obj->parseAddressList(); - } - - if (isset($address)) $this->address = $address; - if (isset($default_domain)) $this->default_domain = $default_domain; - if (isset($nest_groups)) $this->nestGroups = $nest_groups; - if (isset($validate)) $this->validate = $validate; - if (isset($limit)) $this->limit = $limit; - - $this->structure = array(); - $this->addresses = array(); - $this->error = null; - $this->index = null; - - // Unfold any long lines in $this->address. - $this->address = preg_replace('/\r?\n/', "\r\n", $this->address); - $this->address = preg_replace('/\r\n(\t| )+/', ' ', $this->address); - - while ($this->address = $this->_splitAddresses($this->address)); - - if ($this->address === false || isset($this->error)) { - require_once 'PEAR/PEAR.php'; - return PEAR::raiseError($this->error); - } - - // Validate each address individually. If we encounter an invalid - // address, stop iterating and return an error immediately. - foreach ($this->addresses as $address) { - $valid = $this->_validateAddress($address); - - if ($valid === false || isset($this->error)) { - require_once 'PEAR/PEAR.php'; - return PEAR::raiseError($this->error); - } - - if (!$this->nestGroups) { - $this->structure = array_merge($this->structure, $valid); - } else { - $this->structure[] = $valid; - } - } - - return $this->structure; - } - - /** - * Splits an address into separate addresses. - * - * @access private - * @param string $address The addresses to split. - * @return boolean Success or failure. - */ - function _splitAddresses($address) - { - if (!empty($this->limit) && count($this->addresses) == $this->limit) { - return ''; - } - - if ($this->_isGroup($address) && !isset($this->error)) { - $split_char = ';'; - $is_group = true; - } elseif (!isset($this->error)) { - $split_char = ','; - $is_group = false; - } elseif (isset($this->error)) { - return false; - } - - // Split the string based on the above ten or so lines. - $parts = explode($split_char, $address); - $string = $this->_splitCheck($parts, $split_char); - - // If a group... - if ($is_group) { - // If $string does not contain a colon outside of - // brackets/quotes etc then something's fubar. - - // First check there's a colon at all: - if (strpos($string, ':') === false) { - $this->error = 'Invalid address: ' . $string; - return false; - } - - // Now check it's outside of brackets/quotes: - if (!$this->_splitCheck(explode(':', $string), ':')) { - return false; - } - - // We must have a group at this point, so increase the counter: - $this->num_groups++; - } - - // $string now contains the first full address/group. - // Add to the addresses array. - $this->addresses[] = array( - 'address' => trim($string), - 'group' => $is_group - ); - - // Remove the now stored address from the initial line, the +1 - // is to account for the explode character. - $address = trim(substr($address, strlen($string) + 1)); - - // If the next char is a comma and this was a group, then - // there are more addresses, otherwise, if there are any more - // chars, then there is another address. - if ($is_group && substr($address, 0, 1) == ','){ - $address = trim(substr($address, 1)); - return $address; - - } elseif (strlen($address) > 0) { - return $address; - - } else { - return ''; - } - - // If you got here then something's off - return false; - } - - /** - * Checks for a group at the start of the string. - * - * @access private - * @param string $address The address to check. - * @return boolean Whether or not there is a group at the start of the string. - */ - function _isGroup($address) - { - // First comma not in quotes, angles or escaped: - $parts = explode(',', $address); - $string = $this->_splitCheck($parts, ','); - - // Now we have the first address, we can reliably check for a - // group by searching for a colon that's not escaped or in - // quotes or angle brackets. - if (count($parts = explode(':', $string)) > 1) { - $string2 = $this->_splitCheck($parts, ':'); - return ($string2 !== $string); - } else { - return false; - } - } - - /** - * A common function that will check an exploded string. - * - * @access private - * @param array $parts The exloded string. - * @param string $char The char that was exploded on. - * @return mixed False if the string contains unclosed quotes/brackets, or the string on success. - */ - function _splitCheck($parts, $char) - { - $string = $parts[0]; - - for ($i = 0; $i < count($parts); $i++) { - if ($this->_hasUnclosedQuotes($string) - || $this->_hasUnclosedBrackets($string, '<>') - || $this->_hasUnclosedBrackets($string, '[]') - || $this->_hasUnclosedBrackets($string, '()') - || substr($string, -1) == '\\') { - if (isset($parts[$i + 1])) { - $string = $string . $char . $parts[$i + 1]; - } else { - $this->error = 'Invalid address spec. Unclosed bracket or quotes'; - return false; - } - } else { - $this->index = $i; - break; - } - } - - return $string; - } - - /** - * Checks if a string has unclosed quotes or not. - * - * @access private - * @param string $string The string to check. - * @return boolean True if there are unclosed quotes inside the string, - * false otherwise. - */ - function _hasUnclosedQuotes($string) - { - $string = trim($string); - $iMax = strlen($string); - $in_quote = false; - $i = $slashes = 0; - - for (; $i < $iMax; ++$i) { - switch ($string[$i]) { - case '\\': - ++$slashes; - break; - - case '"': - if ($slashes % 2 == 0) { - $in_quote = !$in_quote; - } - // Fall through to default action below. - - default: - $slashes = 0; - break; - } - } - - return $in_quote; - } - - /** - * Checks if a string has an unclosed brackets or not. IMPORTANT: - * This function handles both angle brackets and square brackets; - * - * @access private - * @param string $string The string to check. - * @param string $chars The characters to check for. - * @return boolean True if there are unclosed brackets inside the string, false otherwise. - */ - function _hasUnclosedBrackets($string, $chars) - { - $num_angle_start = substr_count($string, $chars[0]); - $num_angle_end = substr_count($string, $chars[1]); - - $this->_hasUnclosedBracketsSub($string, $num_angle_start, $chars[0]); - $this->_hasUnclosedBracketsSub($string, $num_angle_end, $chars[1]); - - if ($num_angle_start < $num_angle_end) { - $this->error = 'Invalid address spec. Unmatched quote or bracket (' . $chars . ')'; - return false; - } else { - return ($num_angle_start > $num_angle_end); - } - } - - /** - * Sub function that is used only by hasUnclosedBrackets(). - * - * @access private - * @param string $string The string to check. - * @param integer &$num The number of occurences. - * @param string $char The character to count. - * @return integer The number of occurences of $char in $string, adjusted for backslashes. - */ - function _hasUnclosedBracketsSub($string, &$num, $char) - { - $parts = explode($char, $string); - for ($i = 0; $i < count($parts); $i++){ - if (substr($parts[$i], -1) == '\\' || $this->_hasUnclosedQuotes($parts[$i])) - $num--; - if (isset($parts[$i + 1])) - $parts[$i + 1] = $parts[$i] . $char . $parts[$i + 1]; - } - - return $num; - } - - /** - * Function to begin checking the address. - * - * @access private - * @param string $address The address to validate. - * @return mixed False on failure, or a structured array of address information on success. - */ - function _validateAddress($address) - { - $is_group = false; - $addresses = array(); - - if ($address['group']) { - $is_group = true; - - // Get the group part of the name - $parts = explode(':', $address['address']); - $groupname = $this->_splitCheck($parts, ':'); - $structure = array(); - - // And validate the group part of the name. - if (!$this->_validatePhrase($groupname)){ - $this->error = 'Group name did not validate.'; - return false; - } else { - // Don't include groups if we are not nesting - // them. This avoids returning invalid addresses. - if ($this->nestGroups) { - $structure = new stdClass; - $structure->groupname = $groupname; - } - } - - $address['address'] = ltrim(substr($address['address'], strlen($groupname . ':'))); - } - - // If a group then split on comma and put into an array. - // Otherwise, Just put the whole address in an array. - if ($is_group) { - while (strlen($address['address']) > 0) { - $parts = explode(',', $address['address']); - $addresses[] = $this->_splitCheck($parts, ','); - $address['address'] = trim(substr($address['address'], strlen(end($addresses) . ','))); - } - } else { - $addresses[] = $address['address']; - } - - // Check that $addresses is set, if address like this: - // Groupname:; - // Then errors were appearing. - if (!count($addresses)){ - $this->error = 'Empty group.'; - return false; - } - - // Trim the whitespace from all of the address strings. - array_map('trim', $addresses); - - // Validate each mailbox. - // Format could be one of: name <geezer@domain.com> - // geezer@domain.com - // geezer - // ... or any other format valid by RFC 822. - for ($i = 0; $i < count($addresses); $i++) { - if (!$this->validateMailbox($addresses[$i])) { - if (empty($this->error)) { - $this->error = 'Validation failed for: ' . $addresses[$i]; - } - return false; - } - } - - // Nested format - if ($this->nestGroups) { - if ($is_group) { - $structure->addresses = $addresses; - } else { - $structure = $addresses[0]; - } - - // Flat format - } else { - if ($is_group) { - $structure = array_merge($structure, $addresses); - } else { - $structure = $addresses; - } - } - - return $structure; - } - - /** - * Function to validate a phrase. - * - * @access private - * @param string $phrase The phrase to check. - * @return boolean Success or failure. - */ - function _validatePhrase($phrase) - { - // Splits on one or more Tab or space. - $parts = preg_split('/[ \\x09]+/', $phrase, -1, PREG_SPLIT_NO_EMPTY); - - $phrase_parts = array(); - while (count($parts) > 0){ - $phrase_parts[] = $this->_splitCheck($parts, ' '); - for ($i = 0; $i < $this->index + 1; $i++) - array_shift($parts); - } - - foreach ($phrase_parts as $part) { - // If quoted string: - if (substr($part, 0, 1) == '"') { - if (!$this->_validateQuotedString($part)) { - return false; - } - continue; - } - - // Otherwise it's an atom: - if (!$this->_validateAtom($part)) return false; - } - - return true; - } - - /** - * Function to validate an atom which from rfc822 is: - * atom = 1*<any CHAR except specials, SPACE and CTLs> - * - * If validation ($this->validate) has been turned off, then - * validateAtom() doesn't actually check anything. This is so that you - * can split a list of addresses up before encoding personal names - * (umlauts, etc.), for example. - * - * @access private - * @param string $atom The string to check. - * @return boolean Success or failure. - */ - function _validateAtom($atom) - { - if (!$this->validate) { - // Validation has been turned off; assume the atom is okay. - return true; - } - - // Check for any char from ASCII 0 - ASCII 127 - if (!preg_match('/^[\\x00-\\x7E]+$/i', $atom, $matches)) { - return false; - } - - // Check for specials: - if (preg_match('/[][()<>@,;\\:" ]/', $atom)) { - return false; - } - - // Check for control characters (ASCII 0-31): - if (preg_match('/[\\x00-\\x1F]+/', $atom)) { - return false; - } - - return true; - } - - /** - * Function to validate quoted string, which is: - * quoted-string = <"> *(qtext/quoted-pair) <"> - * - * @access private - * @param string $qstring The string to check - * @return boolean Success or failure. - */ - function _validateQuotedString($qstring) - { - // Leading and trailing " - $qstring = substr($qstring, 1, -1); - - // Perform check, removing quoted characters first. - return !preg_match('/[\x0D\\\\"]/', preg_replace('/\\\\./', '', $qstring)); - } - - /** - * Function to validate a mailbox, which is: - * mailbox = addr-spec ; simple address - * / phrase route-addr ; name and route-addr - * - * @access public - * @param string &$mailbox The string to check. - * @return boolean Success or failure. - */ - function validateMailbox(&$mailbox) - { - // A couple of defaults. - $phrase = ''; - $comment = ''; - $comments = array(); - - // Catch any RFC822 comments and store them separately. - $_mailbox = $mailbox; - while (strlen(trim($_mailbox)) > 0) { - $parts = explode('(', $_mailbox); - $before_comment = $this->_splitCheck($parts, '('); - if ($before_comment != $_mailbox) { - // First char should be a (. - $comment = substr(str_replace($before_comment, '', $_mailbox), 1); - $parts = explode(')', $comment); - $comment = $this->_splitCheck($parts, ')'); - $comments[] = $comment; - - // +1 is for the trailing ) - $_mailbox = substr($_mailbox, strpos($_mailbox, $comment)+strlen($comment)+1); - } else { - break; - } - } - - foreach ($comments as $comment) { - $mailbox = str_replace("($comment)", '', $mailbox); - } - - $mailbox = trim($mailbox); - - // Check for name + route-addr - if (substr($mailbox, -1) == '>' && substr($mailbox, 0, 1) != '<') { - $parts = explode('<', $mailbox); - $name = $this->_splitCheck($parts, '<'); - - $phrase = trim($name); - $route_addr = trim(substr($mailbox, strlen($name.'<'), -1)); - - if ($this->_validatePhrase($phrase) === false || ($route_addr = $this->_validateRouteAddr($route_addr)) === false) { - return false; - } - - // Only got addr-spec - } else { - // First snip angle brackets if present. - if (substr($mailbox, 0, 1) == '<' && substr($mailbox, -1) == '>') { - $addr_spec = substr($mailbox, 1, -1); - } else { - $addr_spec = $mailbox; - } - - if (($addr_spec = $this->_validateAddrSpec($addr_spec)) === false) { - return false; - } - } - - // Construct the object that will be returned. - $mbox = new stdClass(); - - // Add the phrase (even if empty) and comments - $mbox->personal = $phrase; - $mbox->comment = isset($comments) ? $comments : array(); - - if (isset($route_addr)) { - $mbox->mailbox = $route_addr['local_part']; - $mbox->host = $route_addr['domain']; - $route_addr['adl'] !== '' ? $mbox->adl = $route_addr['adl'] : ''; - } else { - $mbox->mailbox = $addr_spec['local_part']; - $mbox->host = $addr_spec['domain']; - } - - $mailbox = $mbox; - return true; - } - - /** - * This function validates a route-addr which is: - * route-addr = "<" [route] addr-spec ">" - * - * Angle brackets have already been removed at the point of - * getting to this function. - * - * @access private - * @param string $route_addr The string to check. - * @return mixed False on failure, or an array containing validated address/route information on success. - */ - function _validateRouteAddr($route_addr) - { - // Check for colon. - if (strpos($route_addr, ':') !== false) { - $parts = explode(':', $route_addr); - $route = $this->_splitCheck($parts, ':'); - } else { - $route = $route_addr; - } - - // If $route is same as $route_addr then the colon was in - // quotes or brackets or, of course, non existent. - if ($route === $route_addr){ - unset($route); - $addr_spec = $route_addr; - if (($addr_spec = $this->_validateAddrSpec($addr_spec)) === false) { - return false; - } - } else { - // Validate route part. - if (($route = $this->_validateRoute($route)) === false) { - return false; - } - - $addr_spec = substr($route_addr, strlen($route . ':')); - - // Validate addr-spec part. - if (($addr_spec = $this->_validateAddrSpec($addr_spec)) === false) { - return false; - } - } - - if (isset($route)) { - $return['adl'] = $route; - } else { - $return['adl'] = ''; - } - - $return = array_merge($return, $addr_spec); - return $return; - } - - /** - * Function to validate a route, which is: - * route = 1#("@" domain) ":" - * - * @access private - * @param string $route The string to check. - * @return mixed False on failure, or the validated $route on success. - */ - function _validateRoute($route) - { - // Split on comma. - $domains = explode(',', trim($route)); - - foreach ($domains as $domain) { - $domain = str_replace('@', '', trim($domain)); - if (!$this->_validateDomain($domain)) return false; - } - - return $route; - } - - /** - * Function to validate a domain, though this is not quite what - * you expect of a strict internet domain. - * - * domain = sub-domain *("." sub-domain) - * - * @access private - * @param string $domain The string to check. - * @return mixed False on failure, or the validated domain on success. - */ - function _validateDomain($domain) - { - // Note the different use of $subdomains and $sub_domains - $subdomains = explode('.', $domain); - - while (count($subdomains) > 0) { - $sub_domains[] = $this->_splitCheck($subdomains, '.'); - for ($i = 0; $i < $this->index + 1; $i++) - array_shift($subdomains); - } - - foreach ($sub_domains as $sub_domain) { - if (!$this->_validateSubdomain(trim($sub_domain))) - return false; - } - - // Managed to get here, so return input. - return $domain; - } - - /** - * Function to validate a subdomain: - * subdomain = domain-ref / domain-literal - * - * @access private - * @param string $subdomain The string to check. - * @return boolean Success or failure. - */ - function _validateSubdomain($subdomain) - { - if (preg_match('|^\[(.*)]$|', $subdomain, $arr)){ - if (!$this->_validateDliteral($arr[1])) return false; - } else { - if (!$this->_validateAtom($subdomain)) return false; - } - - // Got here, so return successful. - return true; - } - - /** - * Function to validate a domain literal: - * domain-literal = "[" *(dtext / quoted-pair) "]" - * - * @access private - * @param string $dliteral The string to check. - * @return boolean Success or failure. - */ - function _validateDliteral($dliteral) - { - return !preg_match('/(.)[][\x0D\\\\]/', $dliteral, $matches) && $matches[1] != '\\'; - } - - /** - * Function to validate an addr-spec. - * - * addr-spec = local-part "@" domain - * - * @access private - * @param string $addr_spec The string to check. - * @return mixed False on failure, or the validated addr-spec on success. - */ - function _validateAddrSpec($addr_spec) - { - $addr_spec = trim($addr_spec); - - // Split on @ sign if there is one. - if (strpos($addr_spec, '@') !== false) { - $parts = explode('@', $addr_spec); - $local_part = $this->_splitCheck($parts, '@'); - $domain = substr($addr_spec, strlen($local_part . '@')); - - // No @ sign so assume the default domain. - } else { - $local_part = $addr_spec; - $domain = $this->default_domain; - } - - if (($local_part = $this->_validateLocalPart($local_part)) === false) return false; - if (($domain = $this->_validateDomain($domain)) === false) return false; - - // Got here so return successful. - return array('local_part' => $local_part, 'domain' => $domain); - } - - /** - * Function to validate the local part of an address: - * local-part = word *("." word) - * - * @access private - * @param string $local_part - * @return mixed False on failure, or the validated local part on success. - */ - function _validateLocalPart($local_part) - { - $parts = explode('.', $local_part); - $words = array(); - - // Split the local_part into words. - while (count($parts) > 0){ - $words[] = $this->_splitCheck($parts, '.'); - for ($i = 0; $i < $this->index + 1; $i++) { - array_shift($parts); - } - } - - // Validate each word. - foreach ($words as $word) { - // If this word contains an unquoted space, it is invalid. (6.2.4) - if (strpos($word, ' ') && $word[0] !== '"') - { - return false; - } - - if ($this->_validatePhrase(trim($word)) === false) return false; - } - - // Managed to get here, so return the input. - return $local_part; - } - - /** - * Returns an approximate count of how many addresses are in the - * given string. This is APPROXIMATE as it only splits based on a - * comma which has no preceding backslash. Could be useful as - * large amounts of addresses will end up producing *large* - * structures when used with parseAddressList(). - * - * @param string $data Addresses to count - * @return int Approximate count - */ - function approximateCount($data) - { - return count(preg_split('/(?<!\\\\),/', $data)); - } - - /** - * This is a email validating function separate to the rest of the - * class. It simply validates whether an email is of the common - * internet form: <user>@<domain>. This can be sufficient for most - * people. Optional stricter mode can be utilised which restricts - * mailbox characters allowed to alphanumeric, full stop, hyphen - * and underscore. - * - * @param string $data Address to check - * @param boolean $strict Optional stricter mode - * @return mixed False if it fails, an indexed array - * username/domain if it matches - */ - function isValidInetAddress($data, $strict = false) - { - $regex = $strict ? '/^([.0-9a-z_+-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})$/i' : '/^([*+!.&#$|\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,})$/i'; - if (preg_match($regex, trim($data), $matches)) { - return array($matches[1], $matches[2]); - } else { - return false; - } - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/Mail/mail.php b/src/vitis/vas/rest/class/PEAR/Mail/mail.php deleted file mode 100755 index b13d695656f5445c348017c7e6f8653e19fd433e..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/mail.php +++ /dev/null @@ -1,143 +0,0 @@ -<?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: mail.php,v 1.20 2007/10/06 17:00:00 chagenbu Exp $ - -/** - * internal PHP-mail() implementation of the PEAR Mail:: interface. - * @package Mail - * @version $Revision: 1.20 $ - */ -class Mail_mail extends Mail { - - /** - * Any arguments to pass to the mail() function. - * @var string - */ - var $_params = ''; - - /** - * Constructor. - * - * Instantiates a new Mail_mail:: object based on the parameters - * passed in. - * - * @param array $params Extra arguments for the mail() function. - */ - function Mail_mail($params = null) - { - // The other mail implementations accept parameters as arrays. - // In the interest of being consistent, explode an array into - // a string of parameter arguments. - if (is_array($params)) { - $this->_params = join(' ', $params); - } else { - $this->_params = $params; - } - - /* Because the mail() function may pass headers as command - * line arguments, we can't guarantee the use of the standard - * "\r\n" separator. Instead, we use the system's native line - * separator. */ - if (defined('PHP_EOL')) { - $this->sep = PHP_EOL; - } else { - $this->sep = (strpos(PHP_OS, 'WIN') === false) ? "\n" : "\r\n"; - } - } - - /** - * Implements Mail_mail::send() function using php's built-in mail() - * command. - * - * @param mixed $recipients Either a comma-seperated list of recipients - * (RFC822 compliant), or an array of recipients, - * each RFC822 valid. This may contain recipients not - * specified in the headers, for Bcc:, resending - * messages, etc. - * - * @param array $headers The array of headers to send with the mail, in an - * associative array, where the array key is the - * header name (ie, 'Subject'), and the array value - * is the header value (ie, 'test'). The header - * produced from those values would be 'Subject: - * test'. - * - * @param string $body The full text of the message body, including any - * Mime parts, etc. - * - * @return mixed Returns true on success, or a PEAR_Error - * containing a descriptive error message on - * failure. - * - * @access public - */ - function send($recipients, $headers, $body) - { - if (!is_array($headers)) { - return PEAR::raiseError('$headers must be an array'); - } - - $result = $this->_sanitizeHeaders($headers); - if (is_a($result, 'PEAR_Error')) { - return $result; - } - - // If we're passed an array of recipients, implode it. - if (is_array($recipients)) { - $recipients = implode(', ', $recipients); - } - - // Get the Subject out of the headers array so that we can - // pass it as a seperate argument to mail(). - $subject = ''; - if (isset($headers['Subject'])) { - $subject = $headers['Subject']; - unset($headers['Subject']); - } - - // Also remove the To: header. The mail() function will add its own - // To: header based on the contents of $recipients. - unset($headers['To']); - - // Flatten the headers out. - $headerElements = $this->prepareHeaders($headers); - if (is_a($headerElements, 'PEAR_Error')) { - return $headerElements; - } - list(, $text_headers) = $headerElements; - - // We only use mail()'s optional fifth parameter if the additional - // parameters have been provided and we're not running in safe mode. - if (empty($this->_params) || ini_get('safe_mode')) { - $result = mail($recipients, $subject, $body, $text_headers); - } else { - $result = mail($recipients, $subject, $body, $text_headers, - $this->_params); - } - - // If the mail() function returned failure, we need to create a - // PEAR_Error object and return it instead of the boolean result. - if ($result === false) { - $result = PEAR::raiseError('mail() returned failure'); - } - - return $result; - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/Mail/mime.php b/src/vitis/vas/rest/class/PEAR/Mail/mime.php deleted file mode 100755 index 30d876f04a55c176375f96a5dd54474aea55a737..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/mime.php +++ /dev/null @@ -1,1495 +0,0 @@ -<?php -/** - * The Mail_Mime class is used to create MIME E-mail messages - * - * The Mail_Mime class provides an OO interface to create MIME - * enabled email messages. This way you can create emails that - * contain plain-text bodies, HTML bodies, attachments, inline - * images and specific headers. - * - * Compatible with PHP versions 4 and 5 - * - * LICENSE: This LICENSE is in the BSD license style. - * Copyright (c) 2002-2003, Richard Heyes <richard@phpguru.org> - * Copyright (c) 2003-2006, PEAR <pear-group@php.net> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - Neither the name of the authors, nor the names of its contributors - * may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - * - * @category Mail - * @package Mail_Mime - * @author Richard Heyes <richard@phpguru.org> - * @author Tomas V.V. Cox <cox@idecnet.com> - * @author Cipriano Groenendal <cipri@php.net> - * @author Sean Coates <sean@php.net> - * @author Aleksander Machniak <alec@php.net> - * @copyright 2003-2006 PEAR <pear-group@php.net> - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version CVS: $Id$ - * @link http://pear.php.net/package/Mail_mime - * - * This class is based on HTML Mime Mail class from - * Richard Heyes <richard@phpguru.org> which was based also - * in the mime_mail.class by Tobias Ratschiller <tobias@dnet.it> - * and Sascha Schumann <sascha@schumann.cx> - */ - - -/** - * require PEAR - * - * This package depends on PEAR to raise errors. - */ -require_once 'PEAR/PEAR.php'; - -/** - * require Mail_mimePart - * - * Mail_mimePart contains the code required to - * create all the different parts a mail can - * consist of. - */ -require_once 'mimePart.php'; - - -/** - * The Mail_Mime class provides an OO interface to create MIME - * enabled email messages. This way you can create emails that - * contain plain-text bodies, HTML bodies, attachments, inline - * images and specific headers. - * - * @category Mail - * @package Mail_Mime - * @author Richard Heyes <richard@phpguru.org> - * @author Tomas V.V. Cox <cox@idecnet.com> - * @author Cipriano Groenendal <cipri@php.net> - * @author Sean Coates <sean@php.net> - * @copyright 2003-2006 PEAR <pear-group@php.net> - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/Mail_mime - */ -class Mail_mime -{ - /** - * Contains the plain text part of the email - * - * @var string - * @access private - */ - var $_txtbody; - - /** - * Contains the html part of the email - * - * @var string - * @access private - */ - var $_htmlbody; - - /** - * list of the attached images - * - * @var array - * @access private - */ - var $_html_images = array(); - - /** - * list of the attachements - * - * @var array - * @access private - */ - var $_parts = array(); - - /** - * Headers for the mail - * - * @var array - * @access private - */ - var $_headers = array(); - - /** - * Build parameters - * - * @var array - * @access private - */ - var $_build_params = array( - // What encoding to use for the headers - // Options: quoted-printable or base64 - 'head_encoding' => 'quoted-printable', - // What encoding to use for plain text - // Options: 7bit, 8bit, base64, or quoted-printable - 'text_encoding' => 'quoted-printable', - // What encoding to use for html - // Options: 7bit, 8bit, base64, or quoted-printable - 'html_encoding' => 'quoted-printable', - // The character set to use for html - 'html_charset' => 'ISO-8859-1', - // The character set to use for text - 'text_charset' => 'ISO-8859-1', - // The character set to use for headers - 'head_charset' => 'ISO-8859-1', - // End-of-line sequence - 'eol' => "\r\n", - // Delay attachment files IO until building the message - 'delay_file_io' => false - ); - - /** - * Constructor function - * - * @param mixed $params Build parameters that change the way the email - * is built. Should be an associative array. - * See $_build_params. - * - * @return void - * @access public - */ - function __construct($params = array()) - { - // Backward-compatible EOL setting - if (is_string($params)) { - $this->_build_params['eol'] = $params; - } else if (defined('MAIL_MIME_CRLF') && !isset($params['eol'])) { - $this->_build_params['eol'] = MAIL_MIME_CRLF; - } - - // Update build parameters - if (!empty($params) && is_array($params)) { - while (list($key, $value) = each($params)) { - $this->_build_params[$key] = $value; - } - } - } - - /** - * Set build parameter value - * - * @param string $name Parameter name - * @param string $value Parameter value - * - * @return void - * @access public - * @since 1.6.0 - */ - function setParam($name, $value) - { - $this->_build_params[$name] = $value; - } - - /** - * Get build parameter value - * - * @param string $name Parameter name - * - * @return mixed Parameter value - * @access public - * @since 1.6.0 - */ - function getParam($name) - { - return isset($this->_build_params[$name]) ? $this->_build_params[$name] : null; - } - - /** - * Accessor function to set the body text. Body text is used if - * it's not an html mail being sent or else is used to fill the - * text/plain part that emails clients who don't support - * html should show. - * - * @param string $data Either a string or - * the file name with the contents - * @param bool $isfile If true the first param should be treated - * as a file name, else as a string (default) - * @param bool $append If true the text or file is appended to - * the existing body, else the old body is - * overwritten - * - * @return mixed True on success or PEAR_Error object - * @access public - */ - function setTXTBody($data, $isfile = false, $append = false) - { - if (!$isfile) { - if (!$append) { - $this->_txtbody = $data; - } else { - $this->_txtbody .= $data; - } - } else { - $cont = $this->_file2str($data); - if ($this->_isError($cont)) { - return $cont; - } - if (!$append) { - $this->_txtbody = $cont; - } else { - $this->_txtbody .= $cont; - } - } - - return true; - } - - /** - * Get message text body - * - * @return string Text body - * @access public - * @since 1.6.0 - */ - function getTXTBody() - { - return $this->_txtbody; - } - - /** - * Adds a html part to the mail. - * - * @param string $data Either a string or the file name with the - * contents - * @param bool $isfile A flag that determines whether $data is a - * filename, or a string(false, default) - * - * @return bool True on success - * @access public - */ - function setHTMLBody($data, $isfile = false) - { - if (!$isfile) { - $this->_htmlbody = $data; - } else { - $cont = $this->_file2str($data); - if ($this->_isError($cont)) { - return $cont; - } - $this->_htmlbody = $cont; - } - - return true; - } - - /** - * Get message HTML body - * - * @return string HTML body - * @access public - * @since 1.6.0 - */ - function getHTMLBody() - { - return $this->_htmlbody; - } - - /** - * Adds an image to the list of embedded images. - * - * @param string $file The image file name OR image data itself - * @param string $c_type The content type - * @param string $name The filename of the image. - * Only used if $file is the image data. - * @param bool $isfile Whether $file is a filename or not. - * Defaults to true - * @param string $content_id Desired Content-ID of MIME part - * Defaults to generated unique ID - * - * @return bool True on success - * @access public - */ - function addHTMLImage($file, - $c_type='application/octet-stream', - $name = '', - $isfile = true, - $content_id = null - ) { - $bodyfile = null; - - if ($isfile) { - // Don't load file into memory - if ($this->_build_params['delay_file_io']) { - $filedata = null; - $bodyfile = $file; - } else { - if ($this->_isError($filedata = $this->_file2str($file))) { - return $filedata; - } - } - $filename = ($name ? $name : $file); - } else { - $filedata = $file; - $filename = $name; - } - - if (!$content_id) { - $content_id = preg_replace('/[^0-9a-zA-Z]/', '', uniqid(time(), true)); - } - - $this->_html_images[] = array( - 'body' => $filedata, - 'body_file' => $bodyfile, - 'name' => $filename, - 'c_type' => $c_type, - 'cid' => $content_id - ); - - return true; - } - - /** - * Adds a file to the list of attachments. - * - * @param string $file The file name of the file to attach - * or the file contents itself - * @param string $c_type The content type - * @param string $name The filename of the attachment - * Only use if $file is the contents - * @param bool $isfile Whether $file is a filename or not. Defaults to true - * @param string $encoding The type of encoding to use. Defaults to base64. - * Possible values: 7bit, 8bit, base64 or quoted-printable. - * @param string $disposition The content-disposition of this file - * Defaults to attachment. - * Possible values: attachment, inline. - * @param string $charset The character set of attachment's content. - * @param string $language The language of the attachment - * @param string $location The RFC 2557.4 location of the attachment - * @param string $n_encoding Encoding of the attachment's name in Content-Type - * By default filenames are encoded using RFC2231 method - * Here you can set RFC2047 encoding (quoted-printable - * or base64) instead - * @param string $f_encoding Encoding of the attachment's filename - * in Content-Disposition header. - * @param string $description Content-Description header - * @param string $h_charset The character set of the headers e.g. filename - * If not specified, $charset will be used - * @param array $add_headers Additional part headers. Array keys can be in form - * of <header_name>:<parameter_name> - * - * @return mixed True on success or PEAR_Error object - * @access public - */ - function addAttachment($file, - $c_type = 'application/octet-stream', - $name = '', - $isfile = true, - $encoding = 'base64', - $disposition = 'attachment', - $charset = '', - $language = '', - $location = '', - $n_encoding = null, - $f_encoding = null, - $description = '', - $h_charset = null, - $add_headers = array() - ) { - $bodyfile = null; - - if ($isfile) { - // Don't load file into memory - if ($this->_build_params['delay_file_io']) { - $filedata = null; - $bodyfile = $file; - } else { - if ($this->_isError($filedata = $this->_file2str($file))) { - return $filedata; - } - } - // Force the name the user supplied, otherwise use $file - $filename = ($name ? $name : $this->_basename($file)); - } else { - $filedata = $file; - $filename = $name; - } - - if (!strlen($filename)) { - $msg = "The supplied filename for the attachment can't be empty"; - return $this->_raiseError($msg); - } - - $this->_parts[] = array( - 'body' => $filedata, - 'body_file' => $bodyfile, - 'name' => $filename, - 'c_type' => $c_type, - 'charset' => $charset, - 'encoding' => $encoding, - 'language' => $language, - 'location' => $location, - 'disposition' => $disposition, - 'description' => $description, - 'add_headers' => $add_headers, - 'name_encoding' => $n_encoding, - 'filename_encoding' => $f_encoding, - 'headers_charset' => $h_charset, - ); - - return true; - } - - /** - * Get the contents of the given file name as string - * - * @param string $file_name Path of file to process - * - * @return string Contents of $file_name - * @access private - */ - function _file2str($file_name) - { - // Check state of file and raise an error properly - if (!file_exists($file_name)) { - return $this->_raiseError('File not found: ' . $file_name); - } - if (!is_file($file_name)) { - return $this->_raiseError('Not a regular file: ' . $file_name); - } - if (!is_readable($file_name)) { - return $this->_raiseError('File is not readable: ' . $file_name); - } - - // Temporarily reset magic_quotes_runtime and read file contents - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); - } - $cont = file_get_contents($file_name); - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); - } - - return $cont; - } - - /** - * Adds a text subpart to the mimePart object and - * returns it during the build process. - * - * @param mixed &$obj The object to add the part to, or - * null if a new object is to be created. - * @param string $text The text to add. - * - * @return object The text mimePart object - * @access private - */ - function &_addTextPart(&$obj = null, $text = '') - { - $params['content_type'] = 'text/plain'; - $params['encoding'] = $this->_build_params['text_encoding']; - $params['charset'] = $this->_build_params['text_charset']; - $params['eol'] = $this->_build_params['eol']; - - if (is_object($obj)) { - $ret = $obj->addSubpart($text, $params); - } else { - $ret = new Mail_mimePart($text, $params); - } - - return $ret; - } - - /** - * Adds a html subpart to the mimePart object and - * returns it during the build process. - * - * @param mixed &$obj The object to add the part to, or - * null if a new object is to be created. - * - * @return object The html mimePart object - * @access private - */ - function &_addHtmlPart(&$obj = null) - { - $params['content_type'] = 'text/html'; - $params['encoding'] = $this->_build_params['html_encoding']; - $params['charset'] = $this->_build_params['html_charset']; - $params['eol'] = $this->_build_params['eol']; - - if (is_object($obj)) { - $ret = $obj->addSubpart($this->_htmlbody, $params); - } else { - $ret = new Mail_mimePart($this->_htmlbody, $params); - } - - return $ret; - } - - /** - * Creates a new mimePart object, using multipart/mixed as - * the initial content-type and returns it during the - * build process. - * - * @return object The multipart/mixed mimePart object - * @access private - */ - function &_addMixedPart() - { - $params['content_type'] = 'multipart/mixed'; - $params['eol'] = $this->_build_params['eol']; - - // Create empty multipart/mixed Mail_mimePart object to return - $ret = new Mail_mimePart('', $params); - return $ret; - } - - /** - * Adds a multipart/alternative part to a mimePart - * object (or creates one), and returns it during - * the build process. - * - * @param mixed &$obj The object to add the part to, or - * null if a new object is to be created. - * - * @return object The multipart/mixed mimePart object - * @access private - */ - function &_addAlternativePart(&$obj = null) - { - $params['content_type'] = 'multipart/alternative'; - $params['eol'] = $this->_build_params['eol']; - - if (is_object($obj)) { - $ret = $obj->addSubpart('', $params); - } else { - $ret = new Mail_mimePart('', $params); - } - - return $ret; - } - - /** - * Adds a multipart/related part to a mimePart - * object (or creates one), and returns it during - * the build process. - * - * @param mixed &$obj The object to add the part to, or - * null if a new object is to be created - * - * @return object The multipart/mixed mimePart object - * @access private - */ - function &_addRelatedPart(&$obj = null) - { - $params['content_type'] = 'multipart/related'; - $params['eol'] = $this->_build_params['eol']; - - if (is_object($obj)) { - $ret = $obj->addSubpart('', $params); - } else { - $ret = new Mail_mimePart('', $params); - } - - return $ret; - } - - /** - * Adds an html image subpart to a mimePart object - * and returns it during the build process. - * - * @param object &$obj The mimePart to add the image to - * @param array $value The image information - * - * @return object The image mimePart object - * @access private - */ - function &_addHtmlImagePart(&$obj, $value) - { - $params['content_type'] = $value['c_type']; - $params['encoding'] = 'base64'; - $params['disposition'] = 'inline'; - $params['filename'] = $value['name']; - $params['cid'] = $value['cid']; - $params['body_file'] = $value['body_file']; - $params['eol'] = $this->_build_params['eol']; - - if (!empty($value['name_encoding'])) { - $params['name_encoding'] = $value['name_encoding']; - } - if (!empty($value['filename_encoding'])) { - $params['filename_encoding'] = $value['filename_encoding']; - } - - $ret = $obj->addSubpart($value['body'], $params); - return $ret; - } - - /** - * Adds an attachment subpart to a mimePart object - * and returns it during the build process. - * - * @param object &$obj The mimePart to add the image to - * @param array $value The attachment information - * - * @return object The image mimePart object - * @access private - */ - function &_addAttachmentPart(&$obj, $value) - { - $params['eol'] = $this->_build_params['eol']; - $params['filename'] = $value['name']; - $params['encoding'] = $value['encoding']; - $params['content_type'] = $value['c_type']; - $params['body_file'] = $value['body_file']; - $params['disposition'] = isset($value['disposition']) ? - $value['disposition'] : 'attachment'; - - // content charset - if (!empty($value['charset'])) { - $params['charset'] = $value['charset']; - } - // headers charset (filename, description) - if (!empty($value['headers_charset'])) { - $params['headers_charset'] = $value['headers_charset']; - } - if (!empty($value['language'])) { - $params['language'] = $value['language']; - } - if (!empty($value['location'])) { - $params['location'] = $value['location']; - } - if (!empty($value['name_encoding'])) { - $params['name_encoding'] = $value['name_encoding']; - } - if (!empty($value['filename_encoding'])) { - $params['filename_encoding'] = $value['filename_encoding']; - } - if (!empty($value['description'])) { - $params['description'] = $value['description']; - } - if (is_array($value['add_headers'])) { - $params['headers'] = $value['add_headers']; - } - - $ret = $obj->addSubpart($value['body'], $params); - return $ret; - } - - /** - * Returns the complete e-mail, ready to send using an alternative - * mail delivery method. Note that only the mailpart that is made - * with Mail_Mime is created. This means that, - * YOU WILL HAVE NO TO: HEADERS UNLESS YOU SET IT YOURSELF - * using the $headers parameter! - * - * @param string $separation The separation between these two parts. - * @param array $params The Build parameters passed to the - * get() function. See get() for more info. - * @param array $headers The extra headers that should be passed - * to the headers() method. - * See that function for more info. - * @param bool $overwrite Overwrite the existing headers with new. - * - * @return mixed The complete e-mail or PEAR error object - * @access public - */ - function getMessage($separation = null, $params = null, $headers = null, - $overwrite = false - ) { - if ($separation === null) { - $separation = $this->_build_params['eol']; - } - - $body = $this->get($params); - - if ($this->_isError($body)) { - return $body; - } - - return $this->txtHeaders($headers, $overwrite) . $separation . $body; - } - - /** - * Returns the complete e-mail body, ready to send using an alternative - * mail delivery method. - * - * @param array $params The Build parameters passed to the - * get() method. See get() for more info. - * - * @return mixed The e-mail body or PEAR error object - * @access public - * @since 1.6.0 - */ - function getMessageBody($params = null) - { - return $this->get($params, null, true); - } - - /** - * Writes (appends) the complete e-mail into file. - * - * @param string $filename Output file location - * @param array $params The Build parameters passed to the - * get() method. See get() for more info. - * @param array $headers The extra headers that should be passed - * to the headers() function. - * See that function for more info. - * @param bool $overwrite Overwrite the existing headers with new. - * - * @return mixed True or PEAR error object - * @access public - * @since 1.6.0 - */ - function saveMessage($filename, $params = null, $headers = null, $overwrite = false) - { - // Check state of file and raise an error properly - if (file_exists($filename) && !is_writable($filename)) { - return $this->_raiseError('File is not writable: ' . $filename); - } - - // Temporarily reset magic_quotes_runtime and read file contents - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); - } - - if (!($fh = fopen($filename, 'ab'))) { - return $this->_raiseError('Unable to open file: ' . $filename); - } - - // Write message headers into file (skipping Content-* headers) - $head = $this->txtHeaders($headers, $overwrite, true); - if (fwrite($fh, $head) === false) { - return $this->_raiseError('Error writing to file: ' . $filename); - } - - fclose($fh); - - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); - } - - // Write the rest of the message into file - $res = $this->get($params, $filename); - - return $res ? $res : true; - } - - /** - * Writes (appends) the complete e-mail body into file. - * - * @param string $filename Output file location - * @param array $params The Build parameters passed to the - * get() method. See get() for more info. - * - * @return mixed True or PEAR error object - * @access public - * @since 1.6.0 - */ - function saveMessageBody($filename, $params = null) - { - // Check state of file and raise an error properly - if (file_exists($filename) && !is_writable($filename)) { - return $this->_raiseError('File is not writable: ' . $filename); - } - - // Temporarily reset magic_quotes_runtime and read file contents - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); - } - - if (!($fh = fopen($filename, 'ab'))) { - return $this->_raiseError('Unable to open file: ' . $filename); - } - - // Write the rest of the message into file - $res = $this->get($params, $filename, true); - - return $res ? $res : true; - } - - /** - * Builds the multipart message from the list ($this->_parts) and - * returns the mime content. - * - * @param array $params Build parameters that change the way the email - * is built. Should be associative. See $_build_params. - * @param resource $filename Output file where to save the message instead of - * returning it - * @param boolean $skip_head True if you want to return/save only the message - * without headers - * - * @return mixed The MIME message content string, null or PEAR error object - * @access public - */ - function get($params = null, $filename = null, $skip_head = false) - { - if (isset($params)) { - while (list($key, $value) = each($params)) { - $this->_build_params[$key] = $value; - } - } - - if (isset($this->_headers['From'])) { - // Bug #11381: Illegal characters in domain ID - if (preg_match('#(@[0-9a-zA-Z\-\.]+)#', $this->_headers['From'], $matches)) { - $domainID = $matches[1]; - } else { - $domainID = '@localhost'; - } - foreach ($this->_html_images as $i => $img) { - $cid = $this->_html_images[$i]['cid']; - if (!preg_match('#'.preg_quote($domainID).'$#', $cid)) { - $this->_html_images[$i]['cid'] = $cid . $domainID; - } - } - } - - if (count($this->_html_images) && isset($this->_htmlbody)) { - foreach ($this->_html_images as $key => $value) { - $regex = array(); - $regex[] = '#(\s)((?i)src|background|href(?-i))\s*=\s*(["\']?)' . - preg_quote($value['name'], '#') . '\3#'; - $regex[] = '#(?i)url(?-i)\(\s*(["\']?)' . - preg_quote($value['name'], '#') . '\1\s*\)#'; - - $rep = array(); - $rep[] = '\1\2=\3cid:' . $value['cid'] .'\3'; - $rep[] = 'url(\1cid:' . $value['cid'] . '\1)'; - - $this->_htmlbody = preg_replace($regex, $rep, $this->_htmlbody); - $this->_html_images[$key]['name'] - = $this->_basename($this->_html_images[$key]['name']); - } - } - - $this->_checkParams(); - - $null = null; - $attachments = count($this->_parts) ? true : false; - $html_images = count($this->_html_images) ? true : false; - $html = strlen($this->_htmlbody) ? true : false; - $text = (!$html && strlen($this->_txtbody)) ? true : false; - - switch (true) { - case $text && !$attachments: - $message =& $this->_addTextPart($null, $this->_txtbody); - break; - - case !$text && !$html && $attachments: - $message =& $this->_addMixedPart(); - for ($i = 0; $i < count($this->_parts); $i++) { - $this->_addAttachmentPart($message, $this->_parts[$i]); - } - break; - - case $text && $attachments: - $message =& $this->_addMixedPart(); - $this->_addTextPart($message, $this->_txtbody); - for ($i = 0; $i < count($this->_parts); $i++) { - $this->_addAttachmentPart($message, $this->_parts[$i]); - } - break; - - case $html && !$attachments && !$html_images: - if (isset($this->_txtbody)) { - $message =& $this->_addAlternativePart($null); - $this->_addTextPart($message, $this->_txtbody); - $this->_addHtmlPart($message); - } else { - $message =& $this->_addHtmlPart($null); - } - break; - - case $html && !$attachments && $html_images: - // * Content-Type: multipart/alternative; - // * text - // * Content-Type: multipart/related; - // * html - // * image... - if (isset($this->_txtbody)) { - $message =& $this->_addAlternativePart($null); - $this->_addTextPart($message, $this->_txtbody); - - $ht =& $this->_addRelatedPart($message); - $this->_addHtmlPart($ht); - for ($i = 0; $i < count($this->_html_images); $i++) { - $this->_addHtmlImagePart($ht, $this->_html_images[$i]); - } - } else { - // * Content-Type: multipart/related; - // * html - // * image... - $message =& $this->_addRelatedPart($null); - $this->_addHtmlPart($message); - for ($i = 0; $i < count($this->_html_images); $i++) { - $this->_addHtmlImagePart($message, $this->_html_images[$i]); - } - } - /* - // #13444, #9725: the code below was a non-RFC compliant hack - // * Content-Type: multipart/related; - // * Content-Type: multipart/alternative; - // * text - // * html - // * image... - $message =& $this->_addRelatedPart($null); - if (isset($this->_txtbody)) { - $alt =& $this->_addAlternativePart($message); - $this->_addTextPart($alt, $this->_txtbody); - $this->_addHtmlPart($alt); - } else { - $this->_addHtmlPart($message); - } - for ($i = 0; $i < count($this->_html_images); $i++) { - $this->_addHtmlImagePart($message, $this->_html_images[$i]); - } - */ - break; - - case $html && $attachments && !$html_images: - $message =& $this->_addMixedPart(); - if (isset($this->_txtbody)) { - $alt =& $this->_addAlternativePart($message); - $this->_addTextPart($alt, $this->_txtbody); - $this->_addHtmlPart($alt); - } else { - $this->_addHtmlPart($message); - } - for ($i = 0; $i < count($this->_parts); $i++) { - $this->_addAttachmentPart($message, $this->_parts[$i]); - } - break; - - case $html && $attachments && $html_images: - $message =& $this->_addMixedPart(); - if (isset($this->_txtbody)) { - $alt =& $this->_addAlternativePart($message); - $this->_addTextPart($alt, $this->_txtbody); - $rel =& $this->_addRelatedPart($alt); - } else { - $rel =& $this->_addRelatedPart($message); - } - $this->_addHtmlPart($rel); - for ($i = 0; $i < count($this->_html_images); $i++) { - $this->_addHtmlImagePart($rel, $this->_html_images[$i]); - } - for ($i = 0; $i < count($this->_parts); $i++) { - $this->_addAttachmentPart($message, $this->_parts[$i]); - } - break; - - } - - if (!isset($message)) { - return null; - } - - // Use saved boundary - if (!empty($this->_build_params['boundary'])) { - $boundary = $this->_build_params['boundary']; - } else { - $boundary = null; - } - - // Write output to file - if ($filename) { - // Append mimePart message headers and body into file - $headers = $message->encodeToFile($filename, $boundary, $skip_head); - if ($this->_isError($headers)) { - return $headers; - } - $this->_headers = array_merge($this->_headers, $headers); - return null; - } else { - $output = $message->encode($boundary, $skip_head); - if ($this->_isError($output)) { - return $output; - } - $this->_headers = array_merge($this->_headers, $output['headers']); - return $output['body']; - } - } - - /** - * Returns an array with the headers needed to prepend to the email - * (MIME-Version and Content-Type). Format of argument is: - * $array['header-name'] = 'header-value'; - * - * @param array $xtra_headers Assoc array with any extra headers (optional) - * (Don't set Content-Type for multipart messages here!) - * @param bool $overwrite Overwrite already existing headers. - * @param bool $skip_content Don't return content headers: Content-Type, - * Content-Disposition and Content-Transfer-Encoding - * - * @return array Assoc array with the mime headers - * @access public - */ - function headers($xtra_headers = null, $overwrite = false, $skip_content = false) - { - // Add mime version header - $headers['MIME-Version'] = '1.0'; - - // Content-Type and Content-Transfer-Encoding headers should already - // be present if get() was called, but we'll re-set them to make sure - // we got them when called before get() or something in the message - // has been changed after get() [#14780] - if (!$skip_content) { - $headers += $this->_contentHeaders(); - } - - if (!empty($xtra_headers)) { - $headers = array_merge($headers, $xtra_headers); - } - - if ($overwrite) { - $this->_headers = array_merge($this->_headers, $headers); - } else { - $this->_headers = array_merge($headers, $this->_headers); - } - - $headers = $this->_headers; - - if ($skip_content) { - unset($headers['Content-Type']); - unset($headers['Content-Transfer-Encoding']); - unset($headers['Content-Disposition']); - } else if (!empty($this->_build_params['ctype'])) { - $headers['Content-Type'] = $this->_build_params['ctype']; - } - - $encodedHeaders = $this->_encodeHeaders($headers); - return $encodedHeaders; - } - - /** - * Get the text version of the headers - * (usefull if you want to use the PHP mail() function) - * - * @param array $xtra_headers Assoc array with any extra headers (optional) - * (Don't set Content-Type for multipart messages here!) - * @param bool $overwrite Overwrite the existing headers with new. - * @param bool $skip_content Don't return content headers: Content-Type, - * Content-Disposition and Content-Transfer-Encoding - * - * @return string Plain text headers - * @access public - */ - function txtHeaders($xtra_headers = null, $overwrite = false, $skip_content = false) - { - $headers = $this->headers($xtra_headers, $overwrite, $skip_content); - - // Place Received: headers at the beginning of the message - // Spam detectors often flag messages with it after the Subject: as spam - if (isset($headers['Received'])) { - $received = $headers['Received']; - unset($headers['Received']); - $headers = array('Received' => $received) + $headers; - } - - $ret = ''; - $eol = $this->_build_params['eol']; - - foreach ($headers as $key => $val) { - if (is_array($val)) { - foreach ($val as $value) { - $ret .= "$key: $value" . $eol; - } - } else { - $ret .= "$key: $val" . $eol; - } - } - - return $ret; - } - - /** - * Sets message Content-Type header. - * Use it to build messages with various content-types e.g. miltipart/raport - * not supported by _contentHeaders() function. - * - * @param string $type Type name - * @param array $params Hash array of header parameters - * - * @return void - * @access public - * @since 1.7.0 - */ - function setContentType($type, $params = array()) - { - $header = $type; - - $eol = !empty($this->_build_params['eol']) - ? $this->_build_params['eol'] : "\r\n"; - - // add parameters - $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D' - . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#'; - if (is_array($params)) { - foreach ($params as $name => $value) { - if ($name == 'boundary') { - $this->_build_params['boundary'] = $value; - } - if (!preg_match($token_regexp, $value)) { - $header .= ";$eol $name=$value"; - } else { - $value = addcslashes($value, '\\"'); - $header .= ";$eol $name=\"$value\""; - } - } - } - - // add required boundary parameter if not defined - if (preg_match('/^multipart\//i', $type)) { - if (empty($this->_build_params['boundary'])) { - $this->_build_params['boundary'] = '=_' . md5(rand() . microtime()); - } - - $header .= ";$eol boundary=\"".$this->_build_params['boundary']."\""; - } - - $this->_build_params['ctype'] = $header; - } - - /** - * Sets the Subject header - * - * @param string $subject String to set the subject to. - * - * @return void - * @access public - */ - function setSubject($subject) - { - $this->_headers['Subject'] = $subject; - } - - /** - * Set an email to the From (the sender) header - * - * @param string $email The email address to use - * - * @return void - * @access public - */ - function setFrom($email) - { - $this->_headers['From'] = $email; - } - - /** - * Add an email to the To header - * (multiple calls to this method are allowed) - * - * @param string $email The email direction to add - * - * @return void - * @access public - */ - function addTo($email) - { - if (isset($this->_headers['To'])) { - $this->_headers['To'] .= ", $email"; - } else { - $this->_headers['To'] = $email; - } - } - - /** - * Add an email to the Cc (carbon copy) header - * (multiple calls to this method are allowed) - * - * @param string $email The email direction to add - * - * @return void - * @access public - */ - function addCc($email) - { - if (isset($this->_headers['Cc'])) { - $this->_headers['Cc'] .= ", $email"; - } else { - $this->_headers['Cc'] = $email; - } - } - - /** - * Add an email to the Bcc (blank carbon copy) header - * (multiple calls to this method are allowed) - * - * @param string $email The email direction to add - * - * @return void - * @access public - */ - function addBcc($email) - { - if (isset($this->_headers['Bcc'])) { - $this->_headers['Bcc'] .= ", $email"; - } else { - $this->_headers['Bcc'] = $email; - } - } - - /** - * Since the PHP send function requires you to specify - * recipients (To: header) separately from the other - * headers, the To: header is not properly encoded. - * To fix this, you can use this public method to - * encode your recipients before sending to the send - * function - * - * @param string $recipients A comma-delimited list of recipients - * - * @return string Encoded data - * @access public - */ - function encodeRecipients($recipients) - { - $input = array("To" => $recipients); - $retval = $this->_encodeHeaders($input); - return $retval["To"] ; - } - - /** - * Encodes headers as per RFC2047 - * - * @param array $input The header data to encode - * @param array $params Extra build parameters - * - * @return array Encoded data - * @access private - */ - function _encodeHeaders($input, $params = array()) - { - $build_params = $this->_build_params; - while (list($key, $value) = each($params)) { - $build_params[$key] = $value; - } - - foreach ($input as $hdr_name => $hdr_value) { - if (is_array($hdr_value)) { - foreach ($hdr_value as $idx => $value) { - $input[$hdr_name][$idx] = $this->encodeHeader( - $hdr_name, $value, - $build_params['head_charset'], $build_params['head_encoding'] - ); - } - } else { - $input[$hdr_name] = $this->encodeHeader( - $hdr_name, $hdr_value, - $build_params['head_charset'], $build_params['head_encoding'] - ); - } - } - - return $input; - } - - /** - * Encodes a header as per RFC2047 - * - * @param string $name The header name - * @param string $value The header data to encode - * @param string $charset Character set name - * @param string $encoding Encoding name (base64 or quoted-printable) - * - * @return string Encoded header data (without a name) - * @access public - * @since 1.5.3 - */ - function encodeHeader($name, $value, $charset, $encoding) - { - $mime_part = new Mail_mimePart; - return $mime_part->encodeHeader( - $name, $value, $charset, $encoding, $this->_build_params['eol'] - ); - } - - /** - * Get file's basename (locale independent) - * - * @param string $filename Filename - * - * @return string Basename - * @access private - */ - function _basename($filename) - { - // basename() is not unicode safe and locale dependent - if (stristr(PHP_OS, 'win') || stristr(PHP_OS, 'netware')) { - return preg_replace('/^.*[\\\\\\/]/', '', $filename); - } else { - return preg_replace('/^.*[\/]/', '', $filename); - } - } - - /** - * Get Content-Type and Content-Transfer-Encoding headers of the message - * - * @return array Headers array - * @access private - */ - function _contentHeaders() - { - $attachments = count($this->_parts) ? true : false; - $html_images = count($this->_html_images) ? true : false; - $html = strlen($this->_htmlbody) ? true : false; - $text = (!$html && strlen($this->_txtbody)) ? true : false; - $headers = array(); - - // See get() - switch (true) { - case $text && !$attachments: - $headers['Content-Type'] = 'text/plain'; - break; - - case !$text && !$html && $attachments: - case $text && $attachments: - case $html && $attachments && !$html_images: - case $html && $attachments && $html_images: - $headers['Content-Type'] = 'multipart/mixed'; - break; - - case $html && !$attachments && !$html_images && isset($this->_txtbody): - case $html && !$attachments && $html_images && isset($this->_txtbody): - $headers['Content-Type'] = 'multipart/alternative'; - break; - - case $html && !$attachments && !$html_images && !isset($this->_txtbody): - $headers['Content-Type'] = 'text/html'; - break; - - case $html && !$attachments && $html_images && !isset($this->_txtbody): - $headers['Content-Type'] = 'multipart/related'; - break; - - default: - return $headers; - } - - $this->_checkParams(); - - $eol = !empty($this->_build_params['eol']) - ? $this->_build_params['eol'] : "\r\n"; - - if ($headers['Content-Type'] == 'text/plain') { - // single-part message: add charset and encoding - $charset = 'charset=' . $this->_build_params['text_charset']; - // place charset parameter in the same line, if possible - // 26 = strlen("Content-Type: text/plain; ") - $headers['Content-Type'] - .= (strlen($charset) + 26 <= 76) ? "; $charset" : ";$eol $charset"; - $headers['Content-Transfer-Encoding'] - = $this->_build_params['text_encoding']; - } else if ($headers['Content-Type'] == 'text/html') { - // single-part message: add charset and encoding - $charset = 'charset=' . $this->_build_params['html_charset']; - // place charset parameter in the same line, if possible - $headers['Content-Type'] - .= (strlen($charset) + 25 <= 76) ? "; $charset" : ";$eol $charset"; - $headers['Content-Transfer-Encoding'] - = $this->_build_params['html_encoding']; - } else { - // multipart message: and boundary - if (!empty($this->_build_params['boundary'])) { - $boundary = $this->_build_params['boundary']; - } else if (!empty($this->_headers['Content-Type']) - && preg_match('/boundary="([^"]+)"/', $this->_headers['Content-Type'], $m) - ) { - $boundary = $m[1]; - } else { - $boundary = '=_' . md5(rand() . microtime()); - } - - $this->_build_params['boundary'] = $boundary; - $headers['Content-Type'] .= ";$eol boundary=\"$boundary\""; - } - - return $headers; - } - - /** - * Validate and set build parameters - * - * @return void - * @access private - */ - function _checkParams() - { - $encodings = array('7bit', '8bit', 'base64', 'quoted-printable'); - - $this->_build_params['text_encoding'] - = strtolower($this->_build_params['text_encoding']); - $this->_build_params['html_encoding'] - = strtolower($this->_build_params['html_encoding']); - - if (!in_array($this->_build_params['text_encoding'], $encodings)) { - $this->_build_params['text_encoding'] = '7bit'; - } - if (!in_array($this->_build_params['html_encoding'], $encodings)) { - $this->_build_params['html_encoding'] = '7bit'; - } - - // text body - if ($this->_build_params['text_encoding'] == '7bit' - && !preg_match('/ascii/i', $this->_build_params['text_charset']) - && preg_match('/[^\x00-\x7F]/', $this->_txtbody) - ) { - $this->_build_params['text_encoding'] = 'quoted-printable'; - } - // html body - if ($this->_build_params['html_encoding'] == '7bit' - && !preg_match('/ascii/i', $this->_build_params['html_charset']) - && preg_match('/[^\x00-\x7F]/', $this->_htmlbody) - ) { - $this->_build_params['html_encoding'] = 'quoted-printable'; - } - } - - /** - * PEAR::isError implementation - * - * @param mixed $data Object - * - * @return bool True if object is an instance of PEAR_Error - * @access private - */ - function _isError($data) - { - // PEAR::isError() is not PHP 5.4 compatible (see Bug #19473) - if (is_object($data) && is_a($data, 'PEAR_Error')) { - return true; - } - - return false; - } - - /** - * PEAR::raiseError implementation - * - * @param $message A text error message - * - * @return PEAR_Error Instance of PEAR_Error - * @access private - */ - function _raiseError($message) - { - // PEAR::raiseError() is not PHP 5.4 compatible - return new PEAR_Error($message); - } - -} // End of class diff --git a/src/vitis/vas/rest/class/PEAR/Mail/mimePart.php b/src/vitis/vas/rest/class/PEAR/Mail/mimePart.php deleted file mode 100755 index 0cbc18adbfb64499d4b3280ed5e33cb18215dc27..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/mimePart.php +++ /dev/null @@ -1,1261 +0,0 @@ -<?php -/** - * The Mail_mimePart class is used to create MIME E-mail messages - * - * This class enables you to manipulate and build a mime email - * from the ground up. The Mail_Mime class is a userfriendly api - * to this class for people who aren't interested in the internals - * of mime mail. - * This class however allows full control over the email. - * - * Compatible with PHP versions 4 and 5 - * - * LICENSE: This LICENSE is in the BSD license style. - * Copyright (c) 2002-2003, Richard Heyes <richard@phpguru.org> - * Copyright (c) 2003-2006, PEAR <pear-group@php.net> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - Neither the name of the authors, nor the names of its contributors - * may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - * - * @category Mail - * @package Mail_Mime - * @author Richard Heyes <richard@phpguru.org> - * @author Cipriano Groenendal <cipri@php.net> - * @author Sean Coates <sean@php.net> - * @author Aleksander Machniak <alec@php.net> - * @copyright 2003-2006 PEAR <pear-group@php.net> - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version CVS: $Id$ - * @link http://pear.php.net/package/Mail_mime - */ - - -/** - * The Mail_mimePart class is used to create MIME E-mail messages - * - * This class enables you to manipulate and build a mime email - * from the ground up. The Mail_Mime class is a userfriendly api - * to this class for people who aren't interested in the internals - * of mime mail. - * This class however allows full control over the email. - * - * @category Mail - * @package Mail_Mime - * @author Richard Heyes <richard@phpguru.org> - * @author Cipriano Groenendal <cipri@php.net> - * @author Sean Coates <sean@php.net> - * @author Aleksander Machniak <alec@php.net> - * @copyright 2003-2006 PEAR <pear-group@php.net> - * @license http://www.opensource.org/licenses/bsd-license.php BSD License - * @version Release: @package_version@ - * @link http://pear.php.net/package/Mail_mime - */ -class Mail_mimePart -{ - /** - * The encoding type of this part - * - * @var string - * @access private - */ - var $_encoding; - - /** - * An array of subparts - * - * @var array - * @access private - */ - var $_subparts; - - /** - * The output of this part after being built - * - * @var string - * @access private - */ - var $_encoded; - - /** - * Headers for this part - * - * @var array - * @access private - */ - var $_headers; - - /** - * The body of this part (not encoded) - * - * @var string - * @access private - */ - var $_body; - - /** - * The location of file with body of this part (not encoded) - * - * @var string - * @access private - */ - var $_body_file; - - /** - * The end-of-line sequence - * - * @var string - * @access private - */ - var $_eol = "\r\n"; - - - /** - * Constructor. - * - * Sets up the object. - * - * @param string $body The body of the mime part if any. - * @param array $params An associative array of optional parameters: - * content_type - The content type for this part eg multipart/mixed - * encoding - The encoding to use, 7bit, 8bit, - * base64, or quoted-printable - * charset - Content character set - * cid - Content ID to apply - * disposition - Content disposition, inline or attachment - * filename - Filename parameter for content disposition - * description - Content description - * name_encoding - Encoding of the attachment name (Content-Type) - * By default filenames are encoded using RFC2231 - * Here you can set RFC2047 encoding (quoted-printable - * or base64) instead - * filename_encoding - Encoding of the attachment filename (Content-Disposition) - * See 'name_encoding' - * headers_charset - Charset of the headers e.g. filename, description. - * If not set, 'charset' will be used - * eol - End of line sequence. Default: "\r\n" - * headers - Hash array with additional part headers. Array keys can be - * in form of <header_name>:<parameter_name> - * body_file - Location of file with part's body (instead of $body) - * - * @access public - */ - function __construct($body = '', $params = array()) - { - if (!empty($params['eol'])) { - $this->_eol = $params['eol']; - } else if (defined('MAIL_MIMEPART_CRLF')) { // backward-copat. - $this->_eol = MAIL_MIMEPART_CRLF; - } - - // Additional part headers - if (!empty($params['headers']) && is_array($params['headers'])) { - $headers = $params['headers']; - } - - foreach ($params as $key => $value) { - switch ($key) { - case 'encoding': - $this->_encoding = $value; - $headers['Content-Transfer-Encoding'] = $value; - break; - - case 'cid': - $headers['Content-ID'] = '<' . $value . '>'; - break; - - case 'location': - $headers['Content-Location'] = $value; - break; - - case 'body_file': - $this->_body_file = $value; - break; - - // for backward compatibility - case 'dfilename': - $params['filename'] = $value; - break; - } - } - - // Default content-type - if (empty($params['content_type'])) { - $params['content_type'] = 'text/plain'; - } - - // Content-Type - $headers['Content-Type'] = $params['content_type']; - if (!empty($params['charset'])) { - $charset = "charset={$params['charset']}"; - // place charset parameter in the same line, if possible - if ((strlen($headers['Content-Type']) + strlen($charset) + 16) <= 76) { - $headers['Content-Type'] .= '; '; - } else { - $headers['Content-Type'] .= ';' . $this->_eol . ' '; - } - $headers['Content-Type'] .= $charset; - - // Default headers charset - if (!isset($params['headers_charset'])) { - $params['headers_charset'] = $params['charset']; - } - } - - // header values encoding parameters - $h_charset = !empty($params['headers_charset']) ? $params['headers_charset'] : 'US-ASCII'; - $h_language = !empty($params['language']) ? $params['language'] : null; - $h_encoding = !empty($params['name_encoding']) ? $params['name_encoding'] : null; - - - if (!empty($params['filename'])) { - $headers['Content-Type'] .= ';' . $this->_eol; - $headers['Content-Type'] .= $this->_buildHeaderParam( - 'name', $params['filename'], $h_charset, $h_language, $h_encoding - ); - } - - // Content-Disposition - if (!empty($params['disposition'])) { - $headers['Content-Disposition'] = $params['disposition']; - if (!empty($params['filename'])) { - $headers['Content-Disposition'] .= ';' . $this->_eol; - $headers['Content-Disposition'] .= $this->_buildHeaderParam( - 'filename', $params['filename'], $h_charset, $h_language, - !empty($params['filename_encoding']) ? $params['filename_encoding'] : null - ); - } - - // add attachment size - $size = $this->_body_file ? filesize($this->_body_file) : strlen($body); - if ($size) { - $headers['Content-Disposition'] .= ';' . $this->_eol . ' size=' . $size; - } - } - - if (!empty($params['description'])) { - $headers['Content-Description'] = $this->encodeHeader( - 'Content-Description', $params['description'], $h_charset, $h_encoding, - $this->_eol - ); - } - - // Search and add existing headers' parameters - foreach ($headers as $key => $value) { - $items = explode(':', $key); - if (count($items) == 2) { - $header = $items[0]; - $param = $items[1]; - if (isset($headers[$header])) { - $headers[$header] .= ';' . $this->_eol; - } - $headers[$header] .= $this->_buildHeaderParam( - $param, $value, $h_charset, $h_language, $h_encoding - ); - unset($headers[$key]); - } - } - - // Default encoding - if (!isset($this->_encoding)) { - $this->_encoding = '7bit'; - } - - // Assign stuff to member variables - $this->_encoded = array(); - $this->_headers = $headers; - $this->_body = $body; - } - - /** - * Encodes and returns the email. Also stores - * it in the encoded member variable - * - * @param string $boundary Pre-defined boundary string - * - * @return An associative array containing two elements, - * body and headers. The headers element is itself - * an indexed array. On error returns PEAR error object. - * @access public - */ - function encode($boundary=null) - { - $encoded =& $this->_encoded; - - if (count($this->_subparts)) { - $boundary = $boundary ? $boundary : '=_' . md5(rand() . microtime()); - $eol = $this->_eol; - - $this->_headers['Content-Type'] .= ";$eol boundary=\"$boundary\""; - - $encoded['body'] = ''; - - for ($i = 0; $i < count($this->_subparts); $i++) { - $encoded['body'] .= '--' . $boundary . $eol; - $tmp = $this->_subparts[$i]->encode(); - if ($this->_isError($tmp)) { - return $tmp; - } - foreach ($tmp['headers'] as $key => $value) { - $encoded['body'] .= $key . ': ' . $value . $eol; - } - $encoded['body'] .= $eol . $tmp['body'] . $eol; - } - - $encoded['body'] .= '--' . $boundary . '--' . $eol; - - } else if ($this->_body) { - $encoded['body'] = $this->_getEncodedData($this->_body, $this->_encoding); - } else if ($this->_body_file) { - // Temporarily reset magic_quotes_runtime for file reads and writes - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); - } - $body = $this->_getEncodedDataFromFile($this->_body_file, $this->_encoding); - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); - } - - if ($this->_isError($body)) { - return $body; - } - $encoded['body'] = $body; - } else { - $encoded['body'] = ''; - } - - // Add headers to $encoded - $encoded['headers'] =& $this->_headers; - - return $encoded; - } - - /** - * Encodes and saves the email into file. File must exist. - * Data will be appended to the file. - * - * @param string $filename Output file location - * @param string $boundary Pre-defined boundary string - * @param boolean $skip_head True if you don't want to save headers - * - * @return array An associative array containing message headers - * or PEAR error object - * @access public - * @since 1.6.0 - */ - function encodeToFile($filename, $boundary=null, $skip_head=false) - { - if (file_exists($filename) && !is_writable($filename)) { - $err = $this->_raiseError('File is not writeable: ' . $filename); - return $err; - } - - if (!($fh = fopen($filename, 'ab'))) { - $err = $this->_raiseError('Unable to open file: ' . $filename); - return $err; - } - - // Temporarily reset magic_quotes_runtime for file reads and writes - if ($magic_quote_setting = get_magic_quotes_runtime()) { - @ini_set('magic_quotes_runtime', 0); - } - - $res = $this->_encodePartToFile($fh, $boundary, $skip_head); - - fclose($fh); - - if ($magic_quote_setting) { - @ini_set('magic_quotes_runtime', $magic_quote_setting); - } - - return $this->_isError($res) ? $res : $this->_headers; - } - - /** - * Encodes given email part into file - * - * @param string $fh Output file handle - * @param string $boundary Pre-defined boundary string - * @param boolean $skip_head True if you don't want to save headers - * - * @return array True on sucess or PEAR error object - * @access private - */ - function _encodePartToFile($fh, $boundary=null, $skip_head=false) - { - $eol = $this->_eol; - - if (count($this->_subparts)) { - $boundary = $boundary ? $boundary : '=_' . md5(rand() . microtime()); - $this->_headers['Content-Type'] .= ";$eol boundary=\"$boundary\""; - } - - if (!$skip_head) { - foreach ($this->_headers as $key => $value) { - fwrite($fh, $key . ': ' . $value . $eol); - } - $f_eol = $eol; - } else { - $f_eol = ''; - } - - if (count($this->_subparts)) { - for ($i = 0; $i < count($this->_subparts); $i++) { - fwrite($fh, $f_eol . '--' . $boundary . $eol); - $res = $this->_subparts[$i]->_encodePartToFile($fh); - if ($this->_isError($res)) { - return $res; - } - $f_eol = $eol; - } - - fwrite($fh, $eol . '--' . $boundary . '--' . $eol); - - } else if ($this->_body) { - fwrite($fh, $f_eol . $this->_getEncodedData($this->_body, $this->_encoding)); - } else if ($this->_body_file) { - fwrite($fh, $f_eol); - $res = $this->_getEncodedDataFromFile( - $this->_body_file, $this->_encoding, $fh - ); - if ($this->_isError($res)) { - return $res; - } - } - - return true; - } - - /** - * Adds a subpart to current mime part and returns - * a reference to it - * - * @param string $body The body of the subpart, if any. - * @param array $params The parameters for the subpart, same - * as the $params argument for constructor. - * - * @return Mail_mimePart A reference to the part you just added. In PHP4, it is - * crucial if using multipart/* in your subparts that - * you use =& in your script when calling this function, - * otherwise you will not be able to add further subparts. - * @access public - */ - function &addSubpart($body, $params) - { - $this->_subparts[] = $part = new Mail_mimePart($body, $params); - return $part; - } - - /** - * Returns encoded data based upon encoding passed to it - * - * @param string $data The data to encode. - * @param string $encoding The encoding type to use, 7bit, base64, - * or quoted-printable. - * - * @return string - * @access private - */ - function _getEncodedData($data, $encoding) - { - switch ($encoding) { - case 'quoted-printable': - return $this->_quotedPrintableEncode($data); - break; - - case 'base64': - return rtrim(chunk_split(base64_encode($data), 76, $this->_eol)); - break; - - case '8bit': - case '7bit': - default: - return $data; - } - } - - /** - * Returns encoded data based upon encoding passed to it - * - * @param string $filename Data file location - * @param string $encoding The encoding type to use, 7bit, base64, - * or quoted-printable. - * @param resource $fh Output file handle. If set, data will be - * stored into it instead of returning it - * - * @return string Encoded data or PEAR error object - * @access private - */ - function _getEncodedDataFromFile($filename, $encoding, $fh=null) - { - if (!is_readable($filename)) { - $err = $this->_raiseError('Unable to read file: ' . $filename); - return $err; - } - - if (!($fd = fopen($filename, 'rb'))) { - $err = $this->_raiseError('Could not open file: ' . $filename); - return $err; - } - - $data = ''; - - switch ($encoding) { - case 'quoted-printable': - while (!feof($fd)) { - $buffer = $this->_quotedPrintableEncode(fgets($fd)); - if ($fh) { - fwrite($fh, $buffer); - } else { - $data .= $buffer; - } - } - break; - - case 'base64': - while (!feof($fd)) { - // Should read in a multiple of 57 bytes so that - // the output is 76 bytes per line. Don't use big chunks - // because base64 encoding is memory expensive - $buffer = fread($fd, 57 * 9198); // ca. 0.5 MB - $buffer = base64_encode($buffer); - $buffer = chunk_split($buffer, 76, $this->_eol); - if (feof($fd)) { - $buffer = rtrim($buffer); - } - - if ($fh) { - fwrite($fh, $buffer); - } else { - $data .= $buffer; - } - } - break; - - case '8bit': - case '7bit': - default: - while (!feof($fd)) { - $buffer = fread($fd, 1048576); // 1 MB - if ($fh) { - fwrite($fh, $buffer); - } else { - $data .= $buffer; - } - } - } - - fclose($fd); - - if (!$fh) { - return $data; - } - } - - /** - * Encodes data to quoted-printable standard. - * - * @param string $input The data to encode - * @param int $line_max Optional max line length. Should - * not be more than 76 chars - * - * @return string Encoded data - * - * @access private - */ - function _quotedPrintableEncode($input , $line_max = 76) - { - $eol = $this->_eol; - /* - // imap_8bit() is extremely fast, but doesn't handle properly some characters - if (function_exists('imap_8bit') && $line_max == 76) { - $input = preg_replace('/\r?\n/', "\r\n", $input); - $input = imap_8bit($input); - if ($eol != "\r\n") { - $input = str_replace("\r\n", $eol, $input); - } - return $input; - } - */ - $lines = preg_split("/\r?\n/", $input); - $escape = '='; - $output = ''; - - while (list($idx, $line) = each($lines)) { - $newline = ''; - $i = 0; - - while (isset($line[$i])) { - $char = $line[$i]; - $dec = ord($char); - $i++; - - if (($dec == 32) && (!isset($line[$i]))) { - // convert space at eol only - $char = '=20'; - } elseif ($dec == 9 && isset($line[$i])) { - ; // Do nothing if a TAB is not on eol - } elseif (($dec == 61) || ($dec < 32) || ($dec > 126)) { - $char = $escape . sprintf('%02X', $dec); - } elseif (($dec == 46) && (($newline == '') - || ((strlen($newline) + strlen("=2E")) >= $line_max)) - ) { - // Bug #9722: convert full-stop at bol, - // some Windows servers need this, won't break anything (cipri) - // Bug #11731: full-stop at bol also needs to be encoded - // if this line would push us over the line_max limit. - $char = '=2E'; - } - - // Note, when changing this line, also change the ($dec == 46) - // check line, as it mimics this line due to Bug #11731 - // EOL is not counted - if ((strlen($newline) + strlen($char)) >= $line_max) { - // soft line break; " =\r\n" is okay - $output .= $newline . $escape . $eol; - $newline = ''; - } - $newline .= $char; - } // end of for - $output .= $newline . $eol; - unset($lines[$idx]); - } - // Don't want last crlf - $output = substr($output, 0, -1 * strlen($eol)); - return $output; - } - - /** - * Encodes the parameter of a header. - * - * @param string $name The name of the header-parameter - * @param string $value The value of the paramter - * @param string $charset The characterset of $value - * @param string $language The language used in $value - * @param string $encoding Parameter encoding. If not set, parameter value - * is encoded according to RFC2231 - * @param int $maxLength The maximum length of a line. Defauls to 75 - * - * @return string - * - * @access private - */ - function _buildHeaderParam($name, $value, $charset=null, $language=null, - $encoding=null, $maxLength=75 - ) { - // RFC 2045: - // value needs encoding if contains non-ASCII chars or is longer than 78 chars - if (!preg_match('#[^\x20-\x7E]#', $value)) { - $token_regexp = '#([^\x21\x23-\x27\x2A\x2B\x2D' - . '\x2E\x30-\x39\x41-\x5A\x5E-\x7E])#'; - if (!preg_match($token_regexp, $value)) { - // token - if (strlen($name) + strlen($value) + 3 <= $maxLength) { - return " {$name}={$value}"; - } - } else { - // quoted-string - $quoted = addcslashes($value, '\\"'); - if (strlen($name) + strlen($quoted) + 5 <= $maxLength) { - return " {$name}=\"{$quoted}\""; - } - } - } - - // RFC2047: use quoted-printable/base64 encoding - if ($encoding == 'quoted-printable' || $encoding == 'base64') { - return $this->_buildRFC2047Param($name, $value, $charset, $encoding); - } - - // RFC2231: - $encValue = preg_replace_callback( - '/([^\x21\x23\x24\x26\x2B\x2D\x2E\x30-\x39\x41-\x5A\x5E-\x7E])/', - array($this, '_encodeReplaceCallback'), $value - ); - $value = "$charset'$language'$encValue"; - - $header = " {$name}*={$value}"; - if (strlen($header) <= $maxLength) { - return $header; - } - - $preLength = strlen(" {$name}*0*="); - $maxLength = max(16, $maxLength - $preLength - 3); - $maxLengthReg = "|(.{0,$maxLength}[^\%][^\%])|"; - - $headers = array(); - $headCount = 0; - while ($value) { - $matches = array(); - $found = preg_match($maxLengthReg, $value, $matches); - if ($found) { - $headers[] = " {$name}*{$headCount}*={$matches[0]}"; - $value = substr($value, strlen($matches[0])); - } else { - $headers[] = " {$name}*{$headCount}*={$value}"; - $value = ''; - } - $headCount++; - } - - $headers = implode(';' . $this->_eol, $headers); - return $headers; - } - - /** - * Encodes header parameter as per RFC2047 if needed - * - * @param string $name The parameter name - * @param string $value The parameter value - * @param string $charset The parameter charset - * @param string $encoding Encoding type (quoted-printable or base64) - * @param int $maxLength Encoded parameter max length. Default: 76 - * - * @return string Parameter line - * @access private - */ - function _buildRFC2047Param($name, $value, $charset, - $encoding='quoted-printable', $maxLength=76 - ) { - // WARNING: RFC 2047 says: "An 'encoded-word' MUST NOT be used in - // parameter of a MIME Content-Type or Content-Disposition field", - // but... it's supported by many clients/servers - $quoted = ''; - - if ($encoding == 'base64') { - $value = base64_encode($value); - $prefix = '=?' . $charset . '?B?'; - $suffix = '?='; - - // 2 x SPACE, 2 x '"', '=', ';' - $add_len = strlen($prefix . $suffix) + strlen($name) + 6; - $len = $add_len + strlen($value); - - while ($len > $maxLength) { - // We can cut base64-encoded string every 4 characters - $real_len = floor(($maxLength - $add_len) / 4) * 4; - $_quote = substr($value, 0, $real_len); - $value = substr($value, $real_len); - - $quoted .= $prefix . $_quote . $suffix . $this->_eol . ' '; - $add_len = strlen($prefix . $suffix) + 4; // 2 x SPACE, '"', ';' - $len = strlen($value) + $add_len; - } - $quoted .= $prefix . $value . $suffix; - - } else { - // quoted-printable - $value = $this->encodeQP($value); - $prefix = '=?' . $charset . '?Q?'; - $suffix = '?='; - - // 2 x SPACE, 2 x '"', '=', ';' - $add_len = strlen($prefix . $suffix) + strlen($name) + 6; - $len = $add_len + strlen($value); - - while ($len > $maxLength) { - $length = $maxLength - $add_len; - // don't break any encoded letters - if (preg_match("/^(.{0,$length}[^\=][^\=])/", $value, $matches)) { - $_quote = $matches[1]; - } - - $quoted .= $prefix . $_quote . $suffix . $this->_eol . ' '; - $value = substr($value, strlen($_quote)); - $add_len = strlen($prefix . $suffix) + 4; // 2 x SPACE, '"', ';' - $len = strlen($value) + $add_len; - } - - $quoted .= $prefix . $value . $suffix; - } - - return " {$name}=\"{$quoted}\""; - } - - /** - * Encodes a header as per RFC2047 - * - * @param string $name The header name - * @param string $value The header data to encode - * @param string $charset Character set name - * @param string $encoding Encoding name (base64 or quoted-printable) - * @param string $eol End-of-line sequence. Default: "\r\n" - * - * @return string Encoded header data (without a name) - * @access public - * @since 1.6.1 - */ - function encodeHeader($name, $value, $charset='ISO-8859-1', - $encoding='quoted-printable', $eol="\r\n" - ) { - // Structured headers - $comma_headers = array( - 'from', 'to', 'cc', 'bcc', 'sender', 'reply-to', - 'resent-from', 'resent-to', 'resent-cc', 'resent-bcc', - 'resent-sender', 'resent-reply-to', - 'mail-reply-to', 'mail-followup-to', - 'return-receipt-to', 'disposition-notification-to', - ); - $other_headers = array( - 'references', 'in-reply-to', 'message-id', 'resent-message-id', - ); - - $name = strtolower($name); - - if (in_array($name, $comma_headers)) { - $separator = ','; - } else if (in_array($name, $other_headers)) { - $separator = ' '; - } - - if (!$charset) { - $charset = 'ISO-8859-1'; - } - - // Structured header (make sure addr-spec inside is not encoded) - if (!empty($separator)) { - // Simple e-mail address regexp - $email_regexp = '([^\s<]+|("[^\r\n"]+"))@\S+'; - - $parts = Mail_mimePart::_explodeQuotedString($separator, $value); - $value = ''; - - foreach ($parts as $part) { - $part = preg_replace('/\r?\n[\s\t]*/', $eol . ' ', $part); - $part = trim($part); - - if (!$part) { - continue; - } - if ($value) { - $value .= $separator==',' ? $separator.' ' : ' '; - } else { - $value = $name . ': '; - } - - // let's find phrase (name) and/or addr-spec - if (preg_match('/^<' . $email_regexp . '>$/', $part)) { - $value .= $part; - } else if (preg_match('/^' . $email_regexp . '$/', $part)) { - // address without brackets and without name - $value .= $part; - } else if (preg_match('/<*' . $email_regexp . '>*$/', $part, $matches)) { - // address with name (handle name) - $address = $matches[0]; - $word = str_replace($address, '', $part); - $word = trim($word); - // check if phrase requires quoting - if ($word) { - // non-ASCII: require encoding - if (preg_match('#([\x80-\xFF]){1}#', $word)) { - if ($word[0] == '"' && $word[strlen($word)-1] == '"') { - // de-quote quoted-string, encoding changes - // string to atom - $search = array("\\\"", "\\\\"); - $replace = array("\"", "\\"); - $word = str_replace($search, $replace, $word); - $word = substr($word, 1, -1); - } - // find length of last line - if (($pos = strrpos($value, $eol)) !== false) { - $last_len = strlen($value) - $pos; - } else { - $last_len = strlen($value); - } - $word = Mail_mimePart::encodeHeaderValue( - $word, $charset, $encoding, $last_len, $eol - ); - } else if (($word[0] != '"' || $word[strlen($word)-1] != '"') - && preg_match('/[\(\)\<\>\\\.\[\]@,;:"]/', $word) - ) { - // ASCII: quote string if needed - $word = '"'.addcslashes($word, '\\"').'"'; - } - } - $value .= $word.' '.$address; - } else { - // addr-spec not found, don't encode (?) - $value .= $part; - } - - // RFC2822 recommends 78 characters limit, use 76 from RFC2047 - $value = wordwrap($value, 76, $eol . ' '); - } - - // remove header name prefix (there could be EOL too) - $value = preg_replace( - '/^'.$name.':('.preg_quote($eol, '/').')* /', '', $value - ); - - } else { - // Unstructured header - // non-ASCII: require encoding - if (preg_match('#([\x80-\xFF]){1}#', $value)) { - if ($value[0] == '"' && $value[strlen($value)-1] == '"') { - // de-quote quoted-string, encoding changes - // string to atom - $search = array("\\\"", "\\\\"); - $replace = array("\"", "\\"); - $value = str_replace($search, $replace, $value); - $value = substr($value, 1, -1); - } - $value = Mail_mimePart::encodeHeaderValue( - $value, $charset, $encoding, strlen($name) + 2, $eol - ); - } else if (strlen($name.': '.$value) > 78) { - // ASCII: check if header line isn't too long and use folding - $value = preg_replace('/\r?\n[\s\t]*/', $eol . ' ', $value); - $tmp = wordwrap($name.': '.$value, 78, $eol . ' '); - $value = preg_replace('/^'.$name.':\s*/', '', $tmp); - // hard limit 998 (RFC2822) - $value = wordwrap($value, 998, $eol . ' ', true); - } - } - - return $value; - } - - /** - * Explode quoted string - * - * @param string $delimiter Delimiter expression string for preg_match() - * @param string $string Input string - * - * @return array String tokens array - * @access private - */ - function _explodeQuotedString($delimiter, $string) - { - $result = array(); - $strlen = strlen($string); - - for ($q=$p=$i=0; $i < $strlen; $i++) { - if ($string[$i] == "\"" - && (empty($string[$i-1]) || $string[$i-1] != "\\") - ) { - $q = $q ? false : true; - } else if (!$q && preg_match("/$delimiter/", $string[$i])) { - $result[] = substr($string, $p, $i - $p); - $p = $i + 1; - } - } - - $result[] = substr($string, $p); - return $result; - } - - /** - * Encodes a header value as per RFC2047 - * - * @param string $value The header data to encode - * @param string $charset Character set name - * @param string $encoding Encoding name (base64 or quoted-printable) - * @param int $prefix_len Prefix length. Default: 0 - * @param string $eol End-of-line sequence. Default: "\r\n" - * - * @return string Encoded header data - * @access public - * @since 1.6.1 - */ - function encodeHeaderValue($value, $charset, $encoding, $prefix_len=0, $eol="\r\n") - { - // #17311: Use multibyte aware method (requires mbstring extension) - if ($result = Mail_mimePart::encodeMB($value, $charset, $encoding, $prefix_len, $eol)) { - return $result; - } - - // Generate the header using the specified params and dynamicly - // determine the maximum length of such strings. - // 75 is the value specified in the RFC. - $encoding = $encoding == 'base64' ? 'B' : 'Q'; - $prefix = '=?' . $charset . '?' . $encoding .'?'; - $suffix = '?='; - $maxLength = 75 - strlen($prefix . $suffix); - $maxLength1stLine = $maxLength - $prefix_len; - - if ($encoding == 'B') { - // Base64 encode the entire string - $value = base64_encode($value); - - // We can cut base64 every 4 characters, so the real max - // we can get must be rounded down. - $maxLength = $maxLength - ($maxLength % 4); - $maxLength1stLine = $maxLength1stLine - ($maxLength1stLine % 4); - - $cutpoint = $maxLength1stLine; - $output = ''; - - while ($value) { - // Split translated string at every $maxLength - $part = substr($value, 0, $cutpoint); - $value = substr($value, $cutpoint); - $cutpoint = $maxLength; - // RFC 2047 specifies that any split header should - // be separated by a CRLF SPACE. - if ($output) { - $output .= $eol . ' '; - } - $output .= $prefix . $part . $suffix; - } - $value = $output; - } else { - // quoted-printable encoding has been selected - $value = Mail_mimePart::encodeQP($value); - - // This regexp will break QP-encoded text at every $maxLength - // but will not break any encoded letters. - $reg1st = "|(.{0,$maxLength1stLine}[^\=][^\=])|"; - $reg2nd = "|(.{0,$maxLength}[^\=][^\=])|"; - - if (strlen($value) > $maxLength1stLine) { - // Begin with the regexp for the first line. - $reg = $reg1st; - $output = ''; - while ($value) { - // Split translated string at every $maxLength - // But make sure not to break any translated chars. - $found = preg_match($reg, $value, $matches); - - // After this first line, we need to use a different - // regexp for the first line. - $reg = $reg2nd; - - // Save the found part and encapsulate it in the - // prefix & suffix. Then remove the part from the - // $value_out variable. - if ($found) { - $part = $matches[0]; - $len = strlen($matches[0]); - $value = substr($value, $len); - } else { - $part = $value; - $value = ''; - } - - // RFC 2047 specifies that any split header should - // be separated by a CRLF SPACE - if ($output) { - $output .= $eol . ' '; - } - $output .= $prefix . $part . $suffix; - } - $value = $output; - } else { - $value = $prefix . $value . $suffix; - } - } - - return $value; - } - - /** - * Encodes the given string using quoted-printable - * - * @param string $str String to encode - * - * @return string Encoded string - * @access public - * @since 1.6.0 - */ - function encodeQP($str) - { - // Bug #17226 RFC 2047 restricts some characters - // if the word is inside a phrase, permitted chars are only: - // ASCII letters, decimal digits, "!", "*", "+", "-", "/", "=", and "_" - - // "=", "_", "?" must be encoded - $regexp = '/([\x22-\x29\x2C\x2E\x3A-\x40\x5B-\x60\x7B-\x7E\x80-\xFF])/'; - $str = preg_replace_callback( - $regexp, array('Mail_mimePart', '_qpReplaceCallback'), $str - ); - - return str_replace(' ', '_', $str); - } - - /** - * Encodes the given string using base64 or quoted-printable. - * This method makes sure that encoded-word represents an integral - * number of characters as per RFC2047. - * - * @param string $str String to encode - * @param string $charset Character set name - * @param string $encoding Encoding name (base64 or quoted-printable) - * @param int $prefix_len Prefix length. Default: 0 - * @param string $eol End-of-line sequence. Default: "\r\n" - * - * @return string Encoded string - * @access public - * @since 1.8.0 - */ - function encodeMB($str, $charset, $encoding, $prefix_len=0, $eol="\r\n") - { - if (!function_exists('mb_substr') || !function_exists('mb_strlen')) { - return; - } - - $encoding = $encoding == 'base64' ? 'B' : 'Q'; - // 75 is the value specified in the RFC - $prefix = '=?' . $charset . '?'.$encoding.'?'; - $suffix = '?='; - $maxLength = 75 - strlen($prefix . $suffix); - - // A multi-octet character may not be split across adjacent encoded-words - // So, we'll loop over each character - // mb_stlen() with wrong charset will generate a warning here and return null - $length = mb_strlen($str, $charset); - $result = ''; - $line_length = $prefix_len; - - if ($encoding == 'B') { - // base64 - $start = 0; - $prev = ''; - - for ($i=1; $i<=$length; $i++) { - // See #17311 - $chunk = mb_substr($str, $start, $i-$start, $charset); - $chunk = base64_encode($chunk); - $chunk_len = strlen($chunk); - - if ($line_length + $chunk_len == $maxLength || $i == $length) { - if ($result) { - $result .= "\n"; - } - $result .= $chunk; - $line_length = 0; - $start = $i; - } else if ($line_length + $chunk_len > $maxLength) { - if ($result) { - $result .= "\n"; - } - if ($prev) { - $result .= $prev; - } - $line_length = 0; - $start = $i - 1; - } else { - $prev = $chunk; - } - } - } else { - // quoted-printable - // see encodeQP() - $regexp = '/([\x22-\x29\x2C\x2E\x3A-\x40\x5B-\x60\x7B-\x7E\x80-\xFF])/'; - - for ($i=0; $i<=$length; $i++) { - $char = mb_substr($str, $i, 1, $charset); - // RFC recommends underline (instead of =20) in place of the space - // that's one of the reasons why we're not using iconv_mime_encode() - if ($char == ' ') { - $char = '_'; - $char_len = 1; - } else { - $char = preg_replace_callback( - $regexp, array('Mail_mimePart', '_qpReplaceCallback'), $char - ); - $char_len = strlen($char); - } - - if ($line_length + $char_len > $maxLength) { - if ($result) { - $result .= "\n"; - } - $line_length = 0; - } - - $result .= $char; - $line_length += $char_len; - } - } - - if ($result) { - $result = $prefix - .str_replace("\n", $suffix.$eol.' '.$prefix, $result).$suffix; - } - - return $result; - } - - /** - * Callback function to replace extended characters (\x80-xFF) with their - * ASCII values (RFC2047: quoted-printable) - * - * @param array $matches Preg_replace's matches array - * - * @return string Encoded character string - * @access private - */ - function _qpReplaceCallback($matches) - { - return sprintf('=%02X', ord($matches[1])); - } - - /** - * Callback function to replace extended characters (\x80-xFF) with their - * ASCII values (RFC2231) - * - * @param array $matches Preg_replace's matches array - * - * @return string Encoded character string - * @access private - */ - function _encodeReplaceCallback($matches) - { - return sprintf('%%%02X', ord($matches[1])); - } - - /** - * PEAR::isError implementation - * - * @param mixed $data Object - * - * @return bool True if object is an instance of PEAR_Error - * @access private - */ - function _isError($data) - { - // PEAR::isError() is not PHP 5.4 compatible (see Bug #19473) - if (is_object($data) && is_a($data, 'PEAR_Error')) { - return true; - } - - return false; - } - - /** - * PEAR::raiseError implementation - * - * @param $message A text error message - * - * @return PEAR_Error Instance of PEAR_Error - * @access private - */ - function _raiseError($message) - { - // PEAR::raiseError() is not PHP 5.4 compatible - return new PEAR_Error($message); - } - -} // End of class diff --git a/src/vitis/vas/rest/class/PEAR/Mail/mock.php b/src/vitis/vas/rest/class/PEAR/Mail/mock.php deleted file mode 100755 index 971dae6a0e0da47a839c3318cf34dc1b18142755..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/mock.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: mock.php,v 1.1 2007/12/08 17:57:54 chagenbu Exp $ -// - -/** - * Mock implementation of the PEAR Mail:: interface for testing. - * @access public - * @package Mail - * @version $Revision: 1.1 $ - */ -class Mail_mock extends Mail { - - /** - * Array of messages that have been sent with the mock. - * - * @var array - * @access public - */ - var $sentMessages = array(); - - /** - * Callback before sending mail. - * - * @var callback - */ - var $_preSendCallback; - - /** - * Callback after sending mai. - * - * @var callback - */ - var $_postSendCallback; - - /** - * Constructor. - * - * Instantiates a new Mail_mock:: object based on the parameters - * passed in. It looks for the following parameters, both optional: - * preSendCallback Called before an email would be sent. - * postSendCallback Called after an email would have been sent. - * - * @param array Hash containing any parameters. - * @access public - */ - function Mail_mock($params) - { - if (isset($params['preSendCallback']) && - is_callable($params['preSendCallback'])) { - $this->_preSendCallback = $params['preSendCallback']; - } - - if (isset($params['postSendCallback']) && - is_callable($params['postSendCallback'])) { - $this->_postSendCallback = $params['postSendCallback']; - } - } - - /** - * Implements Mail_mock::send() function. Silently discards all - * mail. - * - * @param mixed $recipients Either a comma-seperated list of recipients - * (RFC822 compliant), or an array of recipients, - * each RFC822 valid. This may contain recipients not - * specified in the headers, for Bcc:, resending - * messages, etc. - * - * @param array $headers The array of headers to send with the mail, in an - * associative array, where the array key is the - * header name (ie, 'Subject'), and the array value - * is the header value (ie, 'test'). The header - * produced from those values would be 'Subject: - * test'. - * - * @param string $body The full text of the message body, including any - * Mime parts, etc. - * - * @return mixed Returns true on success, or a PEAR_Error - * containing a descriptive error message on - * failure. - * @access public - */ - function send($recipients, $headers, $body) - { - if ($this->_preSendCallback) { - call_user_func_array($this->_preSendCallback, - array(&$this, $recipients, $headers, $body)); - } - - $entry = array('recipients' => $recipients, 'headers' => $headers, 'body' => $body); - $this->sentMessages[] = $entry; - - if ($this->_postSendCallback) { - call_user_func_array($this->_postSendCallback, - array(&$this, $recipients, $headers, $body)); - } - - return true; - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/Mail/net/SMTP.php b/src/vitis/vas/rest/class/PEAR/Mail/net/SMTP.php deleted file mode 100755 index a768745929009a5041e45d67a96bf169548dacce..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/net/SMTP.php +++ /dev/null @@ -1,1082 +0,0 @@ -<?php -/* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */ -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Authors: Chuck Hagenbuch <chuck@horde.org> | -// | Jon Parise <jon@php.net> | -// | Damian Alejandro Fernandez Sosa <damlists@cnba.uba.ar> | -// +----------------------------------------------------------------------+ -// -// $Id: SMTP.php,v 1.63 2008/06/10 05:39:12 jon Exp $ - -require_once 'PEAR/PEAR.php'; -require_once 'Socket.php'; - -/** - * Provides an implementation of the SMTP protocol using PEAR's - * Net_Socket:: class. - * - * @package Net_SMTP - * @author Chuck Hagenbuch <chuck@horde.org> - * @author Jon Parise <jon@php.net> - * @author Damian Alejandro Fernandez Sosa <damlists@cnba.uba.ar> - * - * @example basic.php A basic implementation of the Net_SMTP package. - */ -class Net_SMTP -{ - /** - * The server to connect to. - * @var string - * @access public - */ - var $host = 'localhost'; - - /** - * The port to connect to. - * @var int - * @access public - */ - var $port = 25; - - /** - * The value to give when sending EHLO or HELO. - * @var string - * @access public - */ - var $localhost = 'localhost'; - - /** - * List of supported authentication methods, in preferential order. - * @var array - * @access public - */ - var $auth_methods = array('DIGEST-MD5', 'CRAM-MD5', 'LOGIN', 'PLAIN'); - - /** - * Use SMTP command pipelining (specified in RFC 2920) if the SMTP - * server supports it. - * - * When pipeling is enabled, rcptTo(), mailFrom(), sendFrom(), - * somlFrom() and samlFrom() do not wait for a response from the - * SMTP server but return immediately. - * - * @var bool - * @access public - */ - var $pipelining = false; - - /** - * Number of pipelined commands. - * @var int - * @access private - */ - var $_pipelined_commands = 0; - - /** - * Should debugging output be enabled? - * @var boolean - * @access private - */ - var $_debug = false; - - /** - * The socket resource being used to connect to the SMTP server. - * @var resource - * @access private - */ - var $_socket = null; - - /** - * The most recent server response code. - * @var int - * @access private - */ - var $_code = -1; - - /** - * The most recent server response arguments. - * @var array - * @access private - */ - var $_arguments = array(); - - /** - * Stores detected features of the SMTP server. - * @var array - * @access private - */ - var $_esmtp = array(); - - /** - * Instantiates a new Net_SMTP object, overriding any defaults - * with parameters that are passed in. - * - * If you have SSL support in PHP, you can connect to a server - * over SSL using an 'ssl://' prefix: - * - * // 465 is a common smtps port. - * $smtp = new Net_SMTP('ssl://mail.host.com', 465); - * $smtp->connect(); - * - * @param string $host The server to connect to. - * @param integer $port The port to connect to. - * @param string $localhost The value to give when sending EHLO or HELO. - * @param boolean $pipeling Use SMTP command pipelining - * - * @access public - * @since 1.0 - */ - function Net_SMTP($host = null, $port = null, $localhost = null, $pipelining = false) - { - if (isset($host)) { - $this->host = $host; - } - if (isset($port)) { - $this->port = $port; - } - if (isset($localhost)) { - $this->localhost = $localhost; - } - $this->pipelining = $pipelining; - - $this->_socket = new Net_Socket(); - - /* Include the Auth_SASL package. If the package is not - * available, we disable the authentication methods that - * depend upon it. */ - if ((@include_once 'Auth/SASL.php') === false) { - $pos = array_search('DIGEST-MD5', $this->auth_methods); - unset($this->auth_methods[$pos]); - $pos = array_search('CRAM-MD5', $this->auth_methods); - unset($this->auth_methods[$pos]); - } - } - - /** - * Set the value of the debugging flag. - * - * @param boolean $debug New value for the debugging flag. - * - * @access public - * @since 1.1.0 - */ - function setDebug($debug) - { - $this->_debug = $debug; - } - - /** - * Send the given string of data to the server. - * - * @param string $data The string of data to send. - * - * @return mixed True on success or a PEAR_Error object on failure. - * - * @access private - * @since 1.1.0 - */ - function _send($data) - { - if ($this->_debug) { - echo "DEBUG: Send: $data\n"; - } - - if (PEAR::isError($error = $this->_socket->write($data))) { - return PEAR::raiseError('Failed to write to socket: ' . - $error->getMessage()); - } - - return true; - } - - /** - * Send a command to the server with an optional string of - * arguments. A carriage return / linefeed (CRLF) sequence will - * be appended to each command string before it is sent to the - * SMTP server - an error will be thrown if the command string - * already contains any newline characters. Use _send() for - * commands that must contain newlines. - * - * @param string $command The SMTP command to send to the server. - * @param string $args A string of optional arguments to append - * to the command. - * - * @return mixed The result of the _send() call. - * - * @access private - * @since 1.1.0 - */ - function _put($command, $args = '') - { - if (!empty($args)) { - $command .= ' ' . $args; - } - - if (strcspn($command, "\r\n") !== strlen($command)) { - return PEAR::raiseError('Commands cannot contain newlines'); - } - - return $this->_send($command . "\r\n"); - } - - /** - * Read a reply from the SMTP server. The reply consists of a response - * code and a response message. - * - * @param mixed $valid The set of valid response codes. These - * may be specified as an array of integer - * values or as a single integer value. - * @param bool $later Do not parse the response now, but wait - * until the last command in the pipelined - * command group - * - * @return mixed True if the server returned a valid response code or - * a PEAR_Error object is an error condition is reached. - * - * @access private - * @since 1.1.0 - * - * @see getResponse - */ - function _parseResponse($valid, $later = false) - { - $this->_code = -1; - $this->_arguments = array(); - - if ($later) { - $this->_pipelined_commands++; - return true; - } - - for ($i = 0; $i <= $this->_pipelined_commands; $i++) { - while ($line = $this->_socket->readLine()) { - if ($this->_debug) { - echo "DEBUG: Recv: $line\n"; - } - - /* If we receive an empty line, the connection has been closed. */ - if (empty($line)) { - $this->disconnect(); - return PEAR::raiseError('Connection was unexpectedly closed'); - } - - /* Read the code and store the rest in the arguments array. */ - $code = substr($line, 0, 3); - $this->_arguments[] = trim(substr($line, 4)); - - /* Check the syntax of the response code. */ - if (is_numeric($code)) { - $this->_code = (int)$code; - } else { - $this->_code = -1; - break; - } - - /* If this is not a multiline response, we're done. */ - if (substr($line, 3, 1) != '-') { - break; - } - } - } - - $this->_pipelined_commands = 0; - - /* Compare the server's response code with the valid code/codes. */ - if (is_int($valid) && ($this->_code === $valid)) { - return true; - } elseif (is_array($valid) && in_array($this->_code, $valid, true)) { - return true; - } - - return PEAR::raiseError('Invalid response code received from server', - $this->_code); - } - - /** - * Return a 2-tuple containing the last response from the SMTP server. - * - * @return array A two-element array: the first element contains the - * response code as an integer and the second element - * contains the response's arguments as a string. - * - * @access public - * @since 1.1.0 - */ - function getResponse() - { - return array($this->_code, join("\n", $this->_arguments)); - } - - /** - * Attempt to connect to the SMTP server. - * - * @param int $timeout The timeout value (in seconds) for the - * socket connection. - * @param bool $persistent Should a persistent socket connection - * be used? - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.0 - */ - function connect($timeout = null, $persistent = false) - { - $result = $this->_socket->connect($this->host, $this->port, - $persistent, $timeout); - if (PEAR::isError($result)) { - return PEAR::raiseError('Failed to connect socket: ' . - $result->getMessage()); - } - - if (PEAR::isError($error = $this->_parseResponse(220))) { - return $error; - } - if (PEAR::isError($error = $this->_negotiate())) { - return $error; - } - - return true; - } - - /** - * Attempt to disconnect from the SMTP server. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.0 - */ - function disconnect() - { - if (PEAR::isError($error = $this->_put('QUIT'))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(221))) { - return $error; - } - if (PEAR::isError($error = $this->_socket->disconnect())) { - return PEAR::raiseError('Failed to disconnect socket: ' . - $error->getMessage()); - } - - return true; - } - - /** - * Attempt to send the EHLO command and obtain a list of ESMTP - * extensions available, and failing that just send HELO. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * - * @access private - * @since 1.1.0 - */ - function _negotiate() - { - if (PEAR::isError($error = $this->_put('EHLO', $this->localhost))) { - return $error; - } - - if (PEAR::isError($this->_parseResponse(250))) { - /* If we receive a 503 response, we're already authenticated. */ - if ($this->_code === 503) { - return true; - } - - /* If the EHLO failed, try the simpler HELO command. */ - if (PEAR::isError($error = $this->_put('HELO', $this->localhost))) { - return $error; - } - if (PEAR::isError($this->_parseResponse(250))) { - return PEAR::raiseError('HELO was not accepted: ', $this->_code); - } - - return true; - } - - foreach ($this->_arguments as $argument) { - $verb = strtok($argument, ' '); - $arguments = substr($argument, strlen($verb) + 1, - strlen($argument) - strlen($verb) - 1); - $this->_esmtp[$verb] = $arguments; - } - - if (!isset($this->_esmtp['PIPELINING'])) { - $this->pipelining = false; - } - - return true; - } - - /** - * Returns the name of the best authentication method that the server - * has advertised. - * - * @return mixed Returns a string containing the name of the best - * supported authentication method or a PEAR_Error object - * if a failure condition is encountered. - * @access private - * @since 1.1.0 - */ - function _getBestAuthMethod() - { - $available_methods = explode(' ', $this->_esmtp['AUTH']); - - foreach ($this->auth_methods as $method) { - if (in_array($method, $available_methods)) { - return $method; - } - } - - return PEAR::raiseError('No supported authentication methods'); - } - - /** - * Attempt to do SMTP authentication. - * - * @param string The userid to authenticate as. - * @param string The password to authenticate with. - * @param string The requested authentication method. If none is - * specified, the best supported method will be used. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.0 - */ - function auth($uid, $pwd , $method = '') - { - if (empty($this->_esmtp['AUTH'])) { - if (version_compare(PHP_VERSION, '5.1.0', '>=')) { - if (!isset($this->_esmtp['STARTTLS'])) { - return PEAR::raiseError('SMTP server does not support authentication'); - } - if (PEAR::isError($result = $this->_put('STARTTLS'))) { - return $result; - } - if (PEAR::isError($result = $this->_parseResponse(220))) { - return $result; - } - if (PEAR::isError($result = $this->_socket->enableCrypto(true, STREAM_CRYPTO_METHOD_TLS_CLIENT))) { - return $result; - } elseif ($result !== true) { - return PEAR::raiseError('STARTTLS failed'); - } - - /* Send EHLO again to recieve the AUTH string from the - * SMTP server. */ - $this->_negotiate(); - if (empty($this->_esmtp['AUTH'])) { - return PEAR::raiseError('SMTP server does not support authentication'); - } - } else { - return PEAR::raiseError('SMTP server does not support authentication'); - } - } - - /* If no method has been specified, get the name of the best - * supported method advertised by the SMTP server. */ - if (empty($method)) { - if (PEAR::isError($method = $this->_getBestAuthMethod())) { - /* Return the PEAR_Error object from _getBestAuthMethod(). */ - return $method; - } - } else { - $method = strtoupper($method); - if (!in_array($method, $this->auth_methods)) { - return PEAR::raiseError("$method is not a supported authentication method"); - } - } - - switch ($method) { - case 'DIGEST-MD5': - $result = $this->_authDigest_MD5($uid, $pwd); - break; - - case 'CRAM-MD5': - $result = $this->_authCRAM_MD5($uid, $pwd); - break; - - case 'LOGIN': - $result = $this->_authLogin($uid, $pwd); - break; - - case 'PLAIN': - $result = $this->_authPlain($uid, $pwd); - break; - - default: - $result = PEAR::raiseError("$method is not a supported authentication method"); - break; - } - - /* If an error was encountered, return the PEAR_Error object. */ - if (PEAR::isError($result)) { - return $result; - } - - return true; - } - - /** - * Authenticates the user using the DIGEST-MD5 method. - * - * @param string The userid to authenticate as. - * @param string The password to authenticate with. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access private - * @since 1.1.0 - */ - function _authDigest_MD5($uid, $pwd) - { - if (PEAR::isError($error = $this->_put('AUTH', 'DIGEST-MD5'))) { - return $error; - } - /* 334: Continue authentication request */ - if (PEAR::isError($error = $this->_parseResponse(334))) { - /* 503: Error: already authenticated */ - if ($this->_code === 503) { - return true; - } - return $error; - } - - $challenge = base64_decode($this->_arguments[0]); - $digest = &Auth_SASL::factory('digestmd5'); - $auth_str = base64_encode($digest->getResponse($uid, $pwd, $challenge, - $this->host, "smtp")); - - if (PEAR::isError($error = $this->_put($auth_str))) { - return $error; - } - /* 334: Continue authentication request */ - if (PEAR::isError($error = $this->_parseResponse(334))) { - return $error; - } - - /* We don't use the protocol's third step because SMTP doesn't - * allow subsequent authentication, so we just silently ignore - * it. */ - if (PEAR::isError($error = $this->_put(''))) { - return $error; - } - /* 235: Authentication successful */ - if (PEAR::isError($error = $this->_parseResponse(235))) { - return $error; - } - } - - /** - * Authenticates the user using the CRAM-MD5 method. - * - * @param string The userid to authenticate as. - * @param string The password to authenticate with. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access private - * @since 1.1.0 - */ - function _authCRAM_MD5($uid, $pwd) - { - if (PEAR::isError($error = $this->_put('AUTH', 'CRAM-MD5'))) { - return $error; - } - /* 334: Continue authentication request */ - if (PEAR::isError($error = $this->_parseResponse(334))) { - /* 503: Error: already authenticated */ - if ($this->_code === 503) { - return true; - } - return $error; - } - - $challenge = base64_decode($this->_arguments[0]); - $cram = &Auth_SASL::factory('crammd5'); - $auth_str = base64_encode($cram->getResponse($uid, $pwd, $challenge)); - - if (PEAR::isError($error = $this->_put($auth_str))) { - return $error; - } - - /* 235: Authentication successful */ - if (PEAR::isError($error = $this->_parseResponse(235))) { - return $error; - } - } - - /** - * Authenticates the user using the LOGIN method. - * - * @param string The userid to authenticate as. - * @param string The password to authenticate with. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access private - * @since 1.1.0 - */ - function _authLogin($uid, $pwd) - { - if (PEAR::isError($error = $this->_put('AUTH', 'LOGIN'))) { - return $error; - } - /* 334: Continue authentication request */ - if (PEAR::isError($error = $this->_parseResponse(334))) { - /* 503: Error: already authenticated */ - if ($this->_code === 503) { - return true; - } - return $error; - } - - if (PEAR::isError($error = $this->_put(base64_encode($uid)))) { - return $error; - } - /* 334: Continue authentication request */ - if (PEAR::isError($error = $this->_parseResponse(334))) { - return $error; - } - - if (PEAR::isError($error = $this->_put(base64_encode($pwd)))) { - return $error; - } - - /* 235: Authentication successful */ - if (PEAR::isError($error = $this->_parseResponse(235))) { - return $error; - } - - return true; - } - - /** - * Authenticates the user using the PLAIN method. - * - * @param string The userid to authenticate as. - * @param string The password to authenticate with. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access private - * @since 1.1.0 - */ - function _authPlain($uid, $pwd) - { - if (PEAR::isError($error = $this->_put('AUTH', 'PLAIN'))) { - return $error; - } - /* 334: Continue authentication request */ - if (PEAR::isError($error = $this->_parseResponse(334))) { - /* 503: Error: already authenticated */ - if ($this->_code === 503) { - return true; - } - return $error; - } - - $auth_str = base64_encode(chr(0) . $uid . chr(0) . $pwd); - - if (PEAR::isError($error = $this->_put($auth_str))) { - return $error; - } - - /* 235: Authentication successful */ - if (PEAR::isError($error = $this->_parseResponse(235))) { - return $error; - } - - return true; - } - - /** - * Send the HELO command. - * - * @param string The domain name to say we are. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.0 - */ - function helo($domain) - { - if (PEAR::isError($error = $this->_put('HELO', $domain))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(250))) { - return $error; - } - - return true; - } - - /** - * Return the list of SMTP service extensions advertised by the server. - * - * @return array The list of SMTP service extensions. - * @access public - * @since 1.3 - */ - function getServiceExtensions() - { - return $this->_esmtp; - } - - /** - * Send the MAIL FROM: command. - * - * @param string $sender The sender (reverse path) to set. - * @param string $params String containing additional MAIL parameters, - * such as the NOTIFY flags defined by RFC 1891 - * or the VERP protocol. - * - * If $params is an array, only the 'verp' option - * is supported. If 'verp' is true, the XVERP - * parameter is appended to the MAIL command. If - * the 'verp' value is a string, the full - * XVERP=value parameter is appended. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.0 - */ - function mailFrom($sender, $params = null) - { - $args = "FROM:<$sender>"; - - /* Support the deprecated array form of $params. */ - if (is_array($params) && isset($params['verp'])) { - /* XVERP */ - if ($params['verp'] === true) { - $args .= ' XVERP'; - - /* XVERP=something */ - } elseif (trim($params['verp'])) { - $args .= ' XVERP=' . $params['verp']; - } - } elseif (is_string($params)) { - $args .= ' ' . $params; - } - - if (PEAR::isError($error = $this->_put('MAIL', $args))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) { - return $error; - } - - return true; - } - - /** - * Send the RCPT TO: command. - * - * @param string $recipient The recipient (forward path) to add. - * @param string $params String containing additional RCPT parameters, - * such as the NOTIFY flags defined by RFC 1891. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * - * @access public - * @since 1.0 - */ - function rcptTo($recipient, $params = null) - { - $args = "TO:<$recipient>"; - if (is_string($params)) { - $args .= ' ' . $params; - } - - if (PEAR::isError($error = $this->_put('RCPT', $args))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(array(250, 251), $this->pipelining))) { - return $error; - } - - return true; - } - - /** - * Quote the data so that it meets SMTP standards. - * - * This is provided as a separate public function to facilitate - * easier overloading for the cases where it is desirable to - * customize the quoting behavior. - * - * @param string $data The message text to quote. The string must be passed - * by reference, and the text will be modified in place. - * - * @access public - * @since 1.2 - */ - function quotedata(&$data) - { - /* Change Unix (\n) and Mac (\r) linefeeds into - * Internet-standard CRLF (\r\n) linefeeds. */ - $data = preg_replace(array('/(?<!\r)\n/','/\r(?!\n)/'), "\r\n", $data); - - /* Because a single leading period (.) signifies an end to the - * data, legitimate leading periods need to be "doubled" - * (e.g. '..'). */ - $data = str_replace("\n.", "\n..", $data); - } - - /** - * Send the DATA command. - * - * @param string $data The message body to send. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.0 - */ - function data($data) - { - /* RFC 1870, section 3, subsection 3 states "a value of zero - * indicates that no fixed maximum message size is in force". - * Furthermore, it says that if "the parameter is omitted no - * information is conveyed about the server's fixed maximum - * message size". */ - if (isset($this->_esmtp['SIZE']) && ($this->_esmtp['SIZE'] > 0)) { - if (strlen($data) >= $this->_esmtp['SIZE']) { - $this->disconnect(); - return PEAR::raiseError('Message size excedes the server limit'); - } - } - - /* Quote the data based on the SMTP standards. */ - $this->quotedata($data); - - if (PEAR::isError($error = $this->_put('DATA'))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(354))) { - return $error; - } - - if (PEAR::isError($result = $this->_send($data . "\r\n.\r\n"))) { - return $result; - } - if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) { - return $error; - } - - return true; - } - - /** - * Send the SEND FROM: command. - * - * @param string The reverse path to send. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.2.6 - */ - function sendFrom($path) - { - if (PEAR::isError($error = $this->_put('SEND', "FROM:<$path>"))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) { - return $error; - } - - return true; - } - - /** - * Backwards-compatibility wrapper for sendFrom(). - * - * @param string The reverse path to send. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * - * @access public - * @since 1.0 - * @deprecated 1.2.6 - */ - function send_from($path) - { - return sendFrom($path); - } - - /** - * Send the SOML FROM: command. - * - * @param string The reverse path to send. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.2.6 - */ - function somlFrom($path) - { - if (PEAR::isError($error = $this->_put('SOML', "FROM:<$path>"))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) { - return $error; - } - - return true; - } - - /** - * Backwards-compatibility wrapper for somlFrom(). - * - * @param string The reverse path to send. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * - * @access public - * @since 1.0 - * @deprecated 1.2.6 - */ - function soml_from($path) - { - return somlFrom($path); - } - - /** - * Send the SAML FROM: command. - * - * @param string The reverse path to send. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.2.6 - */ - function samlFrom($path) - { - if (PEAR::isError($error = $this->_put('SAML', "FROM:<$path>"))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) { - return $error; - } - - return true; - } - - /** - * Backwards-compatibility wrapper for samlFrom(). - * - * @param string The reverse path to send. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * - * @access public - * @since 1.0 - * @deprecated 1.2.6 - */ - function saml_from($path) - { - return samlFrom($path); - } - - /** - * Send the RSET command. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.0 - */ - function rset() - { - if (PEAR::isError($error = $this->_put('RSET'))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(250, $this->pipelining))) { - return $error; - } - - return true; - } - - /** - * Send the VRFY command. - * - * @param string The string to verify - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.0 - */ - function vrfy($string) - { - /* Note: 251 is also a valid response code */ - if (PEAR::isError($error = $this->_put('VRFY', $string))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(array(250, 252)))) { - return $error; - } - - return true; - } - - /** - * Send the NOOP command. - * - * @return mixed Returns a PEAR_Error with an error message on any - * kind of failure, or true on success. - * @access public - * @since 1.0 - */ - function noop() - { - if (PEAR::isError($error = $this->_put('NOOP'))) { - return $error; - } - if (PEAR::isError($error = $this->_parseResponse(250))) { - return $error; - } - - return true; - } - - /** - * Backwards-compatibility method. identifySender()'s functionality is - * now handled internally. - * - * @return boolean This method always return true. - * - * @access public - * @since 1.0 - */ - function identifySender() - { - return true; - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/Mail/net/Socket.php b/src/vitis/vas/rest/class/PEAR/Mail/net/Socket.php deleted file mode 100755 index 845ce5e9fe0cfd10c358c28e05537fa302d2e9c2..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/net/Socket.php +++ /dev/null @@ -1,592 +0,0 @@ -<?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.0 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Authors: Stig Bakken <ssb@php.net> | -// | Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id: Socket.php,v 1.38 2008/02/15 18:24:17 chagenbu Exp $ - -require_once 'PEAR/PEAR.php'; - -define('NET_SOCKET_READ', 1); -define('NET_SOCKET_WRITE', 2); -define('NET_SOCKET_ERROR', 4); - -/** - * Generalized Socket class. - * - * @version 1.1 - * @author Stig Bakken <ssb@php.net> - * @author Chuck Hagenbuch <chuck@horde.org> - */ -class Net_Socket extends PEAR { - - /** - * Socket file pointer. - * @var resource $fp - */ - var $fp = null; - - /** - * Whether the socket is blocking. Defaults to true. - * @var boolean $blocking - */ - var $blocking = true; - - /** - * Whether the socket is persistent. Defaults to false. - * @var boolean $persistent - */ - var $persistent = false; - - /** - * The IP address to connect to. - * @var string $addr - */ - var $addr = ''; - - /** - * The port number to connect to. - * @var integer $port - */ - var $port = 0; - - /** - * Number of seconds to wait on socket connections before assuming - * there's no more data. Defaults to no timeout. - * @var integer $timeout - */ - var $timeout = false; - - /** - * Number of bytes to read at a time in readLine() and - * readAll(). Defaults to 2048. - * @var integer $lineLength - */ - var $lineLength = 2048; - - /** - * Connect to the specified port. If called when the socket is - * already connected, it disconnects and connects again. - * - * @param string $addr IP address or host name. - * @param integer $port TCP port number. - * @param boolean $persistent (optional) Whether the connection is - * persistent (kept open between requests - * by the web server). - * @param integer $timeout (optional) How long to wait for data. - * @param array $options See options for stream_context_create. - * - * @access public - * - * @return boolean | PEAR_Error True on success or a PEAR_Error on failure. - */ - function connect($addr, $port = 0, $persistent = null, $timeout = null, $options = null) - { - if (is_resource($this->fp)) { - @fclose($this->fp); - $this->fp = null; - } - - if (!$addr) { - return $this->raiseError('$addr cannot be empty'); - } elseif (strspn($addr, '.0123456789') == strlen($addr) || - strstr($addr, '/') !== false) { - $this->addr = $addr; - } else { - $this->addr = @gethostbyname($addr); - } - - $this->port = $port % 65536; - - if ($persistent !== null) { - $this->persistent = $persistent; - } - - if ($timeout !== null) { - $this->timeout = $timeout; - } - - $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen'; - $errno = 0; - $errstr = ''; - $old_track_errors = @ini_set('track_errors', 1); - if ($options && function_exists('stream_context_create')) { - if ($this->timeout) { - $timeout = $this->timeout; - } else { - $timeout = 0; - } - $context = stream_context_create($options); - - // Since PHP 5 fsockopen doesn't allow context specification - if (function_exists('stream_socket_client')) { - $flags = $this->persistent ? STREAM_CLIENT_PERSISTENT : STREAM_CLIENT_CONNECT; - $addr = $this->addr . ':' . $this->port; - $fp = stream_socket_client($addr, $errno, $errstr, $timeout, $flags, $context); - } else { - $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout, $context); - } - } else { - if ($this->timeout) { - $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $this->timeout); - } else { - $fp = @$openfunc($this->addr, $this->port, $errno, $errstr); - } - } - - if (!$fp) { - if ($errno == 0 && isset($php_errormsg)) { - $errstr = $php_errormsg; - } - @ini_set('track_errors', $old_track_errors); - return $this->raiseError($errstr, $errno); - } - - @ini_set('track_errors', $old_track_errors); - $this->fp = $fp; - - return $this->setBlocking($this->blocking); - } - - /** - * Disconnects from the peer, closes the socket. - * - * @access public - * @return mixed true on success or a PEAR_Error instance otherwise - */ - function disconnect() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - @fclose($this->fp); - $this->fp = null; - return true; - } - - /** - * Find out if the socket is in blocking mode. - * - * @access public - * @return boolean The current blocking mode. - */ - function isBlocking() - { - return $this->blocking; - } - - /** - * Sets whether the socket connection should be blocking or - * not. A read call to a non-blocking socket will return immediately - * if there is no data available, whereas it will block until there - * is data for blocking sockets. - * - * @param boolean $mode True for blocking sockets, false for nonblocking. - * @access public - * @return mixed true on success or a PEAR_Error instance otherwise - */ - function setBlocking($mode) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $this->blocking = $mode; - socket_set_blocking($this->fp, $this->blocking); - return true; - } - - /** - * Sets the timeout value on socket descriptor, - * expressed in the sum of seconds and microseconds - * - * @param integer $seconds Seconds. - * @param integer $microseconds Microseconds. - * @access public - * @return mixed true on success or a PEAR_Error instance otherwise - */ - function setTimeout($seconds, $microseconds) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return socket_set_timeout($this->fp, $seconds, $microseconds); - } - - /** - * Sets the file buffering size on the stream. - * See php's stream_set_write_buffer for more information. - * - * @param integer $size Write buffer size. - * @access public - * @return mixed on success or an PEAR_Error object otherwise - */ - function setWriteBuffer($size) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $returned = stream_set_write_buffer($this->fp, $size); - if ($returned == 0) { - return true; - } - return $this->raiseError('Cannot set write buffer.'); - } - - /** - * Returns information about an existing socket resource. - * Currently returns four entries in the result array: - * - * <p> - * timed_out (bool) - The socket timed out waiting for data<br> - * blocked (bool) - The socket was blocked<br> - * eof (bool) - Indicates EOF event<br> - * unread_bytes (int) - Number of bytes left in the socket buffer<br> - * </p> - * - * @access public - * @return mixed Array containing information about existing socket resource or a PEAR_Error instance otherwise - */ - function getStatus() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return socket_get_status($this->fp); - } - - /** - * Get a specified line of data - * - * @access public - * @return $size bytes of data from the socket, or a PEAR_Error if - * not connected. - */ - function gets($size) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return @fgets($this->fp, $size); - } - - /** - * Read a specified amount of data. This is guaranteed to return, - * and has the added benefit of getting everything in one fread() - * chunk; if you know the size of the data you're getting - * beforehand, this is definitely the way to go. - * - * @param integer $size The number of bytes to read from the socket. - * @access public - * @return $size bytes of data from the socket, or a PEAR_Error if - * not connected. - */ - function read($size) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return @fread($this->fp, $size); - } - - /** - * Write a specified amount of data. - * - * @param string $data Data to write. - * @param integer $blocksize Amount of data to write at once. - * NULL means all at once. - * - * @access public - * @return mixed If the socket is not connected, returns an instance of PEAR_Error - * If the write succeeds, returns the number of bytes written - * If the write fails, returns false. - */ - function write($data, $blocksize = null) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - if (is_null($blocksize) && !OS_WINDOWS) { - return @fwrite($this->fp, $data); - } else { - if (is_null($blocksize)) { - $blocksize = 1024; - } - - $pos = 0; - $size = strlen($data); - while ($pos < $size) { - $written = @fwrite($this->fp, substr($data, $pos, $blocksize)); - if ($written === false) { - return false; - } - $pos += $written; - } - - return $pos; - } - } - - /** - * Write a line of data to the socket, followed by a trailing "\r\n". - * - * @access public - * @return mixed fputs result, or an error - */ - function writeLine($data) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return fwrite($this->fp, $data . "\r\n"); - } - - /** - * Tests for end-of-file on a socket descriptor. - * - * Also returns true if the socket is disconnected. - * - * @access public - * @return bool - */ - function eof() - { - return (!is_resource($this->fp) || feof($this->fp)); - } - - /** - * Reads a byte of data - * - * @access public - * @return 1 byte of data from the socket, or a PEAR_Error if - * not connected. - */ - function readByte() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return ord(@fread($this->fp, 1)); - } - - /** - * Reads a word of data - * - * @access public - * @return 1 word of data from the socket, or a PEAR_Error if - * not connected. - */ - function readWord() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $buf = @fread($this->fp, 2); - return (ord($buf[0]) + (ord($buf[1]) << 8)); - } - - /** - * Reads an int of data - * - * @access public - * @return integer 1 int of data from the socket, or a PEAR_Error if - * not connected. - */ - function readInt() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $buf = @fread($this->fp, 4); - return (ord($buf[0]) + (ord($buf[1]) << 8) + - (ord($buf[2]) << 16) + (ord($buf[3]) << 24)); - } - - /** - * Reads a zero-terminated string of data - * - * @access public - * @return string, or a PEAR_Error if - * not connected. - */ - function readString() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $string = ''; - while (($char = @fread($this->fp, 1)) != "\x00") { - $string .= $char; - } - return $string; - } - - /** - * Reads an IP Address and returns it in a dot formatted string - * - * @access public - * @return Dot formatted string, or a PEAR_Error if - * not connected. - */ - function readIPAddress() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $buf = @fread($this->fp, 4); - return sprintf('%d.%d.%d.%d', ord($buf[0]), ord($buf[1]), - ord($buf[2]), ord($buf[3])); - } - - /** - * Read until either the end of the socket or a newline, whichever - * comes first. Strips the trailing newline from the returned data. - * - * @access public - * @return All available data up to a newline, without that - * newline, or until the end of the socket, or a PEAR_Error if - * not connected. - */ - function readLine() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $line = ''; - $timeout = time() + $this->timeout; - while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) { - $line .= @fgets($this->fp, $this->lineLength); - if (substr($line, -1) == "\n") { - return rtrim($line, "\r\n"); - } - } - return $line; - } - - /** - * Read until the socket closes, or until there is no more data in - * the inner PHP buffer. If the inner buffer is empty, in blocking - * mode we wait for at least 1 byte of data. Therefore, in - * blocking mode, if there is no data at all to be read, this - * function will never exit (unless the socket is closed on the - * remote end). - * - * @access public - * - * @return string All data until the socket closes, or a PEAR_Error if - * not connected. - */ - function readAll() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $data = ''; - while (!feof($this->fp)) { - $data .= @fread($this->fp, $this->lineLength); - } - return $data; - } - - /** - * Runs the equivalent of the select() system call on the socket - * with a timeout specified by tv_sec and tv_usec. - * - * @param integer $state Which of read/write/error to check for. - * @param integer $tv_sec Number of seconds for timeout. - * @param integer $tv_usec Number of microseconds for timeout. - * - * @access public - * @return False if select fails, integer describing which of read/write/error - * are ready, or PEAR_Error if not connected. - */ - function select($state, $tv_sec, $tv_usec = 0) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $read = null; - $write = null; - $except = null; - if ($state & NET_SOCKET_READ) { - $read[] = $this->fp; - } - if ($state & NET_SOCKET_WRITE) { - $write[] = $this->fp; - } - if ($state & NET_SOCKET_ERROR) { - $except[] = $this->fp; - } - if (false === ($sr = stream_select($read, $write, $except, $tv_sec, $tv_usec))) { - return false; - } - - $result = 0; - if (count($read)) { - $result |= NET_SOCKET_READ; - } - if (count($write)) { - $result |= NET_SOCKET_WRITE; - } - if (count($except)) { - $result |= NET_SOCKET_ERROR; - } - return $result; - } - - /** - * Turns encryption on/off on a connected socket. - * - * @param bool $enabled Set this parameter to true to enable encryption - * and false to disable encryption. - * @param integer $type Type of encryption. See - * http://se.php.net/manual/en/function.stream-socket-enable-crypto.php for values. - * - * @access public - * @return false on error, true on success and 0 if there isn't enough data and the - * user should try again (non-blocking sockets only). A PEAR_Error object - * is returned if the socket is not connected - */ - function enableCrypto($enabled, $type) - { - if (version_compare(phpversion(), "5.1.0", ">=")) { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - return @stream_socket_enable_crypto($this->fp, $enabled, $type); - } else { - return $this->raiseError('Net_Socket::enableCrypto() requires php version >= 5.1.0'); - } - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/Mail/net/docs/guide.txt b/src/vitis/vas/rest/class/PEAR/Mail/net/docs/guide.txt deleted file mode 100755 index 04b401c19ebb03754c433e10ca0df2af1af010e6..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/net/docs/guide.txt +++ /dev/null @@ -1,211 +0,0 @@ -====================== - The Net_SMTP Package -====================== - --------------------- - User Documentation --------------------- - -:Author: Jon Parise -:Contact: jon@php.net -:Date: $Date: 2005/03/04 03:35:45 $ -:Revision: $Revision: 1.5 $ - -.. contents:: Table of Contents -.. section-numbering:: - -Dependencies -============ - -The `PEAR_Error` Class ----------------------- - -The Net_SMTP package uses the `PEAR_Error`_ class for all of its `error -handling`_. - -The `Net_Socket` Package ------------------------- - -The Net_Socket_ package is used as the basis for all network communications. - -The `Auth_SASL` Package ------------------------ - -The `Auth_SASL`_ package is an optional dependency. If it is available, the -Net_SMTP package will be able to support the DIGEST-MD5_ and CRAM-MD5_ SMTP -authentication methods. Otherwise, only the LOGIN_ and PLAIN_ methods will -be available. - -Error Handling -============== - -All of the Net_SMTP class's public methods return a PEAR_Error_ object if an -error occurs. The standard way to check for a PEAR_Error object is by using -`PEAR::isError()`_:: - - if (PEAR::isError($error = $smtp->connect())) { - die($error->getMessage()); - } - -.. _PEAR::isError(): http://pear.php.net/manual/en/core.pear.pear.iserror.php - -SMTP Authentication -=================== - -The Net_SMTP package supports the SMTP authentication standard (as defined -by RFC-2554_). The Net_SMTP package supports the following authentication -methods, in order of preference: - -.. _RFC-2554: http://www.ietf.org/rfc/rfc2554.txt - -DIGEST-MD5 ----------- - -The DIGEST-MD5 authentication method uses `RSA Data Security Inc.`_'s MD5 -Message Digest algorithm. It is considered the most secure method of SMTP -authentication. - -**Note:** The DIGEST-MD5 authentication method is only supported if the -AUTH_SASL_ package is available. - -.. _RSA Data Security Inc.: http://www.rsasecurity.com/ - -CRAM-MD5 --------- - -The CRAM-MD5 authentication method has been superseded by the DIGEST-MD5_ -method in terms of security. It is provided here for compatibility with -older SMTP servers that may not support the newer DIGEST-MD5 algorithm. - -**Note:** The CRAM-MD5 authentication method is only supported if the -AUTH_SASL_ package is available. - -LOGIN ------ - -The LOGIN authentication method encrypts the user's password using the -Base64_ encoding scheme. Because decrypting a Base64-encoded string is -trivial, LOGIN is not considered a secure authentication method and should -be avoided. - -.. _Base64: http://www.php.net/manual/en/function.base64-encode.php - -PLAIN ------ - -The PLAIN authentication method sends the user's password in plain text. -This method of authentication is not secure and should be avoided. - -Secure Connections -================== - -If `secure socket transports`_ have been enabled in PHP, it is possible to -establish a secure connection to the remote SMTP server:: - - $smtp = new Net_SMTP('ssl://mail.example.com', 465); - -This example connects to `mail.example.com` on port 465 (a common SMTPS -port) using the `ssl://` transport. - -.. _secure socket transports: http://www.php.net/transports - -Data Quoting -============ - -By default, all outbound string data is quoted in accordance with SMTP -standards. This means that all native Unix (`\\n`) and Mac (`\\r`) line -endings are converted to Internet-standard CRLF (`\\r\\n`) line endings. -Also, because the SMTP protocol uses a single leading period (`.`) to signal -an end to the message data, single leading periods in the original data -string are "doubled" (e.g. "`..`"). - -These string transformation can be expensive when large blocks of data are -involved. For example, the Net_SMTP package is not aware of MIME parts (it -just sees the MIME message as one big string of characters), so it is not -able to skip non-text attachments when searching for characters that may -need to be quoted. - -Because of this, it is possible to extend the Net_SMTP class in order to -implement your own custom quoting routine. Just create a new class based on -the Net_SMTP class and reimplement the `quotedata()` method:: - - require 'Net_SMTP.php'; - - class Net_SMTP_custom extends Net_SMTP - { - function quotedata($data) - { - /* Perform custom data quoting */ - } - } - -Note that the `$data` parameter will be passed to the `quotedata()` function -`by reference`_. This means that you can operate directly on `$data`. It -also the overhead of copying a large `$data` string to and from the -`quotedata()` method. - -.. _by reference: http://www.php.net/manual/en/language.references.pass.php - -Debugging -========= - -The Net_SMTP package contains built-in debugging output routines (disabled -by default). Debugging output must be explicitly enabled via the setDebug() -method:: - - $smtp->setDebug(true); - -The debugging messages will be sent to the standard output stream. - -Examples -======== - -Basic Use ---------- - -The following script demonstrates how a simple email message can be sent -using the Net_SMTP package:: - - require 'Net/SMTP.php'; - - $host = 'mail.example.com'; - $from = 'user@example.com'; - $rcpt = array('recipient1@example.com', 'recipient2@example.com'); - $subj = "Subject: Test Message\n"; - $body = "Body Line 1\nBody Line 2"; - - /* Create a new Net_SMTP object. */ - if (! ($smtp = new Net_SMTP($host))) { - die("Unable to instantiate Net_SMTP object\n"); - } - - /* Connect to the SMTP server. */ - if (PEAR::isError($e = $smtp->connect())) { - die($e->getMessage() . "\n"); - } - - /* Send the 'MAIL FROM:' SMTP command. */ - if (PEAR::isError($smtp->mailFrom($from))) { - die("Unable to set sender to <$from>\n"); - } - - /* Address the message to each of the recipients. */ - foreach ($rcpt as $to) { - if (PEAR::isError($res = $smtp->rcptTo($to))) { - die("Unable to add recipient <$to>: " . $res->getMessage() . "\n"); - } - } - - /* Set the body of the message. */ - if (PEAR::isError($smtp->data($subj . "\r\n" . $body))) { - die("Unable to send data\n"); - } - - /* Disconnect from the SMTP server. */ - $smtp->disconnect(); - -.. _PEAR_Error: http://pear.php.net/manual/en/core.pear.pear-error.php -.. _Net_Socket: http://pear.php.net/package/Net_Socket -.. _Auth_SASL: http://pear.php.net/package/Auth_SASL - -.. vim: tabstop=4 shiftwidth=4 softtabstop=4 expandtab textwidth=76: diff --git a/src/vitis/vas/rest/class/PEAR/Mail/net/examples/basic.php b/src/vitis/vas/rest/class/PEAR/Mail/net/examples/basic.php deleted file mode 100755 index 07a105878213e4fc7975e9d0b17e54b918d3dc8f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/net/examples/basic.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -require 'Net/SMTP.php'; - -$host = 'mail.example.com'; -$from = 'user@example.com'; -$rcpt = array('recipient1@example.com', 'recipient2@example.com'); -$subj = "Subject: Test Message\n"; -$body = "Body Line 1\nBody Line 2"; - -/* Create a new Net_SMTP object. */ -if (! ($smtp = new Net_SMTP($host))) { - die("Unable to instantiate Net_SMTP object\n"); -} - -/* Connect to the SMTP server. */ -if (PEAR::isError($e = $smtp->connect())) { - die($e->getMessage() . "\n"); -} - -/* Send the 'MAIL FROM:' SMTP command. */ -if (PEAR::isError($smtp->mailFrom($from))) { - die("Unable to set sender to <$from>\n"); -} - -/* Address the message to each of the recipients. */ -foreach ($rcpt as $to) { - if (PEAR::isError($res = $smtp->rcptTo($to))) { - die("Unable to add recipient <$to>: " . $res->getMessage() . "\n"); - } -} - -/* Set the body of the message. */ -if (PEAR::isError($smtp->data($subj . "\r\n" . $body))) { - die("Unable to send data\n"); -} - -/* Disconnect from the SMTP server. */ -$smtp->disconnect(); diff --git a/src/vitis/vas/rest/class/PEAR/Mail/net/tests/auth.phpt b/src/vitis/vas/rest/class/PEAR/Mail/net/tests/auth.phpt deleted file mode 100755 index 3b80bf813c02b3957f6b68fb95298eb63bb1adf6..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/net/tests/auth.phpt +++ /dev/null @@ -1,40 +0,0 @@ ---TEST-- -Net_SMTP: SMTP Authentication ---SKIPIF-- -<?php if (!@include('config.php')) die("skip\n"); ---FILE-- -<?php - -require_once 'Net/SMTP.php'; -require_once 'config.php'; - -if (! ($smtp = new Net_SMTP(TEST_HOSTNAME, TEST_PORT, TEST_LOCALHOST))) { - die("Unable to instantiate Net_SMTP object\n"); -} - -if (PEAR::isError($e = $smtp->connect())) { - die($e->getMessage() . "\n"); -} - -if (PEAR::isError($e = $smtp->auth(TEST_AUTH_USER, TEST_AUTH_PASS))) { -} - -if (PEAR::isError($smtp->mailFrom(TEST_FROM))) { - die('Unable to set sender to <' . TEST_FROM . ">\n"); -} - -if (PEAR::isError($res = $smtp->rcptTo(TEST_TO))) { - die('Unable to add recipient <' . TEST_TO . '>: ' . - $res->getMessage() . "\n"); -} - -if (PEAR::isError($smtp->data(TEST_SUBJECT . "\r\n" . TEST_BODY))) { - die("Unable to send data\n"); -} - -$smtp->disconnect(); - -echo 'Success!'; - ---EXPECT-- -Success! diff --git a/src/vitis/vas/rest/class/PEAR/Mail/net/tests/basic.phpt b/src/vitis/vas/rest/class/PEAR/Mail/net/tests/basic.phpt deleted file mode 100755 index 94734d86656ab0bfdd754148de3c59d111f18fa4..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/net/tests/basic.phpt +++ /dev/null @@ -1,37 +0,0 @@ ---TEST-- -Net_SMTP: Basic Functionality ---SKIPIF-- -<?php if (!@include('config.php')) die("skip\n"); ---FILE-- -<?php - -require_once 'Net/SMTP.php'; -require_once 'config.php'; - -if (! ($smtp = new Net_SMTP(TEST_HOSTNAME, TEST_PORT, TEST_LOCALHOST))) { - die("Unable to instantiate Net_SMTP object\n"); -} - -if (PEAR::isError($e = $smtp->connect())) { - die($e->getMessage() . "\n"); -} - -if (PEAR::isError($smtp->mailFrom(TEST_FROM))) { - die('Unable to set sender to <' . TEST_FROM . ">\n"); -} - -if (PEAR::isError($res = $smtp->rcptTo(TEST_TO))) { - die('Unable to add recipient <' . TEST_TO . '>: ' . - $res->getMessage() . "\n"); -} - -if (PEAR::isError($smtp->data(TEST_SUBJECT . "\r\n" . TEST_BODY))) { - die("Unable to send data\n"); -} - -$smtp->disconnect(); - -echo 'Success!'; - ---EXPECT-- -Success! diff --git a/src/vitis/vas/rest/class/PEAR/Mail/net/tests/config.php.dist b/src/vitis/vas/rest/class/PEAR/Mail/net/tests/config.php.dist deleted file mode 100755 index fe4a0c97510f34e9c0c912282f3acf4da513ff3e..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/net/tests/config.php.dist +++ /dev/null @@ -1,15 +0,0 @@ -<?php -/** - * Copy this file to config.php and customize the following values to - * suit your configuration. - */ - -define('TEST_HOSTNAME', 'localhost'); -define('TEST_PORT', 25); -define('TEST_LOCALHOST', 'localhost'); -define('TEST_AUTH_USER', 'jon'); -define('TEST_AUTH_PASS', 'secret'); -define('TEST_FROM', 'from@example.com'); -define('TEST_TO', 'to@example.com'); -define('TEST_SUBJECT', 'Test Subject'); -define('TEST_BODY', 'Test Body'); diff --git a/src/vitis/vas/rest/class/PEAR/Mail/net/tests/quotedata.phpt b/src/vitis/vas/rest/class/PEAR/Mail/net/tests/quotedata.phpt deleted file mode 100755 index 518d4f69e451e4e870a461ec8fda7c17244d633b..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/net/tests/quotedata.phpt +++ /dev/null @@ -1,62 +0,0 @@ ---TEST-- -Net_SMTP: quotedata() \n | \r => \r\n replacement ---FILE-- -<?php - -error_reporting(E_ALL); -require_once 'Net/SMTP.php'; - -$tests = array( - "\n" => "\r\n", - "\r\n" => "\r\n", - "\nxx" => "\r\nxx", - "xx\n" => "xx\r\n", - "xx\nxx" => "xx\r\nxx", - "\n\nxx" => "\r\n\r\nxx", - "xx\n\nxx" => "xx\r\n\r\nxx", - "xx\n\n" => "xx\r\n\r\n", - "\r\nxx" => "\r\nxx", - "xx\r\n" => "xx\r\n", - "xx\r\nxx" => "xx\r\nxx", - "\r\n\r\nxx" => "\r\n\r\nxx", - "xx\r\n\r\nxx" => "xx\r\n\r\nxx", - "xx\r\n\r\n" => "xx\r\n\r\n", - "\r\n\nxx" => "\r\n\r\nxx", - "\n\r\nxx" => "\r\n\r\nxx", - "xx\r\n\nxx" => "xx\r\n\r\nxx", - "xx\n\r\nxx" => "xx\r\n\r\nxx", - "xx\r\n\n" => "xx\r\n\r\n", - "xx\n\r\n" => "xx\r\n\r\n", - "\r" => "\r\n", - "\rxx" => "\r\nxx", - "xx\rxx" => "xx\r\nxx", - "xx\r" => "xx\r\n", - "\r\r" => "\r\n\r\n", - "\r\rxx" => "\r\n\r\nxx", - "xx\r\rxx" => "xx\r\n\r\nxx", - "xx\r\r" => "xx\r\n\r\n", - "xx\rxx\nxx\r\nxx" => "xx\r\nxx\r\nxx\r\nxx", - "\r\r\n\n" => "\r\n\r\n\r\n", -); - -$hadError = false; -foreach ($tests as $input => $expect) { - $output = $input; - Net_SMTP::quotedata($output); - if ($output != $expect) { - echo "Error: input " . prettyprint($input) . ", output " . prettyprint($output) . ", expected " . prettyprint($expect) . "\n"; - $hadError = true; - } -} - -if (!$hadError) { - echo "success\n"; -} - -function prettyprint($x) -{ - return str_replace(array("\r", "\n"), array('\r', '\n'), $x); -} - ---EXPECT-- -success diff --git a/src/vitis/vas/rest/class/PEAR/Mail/null.php b/src/vitis/vas/rest/class/PEAR/Mail/null.php deleted file mode 100755 index 982bfa45b6d652132a5219fb273d4327e505e856..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/null.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Phil Kernick <philk@rotfl.com.au> | -// +----------------------------------------------------------------------+ -// -// $Id: null.php,v 1.2 2004/04/06 05:19:03 jon Exp $ -// - -/** - * Null implementation of the PEAR Mail:: interface. - * @access public - * @package Mail - * @version $Revision: 1.2 $ - */ -class Mail_null extends Mail { - - /** - * Implements Mail_null::send() function. Silently discards all - * mail. - * - * @param mixed $recipients Either a comma-seperated list of recipients - * (RFC822 compliant), or an array of recipients, - * each RFC822 valid. This may contain recipients not - * specified in the headers, for Bcc:, resending - * messages, etc. - * - * @param array $headers The array of headers to send with the mail, in an - * associative array, where the array key is the - * header name (ie, 'Subject'), and the array value - * is the header value (ie, 'test'). The header - * produced from those values would be 'Subject: - * test'. - * - * @param string $body The full text of the message body, including any - * Mime parts, etc. - * - * @return mixed Returns true on success, or a PEAR_Error - * containing a descriptive error message on - * failure. - * @access public - */ - function send($recipients, $headers, $body) - { - return true; - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/Mail/sendmail.php b/src/vitis/vas/rest/class/PEAR/Mail/sendmail.php deleted file mode 100755 index cd248e61d267e4c70b6078833e171ac62605eb6a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/sendmail.php +++ /dev/null @@ -1,170 +0,0 @@ -<?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ - -/** - * Sendmail implementation of the PEAR Mail:: interface. - * @access public - * @package Mail - * @version $Revision: 1.19 $ - */ -class Mail_sendmail extends Mail { - - /** - * The location of the sendmail or sendmail wrapper binary on the - * filesystem. - * @var string - */ - var $sendmail_path = '/usr/sbin/sendmail'; - - /** - * Any extra command-line parameters to pass to the sendmail or - * sendmail wrapper binary. - * @var string - */ - var $sendmail_args = '-i'; - - /** - * Constructor. - * - * Instantiates a new Mail_sendmail:: object based on the parameters - * passed in. It looks for the following parameters: - * sendmail_path The location of the sendmail binary on the - * filesystem. Defaults to '/usr/sbin/sendmail'. - * - * sendmail_args Any extra parameters to pass to the sendmail - * or sendmail wrapper binary. - * - * If a parameter is present in the $params array, it replaces the - * default. - * - * @param array $params Hash containing any parameters different from the - * defaults. - * @access public - */ - function Mail_sendmail($params) - { - if (isset($params['sendmail_path'])) { - $this->sendmail_path = $params['sendmail_path']; - } - if (isset($params['sendmail_args'])) { - $this->sendmail_args = $params['sendmail_args']; - } - - /* - * Because we need to pass message headers to the sendmail program on - * the commandline, we can't guarantee the use of the standard "\r\n" - * separator. Instead, we use the system's native line separator. - */ - if (defined('PHP_EOL')) { - $this->sep = PHP_EOL; - } else { - $this->sep = (strpos(PHP_OS, 'WIN') === false) ? "\n" : "\r\n"; - } - } - - /** - * Implements Mail::send() function using the sendmail - * command-line binary. - * - * @param mixed $recipients Either a comma-seperated list of recipients - * (RFC822 compliant), or an array of recipients, - * each RFC822 valid. This may contain recipients not - * specified in the headers, for Bcc:, resending - * messages, etc. - * - * @param array $headers The array of headers to send with the mail, in an - * associative array, where the array key is the - * header name (ie, 'Subject'), and the array value - * is the header value (ie, 'test'). The header - * produced from those values would be 'Subject: - * test'. - * - * @param string $body The full text of the message body, including any - * Mime parts, etc. - * - * @return mixed Returns true on success, or a PEAR_Error - * containing a descriptive error message on - * failure. - * @access public - */ - function send($recipients, $headers, $body) - { - if (!is_array($headers)) { - return PEAR::raiseError('$headers must be an array'); - } - - $result = $this->_sanitizeHeaders($headers); - if (is_a($result, 'PEAR_Error')) { - return $result; - } - - $recipients = $this->parseRecipients($recipients); - if (is_a($recipients, 'PEAR_Error')) { - return $recipients; - } - $recipients = escapeShellCmd(implode(' ', $recipients)); - - $headerElements = $this->prepareHeaders($headers); - if (is_a($headerElements, 'PEAR_Error')) { - return $headerElements; - } - list($from, $text_headers) = $headerElements; - - /* Since few MTAs are going to allow this header to be forged - * unless it's in the MAIL FROM: exchange, we'll use - * Return-Path instead of From: if it's set. */ - if (!empty($headers['Return-Path'])) { - $from = $headers['Return-Path']; - } - - if (!isset($from)) { - return PEAR::raiseError('No from address given.'); - } elseif (strpos($from, ' ') !== false || - strpos($from, ';') !== false || - strpos($from, '&') !== false || - strpos($from, '`') !== false) { - return PEAR::raiseError('From address specified with dangerous characters.'); - } - - $from = escapeShellCmd($from); - $mail = @popen($this->sendmail_path . (!empty($this->sendmail_args) ? ' ' . $this->sendmail_args : '') . " -f$from -- $recipients", 'w'); - if (!$mail) { - return PEAR::raiseError('Failed to open sendmail [' . $this->sendmail_path . '] for execution.'); - } - - // Write the headers following by two newlines: one to end the headers - // section and a second to separate the headers block from the body. - fputs($mail, $text_headers . $this->sep . $this->sep); - - fputs($mail, $body); - $result = pclose($mail); - if (version_compare(phpversion(), '4.2.3') == -1) { - // With older php versions, we need to shift the pclose - // result to get the exit code. - $result = $result >> 8 & 0xFF; - } - - if ($result != 0) { - return PEAR::raiseError('sendmail returned error code ' . $result, - $result); - } - - return true; - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/Mail/smtp.php b/src/vitis/vas/rest/class/PEAR/Mail/smtp.php deleted file mode 100755 index 52b95735415a768ad406421302408840c851fd55..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/smtp.php +++ /dev/null @@ -1,407 +0,0 @@ -<?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.02 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Authors: Chuck Hagenbuch <chuck@horde.org> | -// | Jon Parise <jon@php.net> | -// +----------------------------------------------------------------------+ - -/** Error: Failed to create a Net_SMTP object */ -define('PEAR_MAIL_SMTP_ERROR_CREATE', 10000); - -/** Error: Failed to connect to SMTP server */ -define('PEAR_MAIL_SMTP_ERROR_CONNECT', 10001); - -/** Error: SMTP authentication failure */ -define('PEAR_MAIL_SMTP_ERROR_AUTH', 10002); - -/** Error: No From: address has been provided */ -define('PEAR_MAIL_SMTP_ERROR_FROM', 10003); - -/** Error: Failed to set sender */ -define('PEAR_MAIL_SMTP_ERROR_SENDER', 10004); - -/** Error: Failed to add recipient */ -define('PEAR_MAIL_SMTP_ERROR_RECIPIENT', 10005); - -/** Error: Failed to send data */ -define('PEAR_MAIL_SMTP_ERROR_DATA', 10006); - -/** - * SMTP implementation of the PEAR Mail interface. Requires the Net_SMTP class. - * @access public - * @package Mail - * @version $Revision: 1.33 $ - */ -class Mail_smtp extends Mail { - - /** - * SMTP connection object. - * - * @var object - * @access private - */ - var $_smtp = null; - - /** - * The list of service extension parameters to pass to the Net_SMTP - * mailFrom() command. - * @var array - */ - var $_extparams = array(); - - /** - * The SMTP host to connect to. - * @var string - */ - var $host = 'localhost'; - - /** - * The port the SMTP server is on. - * @var integer - */ - var $port = 25; - - /** - * Should SMTP authentication be used? - * - * This value may be set to true, false or the name of a specific - * authentication method. - * - * If the value is set to true, the Net_SMTP package will attempt to use - * the best authentication method advertised by the remote SMTP server. - * - * @var mixed - */ - var $auth = false; - - /** - * The username to use if the SMTP server requires authentication. - * @var string - */ - var $username = ''; - - /** - * The password to use if the SMTP server requires authentication. - * @var string - */ - var $password = ''; - - /** - * Hostname or domain that will be sent to the remote SMTP server in the - * HELO / EHLO message. - * - * @var string - */ - var $localhost = 'localhost'; - - /** - * SMTP connection timeout value. NULL indicates no timeout. - * - * @var integer - */ - var $timeout = null; - - /** - * Turn on Net_SMTP debugging? - * - * @var boolean $debug - */ - var $debug = false; - - /** - * Indicates whether or not the SMTP connection should persist over - * multiple calls to the send() method. - * - * @var boolean - */ - var $persist = false; - - /** - * Use SMTP command pipelining (specified in RFC 2920) if the SMTP server - * supports it. This speeds up delivery over high-latency connections. By - * default, use the default value supplied by Net_SMTP. - * @var bool - */ - var $pipelining; - - /** - * Constructor. - * - * Instantiates a new Mail_smtp:: object based on the parameters - * passed in. It looks for the following parameters: - * host The server to connect to. Defaults to localhost. - * port The port to connect to. Defaults to 25. - * auth SMTP authentication. Defaults to none. - * username The username to use for SMTP auth. No default. - * password The password to use for SMTP auth. No default. - * localhost The local hostname / domain. Defaults to localhost. - * timeout The SMTP connection timeout. Defaults to none. - * verp Whether to use VERP or not. Defaults to false. - * DEPRECATED as of 1.2.0 (use setMailParams()). - * debug Activate SMTP debug mode? Defaults to false. - * persist Should the SMTP connection persist? - * pipelining Use SMTP command pipelining - * - * If a parameter is present in the $params array, it replaces the - * default. - * - * @param array Hash containing any parameters different from the - * defaults. - * @access public - */ - function Mail_smtp($params) - { - if (isset($params['host'])) $this->host = $params['host']; - if (isset($params['port'])) $this->port = $params['port']; - if (isset($params['auth'])) $this->auth = $params['auth']; - if (isset($params['username'])) $this->username = $params['username']; - if (isset($params['password'])) $this->password = $params['password']; - if (isset($params['localhost'])) $this->localhost = $params['localhost']; - if (isset($params['timeout'])) $this->timeout = $params['timeout']; - if (isset($params['debug'])) $this->debug = (bool)$params['debug']; - if (isset($params['persist'])) $this->persist = (bool)$params['persist']; - if (isset($params['pipelining'])) $this->pipelining = (bool)$params['pipelining']; - - // Deprecated options - if (isset($params['verp'])) { - $this->addServiceExtensionParameter('XVERP', is_bool($params['verp']) ? null : $params['verp']); - } - - register_shutdown_function(array(&$this, '_Mail_smtp')); - } - - /** - * Destructor implementation to ensure that we disconnect from any - * potentially-alive persistent SMTP connections. - */ - function _Mail_smtp() - { - $this->disconnect(); - } - - /** - * Implements Mail::send() function using SMTP. - * - * @param mixed $recipients Either a comma-seperated list of recipients - * (RFC822 compliant), or an array of recipients, - * each RFC822 valid. This may contain recipients not - * specified in the headers, for Bcc:, resending - * messages, etc. - * - * @param array $headers The array of headers to send with the mail, in an - * associative array, where the array key is the - * header name (e.g., 'Subject'), and the array value - * is the header value (e.g., 'test'). The header - * produced from those values would be 'Subject: - * test'. - * - * @param string $body The full text of the message body, including any - * MIME parts, etc. - * - * @return mixed Returns true on success, or a PEAR_Error - * containing a descriptive error message on - * failure. - * @access public - */ - function send($recipients, $headers, $body) - { - /* If we don't already have an SMTP object, create one. */ - $result = &$this->getSMTPObject(); - if (PEAR::isError($result)) { - return $result; - } - - if (!is_array($headers)) { - return PEAR::raiseError('$headers must be an array'); - } - - $this->_sanitizeHeaders($headers); - - $headerElements = $this->prepareHeaders($headers); - if (is_a($headerElements, 'PEAR_Error')) { - $this->_smtp->rset(); - return $headerElements; - } - list($from, $textHeaders) = $headerElements; - - /* Since few MTAs are going to allow this header to be forged - * unless it's in the MAIL FROM: exchange, we'll use - * Return-Path instead of From: if it's set. */ - if (!empty($headers['Return-Path'])) { - $from = $headers['Return-Path']; - } - - if (!isset($from)) { - $this->_smtp->rset(); - return PEAR::raiseError('No From: address has been provided', - PEAR_MAIL_SMTP_ERROR_FROM); - } - - $params = null; - if (!empty($this->_extparams)) { - foreach ($this->_extparams as $key => $val) { - $params .= ' ' . $key . (is_null($val) ? '' : '=' . $val); - } - } - if (PEAR::isError($res = $this->_smtp->mailFrom($from, ltrim($params)))) { - $error = $this->_error("Failed to set sender: $from", $res); - $this->_smtp->rset(); - return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_SENDER); - } - - $recipients = $this->parseRecipients($recipients); - if (is_a($recipients, 'PEAR_Error')) { - $this->_smtp->rset(); - return $recipients; - } - - foreach ($recipients as $recipient) { - $res = $this->_smtp->rcptTo($recipient); - if (is_a($res, 'PEAR_Error')) { - $error = $this->_error("Failed to add recipient: $recipient", $res); - $this->_smtp->rset(); - return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_RECIPIENT); - } - } - - /* Send the message's headers and the body as SMTP data. */ - $res = $this->_smtp->data($textHeaders . "\r\n\r\n" . $body); - if (is_a($res, 'PEAR_Error')) { - $error = $this->_error('Failed to send data', $res); - $this->_smtp->rset(); - return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_DATA); - } - - /* If persistent connections are disabled, destroy our SMTP object. */ - if ($this->persist === false) { - $this->disconnect(); - } - - return true; - } - - /** - * Connect to the SMTP server by instantiating a Net_SMTP object. - * - * @return mixed Returns a reference to the Net_SMTP object on success, or - * a PEAR_Error containing a descriptive error message on - * failure. - * - * @since 1.2.0 - * @access public - */ - function &getSMTPObject() - { - if (is_object($this->_smtp) !== false) { - return $this->_smtp; - } - - include_once 'net/SMTP.php'; - $this->_smtp = &new Net_SMTP($this->host, - $this->port, - $this->localhost); - - /* If we still don't have an SMTP object at this point, fail. */ - if (is_object($this->_smtp) === false) { - return PEAR::raiseError('Failed to create a Net_SMTP object', - PEAR_MAIL_SMTP_ERROR_CREATE); - } - - /* Configure the SMTP connection. */ - if ($this->debug) { - $this->_smtp->setDebug(true); - } - - /* Attempt to connect to the configured SMTP server. */ - if (PEAR::isError($res = $this->_smtp->connect($this->timeout))) { - $error = $this->_error('Failed to connect to ' . - $this->host . ':' . $this->port, - $res); - return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_CONNECT); - } - - /* Attempt to authenticate if authentication has been enabled. */ - if ($this->auth) { - $method = is_string($this->auth) ? $this->auth : ''; - - if (PEAR::isError($res = $this->_smtp->auth($this->username, - $this->password, - $method))) { - $error = $this->_error("$method authentication failure", - $res); - $this->_smtp->rset(); - return PEAR::raiseError($error, PEAR_MAIL_SMTP_ERROR_AUTH); - } - } - - return $this->_smtp; - } - - /** - * Add parameter associated with a SMTP service extension. - * - * @param string Extension keyword. - * @param string Any value the keyword needs. - * - * @since 1.2.0 - * @access public - */ - function addServiceExtensionParameter($keyword, $value = null) - { - $this->_extparams[$keyword] = $value; - } - - /** - * Disconnect and destroy the current SMTP connection. - * - * @return boolean True if the SMTP connection no longer exists. - * - * @since 1.1.9 - * @access public - */ - function disconnect() - { - /* If we have an SMTP object, disconnect and destroy it. */ - if (is_object($this->_smtp) && $this->_smtp->disconnect()) { - $this->_smtp = null; - } - - /* We are disconnected if we no longer have an SMTP object. */ - return ($this->_smtp === null); - } - - /** - * Build a standardized string describing the current SMTP error. - * - * @param string $text Custom string describing the error context. - * @param object $error Reference to the current PEAR_Error object. - * - * @return string A string describing the current SMTP error. - * - * @since 1.1.7 - * @access private - */ - function _error($text, &$error) - { - /* Split the SMTP response into a code and a response string. */ - list($code, $response) = $this->_smtp->getResponse(); - - /* Build our standardized error string. */ - return $text - . ' [SMTP: ' . $error->getMessage() - . " (code: $code, response: $response)]"; - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/Mail/smtpmx.php b/src/vitis/vas/rest/class/PEAR/Mail/smtpmx.php deleted file mode 100755 index 9d2dccfb13bc2676843a952ac5cb1788ac778f24..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Mail/smtpmx.php +++ /dev/null @@ -1,478 +0,0 @@ -<?PHP -/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ - -/** - * SMTP MX - * - * SMTP MX implementation of the PEAR Mail interface. Requires the Net_SMTP class. - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category Mail - * @package Mail_smtpmx - * @author gERD Schaufelberger <gerd@php-tools.net> - * @copyright 1997-2005 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: smtpmx.php,v 1.2 2007/10/06 17:00:00 chagenbu Exp $ - * @see Mail - */ - -require_once 'Net/SMTP.php'; - -/** - * SMTP MX implementation of the PEAR Mail interface. Requires the Net_SMTP class. - * - * - * @access public - * @author gERD Schaufelberger <gerd@php-tools.net> - * @package Mail - * @version $Revision: 1.2 $ - */ -class Mail_smtpmx extends Mail { - - /** - * SMTP connection object. - * - * @var object - * @access private - */ - var $_smtp = null; - - /** - * The port the SMTP server is on. - * @var integer - * @see getservicebyname() - */ - var $port = 25; - - /** - * Hostname or domain that will be sent to the remote SMTP server in the - * HELO / EHLO message. - * - * @var string - * @see posix_uname() - */ - var $mailname = 'localhost'; - - /** - * SMTP connection timeout value. NULL indicates no timeout. - * - * @var integer - */ - var $timeout = 10; - - /** - * use either PEAR:Net_DNS or getmxrr - * - * @var boolean - */ - var $withNetDns = true; - - /** - * PEAR:Net_DNS_Resolver - * - * @var object - */ - var $resolver; - - /** - * Whether to use VERP or not. If not a boolean, the string value - * will be used as the VERP separators. - * - * @var mixed boolean or string - */ - var $verp = false; - - /** - * Whether to use VRFY or not. - * - * @var boolean $vrfy - */ - var $vrfy = false; - - /** - * Switch to test mode - don't send emails for real - * - * @var boolean $debug - */ - var $test = false; - - /** - * Turn on Net_SMTP debugging? - * - * @var boolean $peardebug - */ - var $debug = false; - - /** - * internal error codes - * - * translate internal error identifier to PEAR-Error codes and human - * readable messages. - * - * @var boolean $debug - * @todo as I need unique error-codes to identify what exactly went wrond - * I did not use intergers as it should be. Instead I added a "namespace" - * for each code. This avoids conflicts with error codes from different - * classes. How can I use unique error codes and stay conform with PEAR? - */ - var $errorCode = array( - 'not_connected' => array( - 'code' => 1, - 'msg' => 'Could not connect to any mail server ({HOST}) at port {PORT} to send mail to {RCPT}.' - ), - 'failed_vrfy_rcpt' => array( - 'code' => 2, - 'msg' => 'Recipient "{RCPT}" could not be veryfied.' - ), - 'failed_set_from' => array( - 'code' => 3, - 'msg' => 'Failed to set sender: {FROM}.' - ), - 'failed_set_rcpt' => array( - 'code' => 4, - 'msg' => 'Failed to set recipient: {RCPT}.' - ), - 'failed_send_data' => array( - 'code' => 5, - 'msg' => 'Failed to send mail to: {RCPT}.' - ), - 'no_from' => array( - 'code' => 5, - 'msg' => 'No from address has be provided.' - ), - 'send_data' => array( - 'code' => 7, - 'msg' => 'Failed to create Net_SMTP object.' - ), - 'no_mx' => array( - 'code' => 8, - 'msg' => 'No MX-record for {RCPT} found.' - ), - 'no_resolver' => array( - 'code' => 9, - 'msg' => 'Could not start resolver! Install PEAR:Net_DNS or switch off "netdns"' - ), - 'failed_rset' => array( - 'code' => 10, - 'msg' => 'RSET command failed, SMTP-connection corrupt.' - ), - ); - - /** - * Constructor. - * - * Instantiates a new Mail_smtp:: object based on the parameters - * passed in. It looks for the following parameters: - * mailname The name of the local mail system (a valid hostname which matches the reverse lookup) - * port smtp-port - the default comes from getservicebyname() and should work fine - * timeout The SMTP connection timeout. Defaults to 30 seconds. - * vrfy Whether to use VRFY or not. Defaults to false. - * verp Whether to use VERP or not. Defaults to false. - * test Activate test mode? Defaults to false. - * debug Activate SMTP and Net_DNS debug mode? Defaults to false. - * netdns whether to use PEAR:Net_DNS or the PHP build in function getmxrr, default is true - * - * If a parameter is present in the $params array, it replaces the - * default. - * - * @access public - * @param array Hash containing any parameters different from the - * defaults. - * @see _Mail_smtpmx() - */ - function __construct($params) - { - if (isset($params['mailname'])) { - $this->mailname = $params['mailname']; - } else { - // try to find a valid mailname - if (function_exists('posix_uname')) { - $uname = posix_uname(); - $this->mailname = $uname['nodename']; - } - } - - // port number - if (isset($params['port'])) { - $this->_port = $params['port']; - } else { - $this->_port = getservbyname('smtp', 'tcp'); - } - - if (isset($params['timeout'])) $this->timeout = $params['timeout']; - if (isset($params['verp'])) $this->verp = $params['verp']; - if (isset($params['test'])) $this->test = $params['test']; - if (isset($params['peardebug'])) $this->test = $params['peardebug']; - if (isset($params['netdns'])) $this->withNetDns = $params['netdns']; - } - - /** - * Constructor wrapper for PHP4 - * - * @access public - * @param array Hash containing any parameters different from the defaults - * @see __construct() - */ - function Mail_smtpmx($params) - { - $this->__construct($params); - register_shutdown_function(array(&$this, '__destruct')); - } - - /** - * Destructor implementation to ensure that we disconnect from any - * potentially-alive persistent SMTP connections. - */ - function __destruct() - { - if (is_object($this->_smtp)) { - $this->_smtp->disconnect(); - $this->_smtp = null; - } - } - - /** - * Implements Mail::send() function using SMTP direct delivery - * - * @access public - * @param mixed $recipients in RFC822 style or array - * @param array $headers The array of headers to send with the mail. - * @param string $body The full text of the message body, - * @return mixed Returns true on success, or a PEAR_Error - */ - function send($recipients, $headers, $body) - { - if (!is_array($headers)) { - return PEAR::raiseError('$headers must be an array'); - } - - $result = $this->_sanitizeHeaders($headers); - if (is_a($result, 'PEAR_Error')) { - return $result; - } - - // Prepare headers - $headerElements = $this->prepareHeaders($headers); - if (is_a($headerElements, 'PEAR_Error')) { - return $headerElements; - } - list($from, $textHeaders) = $headerElements; - - // use 'Return-Path' if possible - if (!empty($headers['Return-Path'])) { - $from = $headers['Return-Path']; - } - if (!isset($from)) { - return $this->_raiseError('no_from'); - } - - // Prepare recipients - $recipients = $this->parseRecipients($recipients); - if (is_a($recipients, 'PEAR_Error')) { - return $recipients; - } - - foreach ($recipients as $rcpt) { - list($user, $host) = explode('@', $rcpt); - - $mx = $this->_getMx($host); - if (is_a($mx, 'PEAR_Error')) { - return $mx; - } - - if (empty($mx)) { - $info = array('rcpt' => $rcpt); - return $this->_raiseError('no_mx', $info); - } - - $connected = false; - foreach ($mx as $mserver => $mpriority) { - $this->_smtp = new Net_SMTP($mserver, $this->port, $this->mailname); - - // configure the SMTP connection. - if ($this->debug) { - $this->_smtp->setDebug(true); - } - - // attempt to connect to the configured SMTP server. - $res = $this->_smtp->connect($this->timeout); - if (is_a($res, 'PEAR_Error')) { - $this->_smtp = null; - continue; - } - - // connection established - if ($res) { - $connected = true; - break; - } - } - - if (!$connected) { - $info = array( - 'host' => implode(', ', array_keys($mx)), - 'port' => $this->port, - 'rcpt' => $rcpt, - ); - return $this->_raiseError('not_connected', $info); - } - - // Verify recipient - if ($this->vrfy) { - $res = $this->_smtp->vrfy($rcpt); - if (is_a($res, 'PEAR_Error')) { - $info = array('rcpt' => $rcpt); - return $this->_raiseError('failed_vrfy_rcpt', $info); - } - } - - // mail from: - $args['verp'] = $this->verp; - $res = $this->_smtp->mailFrom($from, $args); - if (is_a($res, 'PEAR_Error')) { - $info = array('from' => $from); - return $this->_raiseError('failed_set_from', $info); - } - - // rcpt to: - $res = $this->_smtp->rcptTo($rcpt); - if (is_a($res, 'PEAR_Error')) { - $info = array('rcpt' => $rcpt); - return $this->_raiseError('failed_set_rcpt', $info); - } - - // Don't send anything in test mode - if ($this->test) { - $result = $this->_smtp->rset(); - $res = $this->_smtp->rset(); - if (is_a($res, 'PEAR_Error')) { - return $this->_raiseError('failed_rset'); - } - - $this->_smtp->disconnect(); - $this->_smtp = null; - return true; - } - - // Send data - $res = $this->_smtp->data("$textHeaders\r\n$body"); - if (is_a($res, 'PEAR_Error')) { - $info = array('rcpt' => $rcpt); - return $this->_raiseError('failed_send_data', $info); - } - - $this->_smtp->disconnect(); - $this->_smtp = null; - } - - return true; - } - - /** - * Recieve mx rexords for a spciefied host - * - * The MX records - * - * @access private - * @param string $host mail host - * @return mixed sorted - */ - function _getMx($host) - { - $mx = array(); - - if ($this->withNetDns) { - $res = $this->_loadNetDns(); - if (is_a($res, 'PEAR_Error')) { - return $res; - } - - $response = $this->resolver->query($host, 'MX'); - if (!$response) { - return false; - } - - foreach ($response->answer as $rr) { - if ($rr->type == 'MX') { - $mx[$rr->exchange] = $rr->preference; - } - } - } else { - $mxHost = array(); - $mxWeight = array(); - - if (!getmxrr($host, $mxHost, $mxWeight)) { - return false; - } - for ($i = 0; $i < count($mxHost); ++$i) { - $mx[$mxHost[$i]] = $mxWeight[$i]; - } - } - - asort($mx); - return $mx; - } - - /** - * initialize PEAR:Net_DNS_Resolver - * - * @access private - * @return boolean true on success - */ - function _loadNetDns() - { - if (is_object($this->resolver)) { - return true; - } - - if (!include_once 'Net/DNS.php') { - return $this->_raiseError('no_resolver'); - } - - $this->resolver = new Net_DNS_Resolver(); - if ($this->debug) { - $this->resolver->test = 1; - } - - return true; - } - - /** - * raise standardized error - * - * include additional information in error message - * - * @access private - * @param string $id maps error ids to codes and message - * @param array $info optional information in associative array - * @see _errorCode - */ - function _raiseError($id, $info = array()) - { - $code = $this->errorCode[$id]['code']; - $msg = $this->errorCode[$id]['msg']; - - // include info to messages - if (!empty($info)) { - $search = array(); - $replace = array(); - - foreach ($info as $key => $value) { - array_push($search, '{' . strtoupper($key) . '}'); - array_push($replace, $value); - } - - $msg = str_replace($search, $replace, $msg); - } - - return PEAR::raiseError($msg, $code); - } - -} diff --git a/src/vitis/vas/rest/class/PEAR/PEAR.php b/src/vitis/vas/rest/class/PEAR/PEAR.php deleted file mode 100755 index 77d16cd10dc49782fd9fb04f3cad26ec0dc002c4..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PEAR.php +++ /dev/null @@ -1,1118 +0,0 @@ -<?php -/** - * PEAR, the PHP Extension and Application Repository - * - * PEAR class and PEAR_Error class - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Sterling Hughes <sterling@php.net> - * @author Stig Bakken <ssb@php.net> - * @author Tomas V.V.Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: PEAR.php,v 1.104 2008/01/03 20:26:34 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/**#@+ - * ERROR constants - */ -define('PEAR_ERROR_RETURN', 1); -define('PEAR_ERROR_PRINT', 2); -define('PEAR_ERROR_TRIGGER', 4); -define('PEAR_ERROR_DIE', 8); -define('PEAR_ERROR_CALLBACK', 16); -/** - * WARNING: obsolete - * @deprecated - */ -define('PEAR_ERROR_EXCEPTION', 32); -/**#@-*/ -define('PEAR_ZE2', (function_exists('version_compare') && - version_compare(zend_version(), "2-dev", "ge"))); - -if (substr(PHP_OS, 0, 3) == 'WIN') { - define('OS_WINDOWS', true); - define('OS_UNIX', false); - define('PEAR_OS', 'Windows'); -} else { - define('OS_WINDOWS', false); - define('OS_UNIX', true); - define('PEAR_OS', 'Unix'); // blatant assumption -} - -// instant backwards compatibility -if (!defined('PATH_SEPARATOR')) { - if (OS_WINDOWS) { - define('PATH_SEPARATOR', ';'); - } else { - define('PATH_SEPARATOR', ':'); - } -} - -$GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN; -$GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE; -$GLOBALS['_PEAR_destructor_object_list'] = array(); -$GLOBALS['_PEAR_shutdown_funcs'] = array(); -$GLOBALS['_PEAR_error_handler_stack'] = array(); - -@ini_set('track_errors', true); - -/** - * Base class for other PEAR classes. Provides rudimentary - * emulation of destructors. - * - * If you want a destructor in your class, inherit PEAR and make a - * destructor method called _yourclassname (same name as the - * constructor, but with a "_" prefix). Also, in your constructor you - * have to call the PEAR constructor: $this->PEAR();. - * The destructor method will be called without parameters. Note that - * at in some SAPI implementations (such as Apache), any output during - * the request shutdown (in which destructors are called) seems to be - * discarded. If you need to get any debug information from your - * destructor, use error_log(), syslog() or something similar. - * - * IMPORTANT! To use the emulated destructors you need to create the - * objects by reference: $obj =& new PEAR_child; - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V.V. Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2006 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @see PEAR_Error - * @since Class available since PHP 4.0.2 - * @link http://pear.php.net/manual/en/core.pear.php#core.pear.pear - */ -class PEAR -{ - // {{{ properties - - /** - * Whether to enable internal debug messages. - * - * @var bool - * @access private - */ - var $_debug = false; - - /** - * Default error mode for this object. - * - * @var int - * @access private - */ - var $_default_error_mode = null; - - /** - * Default error options used for this object when error mode - * is PEAR_ERROR_TRIGGER. - * - * @var int - * @access private - */ - var $_default_error_options = null; - - /** - * Default error handler (callback) for this object, if error mode is - * PEAR_ERROR_CALLBACK. - * - * @var string - * @access private - */ - var $_default_error_handler = ''; - - /** - * Which class to use for error objects. - * - * @var string - * @access private - */ - var $_error_class = 'PEAR_Error'; - - /** - * An array of expected errors. - * - * @var array - * @access private - */ - var $_expected_errors = array(); - - // }}} - - // {{{ constructor - - /** - * Constructor. Registers this object in - * $_PEAR_destructor_object_list for destructor emulation if a - * destructor object exists. - * - * @param string $error_class (optional) which class to use for - * error objects, defaults to PEAR_Error. - * @access public - * @return void - */ - function __construct($error_class = null) - { - $classname = strtolower(get_class($this)); - if ($this->_debug) { - print "PEAR constructor called, class=$classname\n"; - } - if ($error_class !== null) { - $this->_error_class = $error_class; - } - while ($classname && strcasecmp($classname, "pear")) { - $destructor = "_$classname"; - if (method_exists($this, $destructor)) { - global $_PEAR_destructor_object_list; - $_PEAR_destructor_object_list[] = &$this; - if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { - register_shutdown_function("_PEAR_call_destructors"); - $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; - } - break; - } else { - $classname = get_parent_class($classname); - } - } - } - - // }}} - // {{{ destructor - - /** - * Destructor (the emulated type of...). Does nothing right now, - * but is included for forward compatibility, so subclass - * destructors should always call it. - * - * See the note in the class desciption about output from - * destructors. - * - * @access public - * @return void - */ - function __destruct() { - if ($this->_debug) { - printf("PEAR destructor called, class=%s\n", strtolower(get_class($this))); - } - } - - // }}} - // {{{ getStaticProperty() - - /** - * If you have a class that's mostly/entirely static, and you need static - * properties, you can use this method to simulate them. Eg. in your method(s) - * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar'); - * You MUST use a reference, or they will not persist! - * - * @access public - * @param string $class The calling classname, to prevent clashes - * @param string $var The variable to retrieve. - * @return mixed A reference to the variable. If not set it will be - * auto initialised to NULL. - */ - function &getStaticProperty($class, $var) - { - static $properties; - if (!isset($properties[$class])) { - $properties[$class] = array(); - } - if (!array_key_exists($var, $properties[$class])) { - $properties[$class][$var] = null; - } - return $properties[$class][$var]; - } - - // }}} - // {{{ registerShutdownFunc() - - /** - * Use this function to register a shutdown method for static - * classes. - * - * @access public - * @param mixed $func The function name (or array of class/method) to call - * @param mixed $args The arguments to pass to the function - * @return void - */ - function registerShutdownFunc($func, $args = array()) - { - // if we are called statically, there is a potential - // that no shutdown func is registered. Bug #6445 - if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { - register_shutdown_function("_PEAR_call_destructors"); - $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; - } - $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args); - } - - // }}} - // {{{ isError() - - /** - * Tell whether a value is a PEAR error. - * - * @param mixed $data the value to test - * @param int $code if $data is an error object, return true - * only if $code is a string and - * $obj->getMessage() == $code or - * $code is an integer and $obj->getCode() == $code - * @access public - * @return bool true if parameter is an error - */ - function isError($data, $code = null) - { - if (is_a($data, 'PEAR_Error')) { - if (is_null($code)) { - return true; - } elseif (is_string($code)) { - return $data->getMessage() == $code; - } else { - return $data->getCode() == $code; - } - } - return false; - } - - // }}} - // {{{ setErrorHandling() - - /** - * Sets how errors generated by this object should be handled. - * Can be invoked both in objects and statically. If called - * statically, setErrorHandling sets the default behaviour for all - * PEAR objects. If called in an object, setErrorHandling sets - * the default behaviour for that object. - * - * @param int $mode - * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, - * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, - * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION. - * - * @param mixed $options - * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one - * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). - * - * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected - * to be the callback function or method. A callback - * function is a string with the name of the function, a - * callback method is an array of two elements: the element - * at index 0 is the object, and the element at index 1 is - * the name of the method to call in the object. - * - * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is - * a printf format string used when printing the error - * message. - * - * @access public - * @return void - * @see PEAR_ERROR_RETURN - * @see PEAR_ERROR_PRINT - * @see PEAR_ERROR_TRIGGER - * @see PEAR_ERROR_DIE - * @see PEAR_ERROR_CALLBACK - * @see PEAR_ERROR_EXCEPTION - * - * @since PHP 4.0.5 - */ - - function setErrorHandling($mode = null, $options = null) - { - if (isset($this) && is_a($this, 'PEAR')) { - $setmode = &$this->_default_error_mode; - $setoptions = &$this->_default_error_options; - } else { - $setmode = &$GLOBALS['_PEAR_default_error_mode']; - $setoptions = &$GLOBALS['_PEAR_default_error_options']; - } - - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $setmode = $mode; - $setoptions = $options; - break; - - case PEAR_ERROR_CALLBACK: - $setmode = $mode; - // class/object method callback - if (is_callable($options)) { - $setoptions = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - } - - // }}} - // {{{ expectError() - - /** - * This method is used to tell which errors you expect to get. - * Expected errors are always returned with error mode - * PEAR_ERROR_RETURN. Expected error codes are stored in a stack, - * and this method pushes a new element onto it. The list of - * expected errors are in effect until they are popped off the - * stack with the popExpect() method. - * - * Note that this method can not be called statically - * - * @param mixed $code a single error code or an array of error codes to expect - * - * @return int the new depth of the "expected errors" stack - * @access public - */ - function expectError($code = '*') - { - if (is_array($code)) { - array_push($this->_expected_errors, $code); - } else { - array_push($this->_expected_errors, array($code)); - } - return sizeof($this->_expected_errors); - } - - // }}} - // {{{ popExpect() - - /** - * This method pops one element off the expected error codes - * stack. - * - * @return array the list of error codes that were popped - */ - function popExpect() - { - return array_pop($this->_expected_errors); - } - - // }}} - // {{{ _checkDelExpect() - - /** - * This method checks unsets an error code if available - * - * @param mixed error code - * @return bool true if the error code was unset, false otherwise - * @access private - * @since PHP 4.3.0 - */ - function _checkDelExpect($error_code) - { - $deleted = false; - - foreach ($this->_expected_errors AS $key => $error_array) { - if (in_array($error_code, $error_array)) { - unset($this->_expected_errors[$key][array_search($error_code, $error_array)]); - $deleted = true; - } - - // clean up empty arrays - if (0 == count($this->_expected_errors[$key])) { - unset($this->_expected_errors[$key]); - } - } - return $deleted; - } - - // }}} - // {{{ delExpect() - - /** - * This method deletes all occurences of the specified element from - * the expected error codes stack. - * - * @param mixed $error_code error code that should be deleted - * @return mixed list of error codes that were deleted or error - * @access public - * @since PHP 4.3.0 - */ - function delExpect($error_code) - { - $deleted = false; - - if ((is_array($error_code) && (0 != count($error_code)))) { - // $error_code is a non-empty array here; - // we walk through it trying to unset all - // values - foreach($error_code as $key => $error) { - if ($this->_checkDelExpect($error)) { - $deleted = true; - } else { - $deleted = false; - } - } - return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME - } elseif (!empty($error_code)) { - // $error_code comes alone, trying to unset it - if ($this->_checkDelExpect($error_code)) { - return true; - } else { - return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME - } - } else { - // $error_code is empty - return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME - } - } - - // }}} - // {{{ raiseError() - - /** - * This method is a wrapper that returns an instance of the - * configured error class with this object's default error - * handling applied. If the $mode and $options parameters are not - * specified, the object's defaults are used. - * - * @param mixed $message a text error message or a PEAR error object - * - * @param int $code a numeric error code (it is up to your class - * to define these if you want to use codes) - * - * @param int $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, - * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, - * PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION. - * - * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter - * specifies the PHP-internal error level (one of - * E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). - * If $mode is PEAR_ERROR_CALLBACK, this - * parameter specifies the callback function or - * method. In other error modes this parameter - * is ignored. - * - * @param string $userinfo If you need to pass along for example debug - * information, this parameter is meant for that. - * - * @param string $error_class The returned error object will be - * instantiated from this class, if specified. - * - * @param bool $skipmsg If true, raiseError will only pass error codes, - * the error message parameter will be dropped. - * - * @access public - * @return object a PEAR error object - * @see PEAR::setErrorHandling - * @since PHP 4.0.5 - */ - function &raiseError($message = null, - $code = null, - $mode = null, - $options = null, - $userinfo = null, - $error_class = null, - $skipmsg = false) - { - // The error is yet a PEAR error object - if (is_object($message)) { - $code = $message->getCode(); - $userinfo = $message->getUserInfo(); - $error_class = $message->getType(); - $message->error_message_prefix = ''; - $message = $message->getMessage(); - } - - if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) { - if ($exp[0] == "*" || - (is_int(reset($exp)) && in_array($code, $exp)) || - (is_string(reset($exp)) && in_array($message, $exp))) { - $mode = PEAR_ERROR_RETURN; - } - } - // No mode given, try global ones - if ($mode === null) { - // Class error handler - if (isset($this) && isset($this->_default_error_mode)) { - $mode = $this->_default_error_mode; - $options = $this->_default_error_options; - // Global error handler - } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) { - $mode = $GLOBALS['_PEAR_default_error_mode']; - $options = $GLOBALS['_PEAR_default_error_options']; - } - } - - if ($error_class !== null) { - $ec = $error_class; - } elseif (isset($this) && isset($this->_error_class)) { - $ec = $this->_error_class; - } else { - $ec = 'PEAR_Error'; - } - if (intval(PHP_VERSION) < 5) { - // little non-eval hack to fix bug #12147 - include 'PEAR/FixPHP5PEARWarnings.php'; - return $a; - } - if ($skipmsg) { - $a = new $ec($code, $mode, $options, $userinfo); - } else { - $a = new $ec($message, $code, $mode, $options, $userinfo); - } - return $a; - } - - // }}} - // {{{ throwError() - - /** - * Simpler form of raiseError with fewer options. In most cases - * message, code and userinfo are enough. - * - * @param string $message - * - */ - function &throwError($message = null, - $code = null, - $userinfo = null) - { - if (isset($this) && is_a($this, 'PEAR')) { - $a = &$this->raiseError($message, $code, null, null, $userinfo); - return $a; - } else { - $a = &PEAR::raiseError($message, $code, null, null, $userinfo); - return $a; - } - } - - // }}} - function staticPushErrorHandling($mode, $options = null) - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - $def_mode = &$GLOBALS['_PEAR_default_error_mode']; - $def_options = &$GLOBALS['_PEAR_default_error_options']; - $stack[] = array($def_mode, $def_options); - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $def_mode = $mode; - $def_options = $options; - break; - - case PEAR_ERROR_CALLBACK: - $def_mode = $mode; - // class/object method callback - if (is_callable($options)) { - $def_options = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - $stack[] = array($mode, $options); - return true; - } - - function staticPopErrorHandling() - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - $setmode = &$GLOBALS['_PEAR_default_error_mode']; - $setoptions = &$GLOBALS['_PEAR_default_error_options']; - array_pop($stack); - list($mode, $options) = $stack[sizeof($stack) - 1]; - array_pop($stack); - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $setmode = $mode; - $setoptions = $options; - break; - - case PEAR_ERROR_CALLBACK: - $setmode = $mode; - // class/object method callback - if (is_callable($options)) { - $setoptions = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - return true; - } - - // {{{ pushErrorHandling() - - /** - * Push a new error handler on top of the error handler options stack. With this - * you can easily override the actual error handler for some code and restore - * it later with popErrorHandling. - * - * @param mixed $mode (same as setErrorHandling) - * @param mixed $options (same as setErrorHandling) - * - * @return bool Always true - * - * @see PEAR::setErrorHandling - */ - function pushErrorHandling($mode, $options = null) - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - if (isset($this) && is_a($this, 'PEAR')) { - $def_mode = &$this->_default_error_mode; - $def_options = &$this->_default_error_options; - } else { - $def_mode = &$GLOBALS['_PEAR_default_error_mode']; - $def_options = &$GLOBALS['_PEAR_default_error_options']; - } - $stack[] = array($def_mode, $def_options); - - if (isset($this) && is_a($this, 'PEAR')) { - $this->setErrorHandling($mode, $options); - } else { - PEAR::setErrorHandling($mode, $options); - } - $stack[] = array($mode, $options); - return true; - } - - // }}} - // {{{ popErrorHandling() - - /** - * Pop the last error handler used - * - * @return bool Always true - * - * @see PEAR::pushErrorHandling - */ - function popErrorHandling() - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - array_pop($stack); - list($mode, $options) = $stack[sizeof($stack) - 1]; - array_pop($stack); - if (isset($this) && is_a($this, 'PEAR')) { - $this->setErrorHandling($mode, $options); - } else { - PEAR::setErrorHandling($mode, $options); - } - return true; - } - - // }}} - // {{{ loadExtension() - - /** - * OS independant PHP extension load. Remember to take care - * on the correct extension name for case sensitive OSes. - * - * @param string $ext The extension name - * @return bool Success or not on the dl() call - */ - function loadExtension($ext) - { - if (!extension_loaded($ext)) { - // if either returns true dl() will produce a FATAL error, stop that - if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) { - return false; - } - if (OS_WINDOWS) { - $suffix = '.dll'; - } elseif (PHP_OS == 'HP-UX') { - $suffix = '.sl'; - } elseif (PHP_OS == 'AIX') { - $suffix = '.a'; - } elseif (PHP_OS == 'OSX') { - $suffix = '.bundle'; - } else { - $suffix = '.so'; - } - return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix); - } - return true; - } - - // }}} -} - -// {{{ _PEAR_call_destructors() - -function _PEAR_call_destructors() -{ - global $_PEAR_destructor_object_list; - if (is_array($_PEAR_destructor_object_list) && - sizeof($_PEAR_destructor_object_list)) - { - reset($_PEAR_destructor_object_list); - if (PEAR::getStaticProperty('PEAR', 'destructlifo')) { - $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list); - } - while (list($k, $objref) = each($_PEAR_destructor_object_list)) { - $classname = get_class($objref); - while ($classname) { - $destructor = "_$classname"; - if (method_exists($objref, $destructor)) { - $objref->$destructor(); - break; - } else { - $classname = get_parent_class($classname); - } - } - } - // Empty the object list to ensure that destructors are - // not called more than once. - $_PEAR_destructor_object_list = array(); - } - - // Now call the shutdown functions - if (is_array($GLOBALS['_PEAR_shutdown_funcs']) AND !empty($GLOBALS['_PEAR_shutdown_funcs'])) { - foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) { - call_user_func_array($value[0], $value[1]); - } - } -} - -// }}} -/** - * Standard PEAR error class for PHP 4 - * - * This class is supserseded by {@link PEAR_Exception} in PHP 5 - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V.V. Cox <cox@idecnet.com> - * @author Gregory Beaver <cellog@php.net> - * @copyright 1997-2006 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/manual/en/core.pear.pear-error.php - * @see PEAR::raiseError(), PEAR::throwError() - * @since Class available since PHP 4.0.2 - */ -class PEAR_Error -{ - // {{{ properties - - var $error_message_prefix = ''; - var $mode = PEAR_ERROR_RETURN; - var $level = E_USER_NOTICE; - var $code = -1; - var $message = ''; - var $userinfo = ''; - var $backtrace = null; - - // }}} - // {{{ constructor - - /** - * PEAR_Error constructor - * - * @param string $message message - * - * @param int $code (optional) error code - * - * @param int $mode (optional) error mode, one of: PEAR_ERROR_RETURN, - * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER, - * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION - * - * @param mixed $options (optional) error level, _OR_ in the case of - * PEAR_ERROR_CALLBACK, the callback function or object/method - * tuple. - * - * @param string $userinfo (optional) additional user/debug info - * - * @access public - * - */ - function __construct($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null) - { - if ($mode === null) { - $mode = PEAR_ERROR_RETURN; - } - $this->message = $message; - $this->code = $code; - $this->mode = $mode; - $this->userinfo = $userinfo; - if (!PEAR::getStaticProperty('PEAR_Error', 'skiptrace')) { - $this->backtrace = debug_backtrace(); - if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) { - unset($this->backtrace[0]['object']); - } - } - if ($mode & PEAR_ERROR_CALLBACK) { - $this->level = E_USER_NOTICE; - $this->callback = $options; - } else { - if ($options === null) { - $options = E_USER_NOTICE; - } - $this->level = $options; - $this->callback = null; - } - if ($this->mode & PEAR_ERROR_PRINT) { - if (is_null($options) || is_int($options)) { - $format = "%s"; - } else { - $format = $options; - } - printf($format, $this->getMessage()); - } - if ($this->mode & PEAR_ERROR_TRIGGER) { - trigger_error($this->getMessage(), $this->level); - } - if ($this->mode & PEAR_ERROR_DIE) { - $msg = $this->getMessage(); - if (is_null($options) || is_int($options)) { - $format = "%s"; - if (substr($msg, -1) != "\n") { - $msg .= "\n"; - } - } else { - $format = $options; - } - die(sprintf($format, $msg)); - } - if ($this->mode & PEAR_ERROR_CALLBACK) { - if (is_callable($this->callback)) { - call_user_func($this->callback, $this); - } - } - if ($this->mode & PEAR_ERROR_EXCEPTION) { - trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING); - eval('$e = new Exception($this->message, $this->code);throw($e);'); - } - } - - // }}} - // {{{ getMode() - - /** - * Get the error mode from an error object. - * - * @return int error mode - * @access public - */ - function getMode() { - return $this->mode; - } - - // }}} - // {{{ getCallback() - - /** - * Get the callback function/method from an error object. - * - * @return mixed callback function or object/method array - * @access public - */ - function getCallback() { - return $this->callback; - } - - // }}} - // {{{ getMessage() - - - /** - * Get the error message from an error object. - * - * @return string full error message - * @access public - */ - function getMessage() - { - return ($this->error_message_prefix . $this->message); - } - - - // }}} - // {{{ getCode() - - /** - * Get error code from an error object - * - * @return int error code - * @access public - */ - function getCode() - { - return $this->code; - } - - // }}} - // {{{ getType() - - /** - * Get the name of this error/exception. - * - * @return string error/exception name (type) - * @access public - */ - function getType() - { - return get_class($this); - } - - // }}} - // {{{ getUserInfo() - - /** - * Get additional user-supplied information. - * - * @return string user-supplied information - * @access public - */ - function getUserInfo() - { - return $this->userinfo; - } - - // }}} - // {{{ getDebugInfo() - - /** - * Get additional debug information supplied by the application. - * - * @return string debug information - * @access public - */ - function getDebugInfo() - { - return $this->getUserInfo(); - } - - // }}} - // {{{ getBacktrace() - - /** - * Get the call backtrace from where the error was generated. - * Supported with PHP 4.3.0 or newer. - * - * @param int $frame (optional) what frame to fetch - * @return array Backtrace, or NULL if not available. - * @access public - */ - function getBacktrace($frame = null) - { - if (defined('PEAR_IGNORE_BACKTRACE')) { - return null; - } - if ($frame === null) { - return $this->backtrace; - } - return $this->backtrace[$frame]; - } - - // }}} - // {{{ addUserInfo() - - function addUserInfo($info) - { - if (empty($this->userinfo)) { - $this->userinfo = $info; - } else { - $this->userinfo .= " ** $info"; - } - } - - // }}} - // {{{ toString() - function __toString() - { - return $this->getMessage(); - } - // }}} - // {{{ toString() - - /** - * Make a string representation of this object. - * - * @return string a string with an object summary - * @access public - */ - function toString() { - $modes = array(); - $levels = array(E_USER_NOTICE => 'notice', - E_USER_WARNING => 'warning', - E_USER_ERROR => 'error'); - if ($this->mode & PEAR_ERROR_CALLBACK) { - if (is_array($this->callback)) { - $callback = (is_object($this->callback[0]) ? - strtolower(get_class($this->callback[0])) : - $this->callback[0]) . '::' . - $this->callback[1]; - } else { - $callback = $this->callback; - } - return sprintf('[%s: message="%s" code=%d mode=callback '. - 'callback=%s prefix="%s" info="%s"]', - strtolower(get_class($this)), $this->message, $this->code, - $callback, $this->error_message_prefix, - $this->userinfo); - } - if ($this->mode & PEAR_ERROR_PRINT) { - $modes[] = 'print'; - } - if ($this->mode & PEAR_ERROR_TRIGGER) { - $modes[] = 'trigger'; - } - if ($this->mode & PEAR_ERROR_DIE) { - $modes[] = 'die'; - } - if ($this->mode & PEAR_ERROR_RETURN) { - $modes[] = 'return'; - } - return sprintf('[%s: message="%s" code=%d mode=%s level=%s '. - 'prefix="%s" info="%s"]', - strtolower(get_class($this)), $this->message, $this->code, - implode("|", $modes), $levels[$this->level], - $this->error_message_prefix, - $this->userinfo); - } - - // }}} -} - -/* - * Local Variables: - * mode: php - * tab-width: 4 - * c-basic-offset: 4 - * End: - */ -?> diff --git a/src/vitis/vas/rest/class/PEAR/PackageFile.php b/src/vitis/vas/rest/class/PEAR/PackageFile.php deleted file mode 100755 index 0dc42e9739c74475aa28f4620cf08ab19d0b7b30..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PackageFile.php +++ /dev/null @@ -1,474 +0,0 @@ -<?php -/** - * PEAR_PackageFile, package.xml parsing utility class - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: PackageFile.php,v 1.41 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * needed for PEAR_VALIDATE_* constants - */ -require_once 'PEAR/Validate.php'; -/** - * Error code if the package.xml <package> tag does not contain a valid version - */ -define('PEAR_PACKAGEFILE_ERROR_NO_PACKAGEVERSION', 1); -/** - * Error code if the package.xml <package> tag version is not supported (version 1.0 and 1.1 are the only supported versions, - * currently - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_PACKAGEVERSION', 2); -/** - * Abstraction for the package.xml package description file - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile -{ - /** - * @var PEAR_Config - */ - var $_config; - var $_debug; - /** - * Temp directory for uncompressing tgz files. - * @var string|false - */ - var $_tmpdir; - var $_logger = false; - /** - * @var boolean - */ - var $_rawReturn = false; - - /** - * - * @param PEAR_Config $config - * @param ? $debug - * @param string @tmpdir Optional temporary directory for uncompressing - * files - */ - function PEAR_PackageFile(&$config, $debug = false, $tmpdir = false) - { - $this->_config = $config; - $this->_debug = $debug; - $this->_tmpdir = $tmpdir; - } - - /** - * Turn off validation - return a parsed package.xml without checking it - * - * This is used by the package-validate command - */ - function rawReturn() - { - $this->_rawReturn = true; - } - - function setLogger(&$l) - { - $this->_logger = &$l; - } - - /** - * Create a PEAR_PackageFile_Parser_v* of a given version. - * @param int $version - * @return PEAR_PackageFile_Parser_v1|PEAR_PackageFile_Parser_v1 - */ - function &parserFactory($version) - { - if (!in_array($version{0}, array('1', '2'))) { - $a = false; - return $a; - } - include_once 'PEAR/PackageFile/Parser/v' . $version{0} . '.php'; - $version = $version{0}; - $class = "PEAR_PackageFile_Parser_v$version"; - $a = new $class; - return $a; - } - - /** - * For simpler unit-testing - * @return string - */ - function getClassPrefix() - { - return 'PEAR_PackageFile_v'; - } - - /** - * Create a PEAR_PackageFile_v* of a given version. - * @param int $version - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v1 - */ - function &factory($version) - { - if (!in_array($version{0}, array('1', '2'))) { - $a = false; - return $a; - } - include_once 'PEAR/PackageFile/v' . $version{0} . '.php'; - $version = $version{0}; - $class = $this->getClassPrefix() . $version; - $a = new $class; - return $a; - } - - /** - * Create a PEAR_PackageFile_v* from its toArray() method - * - * WARNING: no validation is performed, the array is assumed to be valid, - * always parse from xml if you want validation. - * @param array $arr - * @return PEAR_PackageFileManager_v1|PEAR_PackageFileManager_v2 - * @uses factory() to construct the returned object. - */ - function &fromArray($arr) - { - if (isset($arr['xsdversion'])) { - $obj = &$this->factory($arr['xsdversion']); - if ($this->_logger) { - $obj->setLogger($this->_logger); - } - $obj->setConfig($this->_config); - $obj->fromArray($arr); - return $obj; - } else { - if (isset($arr['package']['attribs']['version'])) { - $obj = &$this->factory($arr['package']['attribs']['version']); - } else { - $obj = &$this->factory('1.0'); - } - if ($this->_logger) { - $obj->setLogger($this->_logger); - } - $obj->setConfig($this->_config); - $obj->fromArray($arr); - return $obj; - } - } - - /** - * Create a PEAR_PackageFile_v* from an XML string. - * @access public - * @param string $data contents of package.xml file - * @param int $state package state (one of PEAR_VALIDATE_* constants) - * @param string $file full path to the package.xml file (and the files - * it references) - * @param string $archive optional name of the archive that the XML was - * extracted from, if any - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @uses parserFactory() to construct a parser to load the package. - */ - function &fromXmlString($data, $state, $file, $archive = false) - { - if (preg_match('/<package[^>]+version="([0-9]+\.[0-9]+)"/', $data, $packageversion)) { - if (!in_array($packageversion[1], array('1.0', '2.0', '2.1'))) { - return PEAR::raiseError('package.xml version "' . $packageversion[1] . - '" is not supported, only 1.0, 2.0, and 2.1 are supported.'); - } - $object = &$this->parserFactory($packageversion[1]); - if ($this->_logger) { - $object->setLogger($this->_logger); - } - $object->setConfig($this->_config); - $pf = $object->parse($data, $file, $archive); - if (PEAR::isError($pf)) { - return $pf; - } - if ($this->_rawReturn) { - return $pf; - } - if ($pf->validate($state)) { - if ($this->_logger) { - if ($pf->getValidationWarnings(false)) { - foreach ($pf->getValidationWarnings() as $warning) { - $this->_logger->log(0, 'WARNING: ' . $warning['message']); - } - } - } - if (method_exists($pf, 'flattenFilelist')) { - $pf->flattenFilelist(); // for v2 - } - return $pf; - } else { - if ($this->_config->get('verbose') > 0) { - if ($this->_logger) { - if ($pf->getValidationWarnings(false)) { - foreach ($pf->getValidationWarnings(false) as $warning) { - $this->_logger->log(0, 'ERROR: ' . $warning['message']); - } - } - } - } - $a = PEAR::raiseError('Parsing of package.xml from file "' . $file . '" failed', - 2, null, null, $pf->getValidationWarnings()); - return $a; - } - } elseif (preg_match('/<package[^>]+version="([^"]+)"/', $data, $packageversion)) { - $a = PEAR::raiseError('package.xml file "' . $file . - '" has unsupported package.xml <package> version "' . $packageversion[1] . '"'); - return $a; - } else { - if (!class_exists('PEAR_ErrorStack')) { - require_once 'PEAR/ErrorStack.php'; - } - PEAR_ErrorStack::staticPush('PEAR_PackageFile', - PEAR_PACKAGEFILE_ERROR_NO_PACKAGEVERSION, - 'warning', array('xml' => $data), 'package.xml "' . $file . - '" has no package.xml <package> version'); - $object = &$this->parserFactory('1.0'); - $object->setConfig($this->_config); - $pf = $object->parse($data, $file, $archive); - if (PEAR::isError($pf)) { - return $pf; - } - if ($this->_rawReturn) { - return $pf; - } - if ($pf->validate($state)) { - if ($this->_logger) { - if ($pf->getValidationWarnings(false)) { - foreach ($pf->getValidationWarnings() as $warning) { - $this->_logger->log(0, 'WARNING: ' . $warning['message']); - } - } - } - if (method_exists($pf, 'flattenFilelist')) { - $pf->flattenFilelist(); // for v2 - } - return $pf; - } else { - $a = PEAR::raiseError('Parsing of package.xml from file "' . $file . '" failed', - 2, null, null, $pf->getValidationWarnings()); - return $a; - } - } - } - - /** - * Register a temporary file or directory. When the destructor is - * executed, all registered temporary files and directories are - * removed. - * - * @param string $file name of file or directory - * @return void - */ - function addTempFile($file) - { - $GLOBALS['_PEAR_Common_tempfiles'][] = $file; - } - - /** - * Create a PEAR_PackageFile_v* from a compresed Tar or Tgz file. - * @access public - * @param string contents of package.xml file - * @param int package state (one of PEAR_VALIDATE_* constants) - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @using Archive_Tar to extract the files - * @using fromPackageFile() to load the package after the package.xml - * file is extracted. - */ - function &fromTgzFile($file, $state) - { - if (!class_exists('Archive_Tar')) { - require_once 'Archive/Tar.php'; - } - $tar = new Archive_Tar($file); - if ($this->_debug <= 1) { - $tar->pushErrorHandling(PEAR_ERROR_RETURN); - } - $content = $tar->listContent(); - if ($this->_debug <= 1) { - $tar->popErrorHandling(); - } - if (!is_array($content)) { - if (is_string($file) && strlen($file < 255) && - (!file_exists($file) || !@is_file($file))) { - $ret = PEAR::raiseError("could not open file \"$file\""); - return $ret; - } - $file = realpath($file); - $ret = PEAR::raiseError("Could not get contents of package \"$file\"". - '. Invalid tgz file.'); - return $ret; - } else { - if (!count($content) && !@is_file($file)) { - $ret = PEAR::raiseError("could not open file \"$file\""); - return $ret; - } - } - $xml = null; - $origfile = $file; - foreach ($content as $file) { - $name = $file['filename']; - if ($name == 'package2.xml') { // allow a .tgz to distribute both versions - $xml = $name; - break; - } - if ($name == 'package.xml') { - $xml = $name; - break; - } elseif (ereg('package.xml$', $name, $match)) { - $xml = $name; - break; - } - } - if ($this->_tmpdir) { - $tmpdir = $this->_tmpdir; - } else { - $tmpdir = System::mkTemp(array('-d', 'pear')); - PEAR_PackageFile::addTempFile($tmpdir); - } - $this->_extractErrors(); - PEAR::staticPushErrorHandling(PEAR_ERROR_CALLBACK, array($this, '_extractErrors')); - if (!$xml || !$tar->extractList(array($xml), $tmpdir)) { - $extra = implode("\n", $this->_extractErrors()); - if ($extra) { - $extra = ' ' . $extra; - } - PEAR::staticPopErrorHandling(); - $ret = PEAR::raiseError('could not extract the package.xml file from "' . - $origfile . '"' . $extra); - return $ret; - } - PEAR::staticPopErrorHandling(); - $ret = &PEAR_PackageFile::fromPackageFile("$tmpdir/$xml", $state, $origfile); - return $ret; - } - - /** - * helper for extracting Archive_Tar errors - * @var array - * @access private - */ - var $_extractErrors = array(); - - /** - * helper callback for extracting Archive_Tar errors - * - * @param PEAR_Error|null $err - * @return array - * @access private - */ - function _extractErrors($err = null) - { - static $errors = array(); - if ($err === null) { - $e = $errors; - $errors = array(); - return $e; - } - $errors[] = $err->getMessage(); - } - - /** - * Create a PEAR_PackageFile_v* from a package.xml file. - * - * @access public - * @param string $descfile name of package xml file - * @param int $state package state (one of PEAR_VALIDATE_* constants) - * @param string|false $archive name of the archive this package.xml came - * from, if any - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @uses PEAR_PackageFile::fromXmlString to create the oject after the - * XML is loaded from the package.xml file. - */ - function &fromPackageFile($descfile, $state, $archive = false) - { - if (is_string($descfile) && strlen($descfile) < 255 && - (!file_exists($descfile) || !is_file($descfile) || !is_readable($descfile) || - (!$fp = @fopen($descfile, 'r')))) { - $a = PEAR::raiseError("Unable to open $descfile"); - return $a; - } - - // read the whole thing so we only get one cdata callback - // for each block of cdata - fclose($fp); - $data = file_get_contents($descfile); - $ret = &PEAR_PackageFile::fromXmlString($data, $state, $descfile, $archive); - return $ret; - } - - - /** - * Create a PEAR_PackageFile_v* from a .tgz archive or package.xml file. - * - * This method is able to extract information about a package from a .tgz - * archive or from a XML package definition file. - * - * @access public - * @param string $info file name - * @param int $state package state (one of PEAR_VALIDATE_* constants) - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @uses fromPackageFile() if the file appears to be XML - * @uses fromTgzFile() to load all non-XML files - */ - function &fromAnyFile($info, $state) - { - if (is_dir($info)) { - $dir_name = realpath($info); - if (file_exists($dir_name . '/package.xml')) { - $info = PEAR_PackageFile::fromPackageFile($dir_name . '/package.xml', $state); - } elseif (file_exists($dir_name . '/package2.xml')) { - $info = PEAR_PackageFile::fromPackageFile($dir_name . '/package2.xml', $state); - } else { - $info = PEAR::raiseError("No package definition found in '$info' directory"); - } - return $info; - } - - $fp = false; - if (is_string($info) && strlen($info) < 255 && - (file_exists($info) || ($fp = @fopen($info, 'r')))) { - if ($fp) { - fclose($fp); - } - $tmp = substr($info, -4); - if ($tmp == '.xml') { - $info = &PEAR_PackageFile::fromPackageFile($info, $state); - } elseif ($tmp == '.tar' || $tmp == '.tgz') { - $info = &PEAR_PackageFile::fromTgzFile($info, $state); - } else { - $fp = fopen($info, "r"); - $test = fread($fp, 5); - fclose($fp); - if ($test == "<?xml") { - $info = &PEAR_PackageFile::fromPackageFile($info, $state); - } else { - $info = &PEAR_PackageFile::fromTgzFile($info, $state); - } - } - } else { - $info = PEAR::raiseError("Cannot open '$info' for parsing"); - return $info; - } - return $info; - } -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/PackageFile/Generator/v1.php b/src/vitis/vas/rest/class/PEAR/PackageFile/Generator/v1.php deleted file mode 100755 index e6c5c94c1261a2d58cd508689ad317d034d45c2f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PackageFile/Generator/v1.php +++ /dev/null @@ -1,1272 +0,0 @@ -<?php -/** - * package.xml generation class, package.xml version 1.0 - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: v1.php,v 1.74 2008/01/03 20:26:37 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * needed for PEAR_VALIDATE_* constants - */ -require_once 'PEAR/Validate.php'; -require_once 'System.php'; -require_once 'PEAR/PackageFile/v2.php'; -/** - * This class converts a PEAR_PackageFile_v1 object into any output format. - * - * Supported output formats include array, XML string, and a PEAR_PackageFile_v2 - * object, for converting package.xml 1.0 into package.xml 2.0 with no sweat. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_Generator_v1 -{ - /** - * @var PEAR_PackageFile_v1 - */ - var $_packagefile; - function PEAR_PackageFile_Generator_v1(&$packagefile) - { - $this->_packagefile = &$packagefile; - } - - function getPackagerVersion() - { - return '1.7.2'; - } - - /** - * @param PEAR_Packager - * @param bool if true, a .tgz is written, otherwise a .tar is written - * @param string|null directory in which to save the .tgz - * @return string|PEAR_Error location of package or error object - */ - function toTgz(&$packager, $compress = true, $where = null) - { - require_once 'Archive/Tar.php'; - if ($where === null) { - if (!($where = System::mktemp(array('-d')))) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: mktemp failed'); - } - } elseif (!@System::mkDir(array('-p', $where))) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: "' . $where . '" could' . - ' not be created'); - } - if (file_exists($where . DIRECTORY_SEPARATOR . 'package.xml') && - !is_file($where . DIRECTORY_SEPARATOR . 'package.xml')) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: unable to save package.xml as' . - ' "' . $where . DIRECTORY_SEPARATOR . 'package.xml"'); - } - if (!$this->_packagefile->validate(PEAR_VALIDATE_PACKAGING)) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: invalid package file'); - } - $pkginfo = $this->_packagefile->getArray(); - $ext = $compress ? '.tgz' : '.tar'; - $pkgver = $pkginfo['package'] . '-' . $pkginfo['version']; - $dest_package = getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext; - if (file_exists(getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext) && - !is_file(getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext)) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: cannot create tgz file "' . - getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext . '"'); - } - if ($pkgfile = $this->_packagefile->getPackageFile()) { - $pkgdir = dirname(realpath($pkgfile)); - $pkgfile = basename($pkgfile); - } else { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: package file object must ' . - 'be created from a real file'); - } - // {{{ Create the package file list - $filelist = array(); - $i = 0; - - foreach ($this->_packagefile->getFilelist() as $fname => $atts) { - $file = $pkgdir . DIRECTORY_SEPARATOR . $fname; - if (!file_exists($file)) { - return PEAR::raiseError("File does not exist: $fname"); - } else { - $filelist[$i++] = $file; - if (!isset($atts['md5sum'])) { - $this->_packagefile->setFileAttribute($fname, 'md5sum', md5_file($file)); - } - $packager->log(2, "Adding file $fname"); - } - } - // }}} - $packagexml = $this->toPackageFile($where, PEAR_VALIDATE_PACKAGING, 'package.xml', true); - if ($packagexml) { - $tar =& new Archive_Tar($dest_package, $compress); - $tar->setErrorHandling(PEAR_ERROR_RETURN); // XXX Don't print errors - // ----- Creates with the package.xml file - $ok = $tar->createModify(array($packagexml), '', $where); - if (PEAR::isError($ok)) { - return $ok; - } elseif (!$ok) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: tarball creation failed'); - } - // ----- Add the content of the package - if (!$tar->addModify($filelist, $pkgver, $pkgdir)) { - return PEAR::raiseError('PEAR_Packagefile_v1::toTgz: tarball creation failed'); - } - return $dest_package; - } - } - - /** - * @param string|null directory to place the package.xml in, or null for a temporary dir - * @param int one of the PEAR_VALIDATE_* constants - * @param string name of the generated file - * @param bool if true, then no analysis will be performed on role="php" files - * @return string|PEAR_Error path to the created file on success - */ - function toPackageFile($where = null, $state = PEAR_VALIDATE_NORMAL, $name = 'package.xml', - $nofilechecking = false) - { - if (!$this->_packagefile->validate($state, $nofilechecking)) { - return PEAR::raiseError('PEAR_Packagefile_v1::toPackageFile: invalid package.xml', - null, null, null, $this->_packagefile->getValidationWarnings()); - } - if ($where === null) { - if (!($where = System::mktemp(array('-d')))) { - return PEAR::raiseError('PEAR_Packagefile_v1::toPackageFile: mktemp failed'); - } - } elseif (!@System::mkDir(array('-p', $where))) { - return PEAR::raiseError('PEAR_Packagefile_v1::toPackageFile: "' . $where . '" could' . - ' not be created'); - } - $newpkgfile = $where . DIRECTORY_SEPARATOR . $name; - $np = @fopen($newpkgfile, 'wb'); - if (!$np) { - return PEAR::raiseError('PEAR_Packagefile_v1::toPackageFile: unable to save ' . - "$name as $newpkgfile"); - } - fwrite($np, $this->toXml($state, true)); - fclose($np); - return $newpkgfile; - } - - /** - * fix both XML encoding to be UTF8, and replace standard XML entities < > " & ' - * - * @param string $string - * @return string - * @access private - */ - function _fixXmlEncoding($string) - { - if (version_compare(phpversion(), '5.0.0', 'lt')) { - $string = utf8_encode($string); - } - return strtr($string, array( - '&' => '&', - '>' => '>', - '<' => '<', - '"' => '"', - '\'' => ''' )); - } - - /** - * Return an XML document based on the package info (as returned - * by the PEAR_Common::infoFrom* methods). - * - * @return string XML data - */ - function toXml($state = PEAR_VALIDATE_NORMAL, $nofilevalidation = false) - { - $this->_packagefile->setDate(date('Y-m-d')); - if (!$this->_packagefile->validate($state, $nofilevalidation)) { - return false; - } - $pkginfo = $this->_packagefile->getArray(); - static $maint_map = array( - "handle" => "user", - "name" => "name", - "email" => "email", - "role" => "role", - ); - $ret = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"; - $ret .= "<!DOCTYPE package SYSTEM \"http://pear.php.net/dtd/package-1.0\">\n"; - $ret .= "<package version=\"1.0\" packagerversion=\"1.7.2\">\n" . -" <name>$pkginfo[package]</name>"; - if (isset($pkginfo['extends'])) { - $ret .= "\n<extends>$pkginfo[extends]</extends>"; - } - $ret .= - "\n <summary>".$this->_fixXmlEncoding($pkginfo['summary'])."</summary>\n" . -" <description>".trim($this->_fixXmlEncoding($pkginfo['description']))."\n </description>\n" . -" <maintainers>\n"; - foreach ($pkginfo['maintainers'] as $maint) { - $ret .= " <maintainer>\n"; - foreach ($maint_map as $idx => $elm) { - $ret .= " <$elm>"; - $ret .= $this->_fixXmlEncoding($maint[$idx]); - $ret .= "</$elm>\n"; - } - $ret .= " </maintainer>\n"; - } - $ret .= " </maintainers>\n"; - $ret .= $this->_makeReleaseXml($pkginfo, false, $state); - if (isset($pkginfo['changelog']) && count($pkginfo['changelog']) > 0) { - $ret .= " <changelog>\n"; - foreach ($pkginfo['changelog'] as $oldrelease) { - $ret .= $this->_makeReleaseXml($oldrelease, true); - } - $ret .= " </changelog>\n"; - } - $ret .= "</package>\n"; - return $ret; - } - - // }}} - // {{{ _makeReleaseXml() - - /** - * Generate part of an XML description with release information. - * - * @param array $pkginfo array with release information - * @param bool $changelog whether the result will be in a changelog element - * - * @return string XML data - * - * @access private - */ - function _makeReleaseXml($pkginfo, $changelog = false, $state = PEAR_VALIDATE_NORMAL) - { - // XXX QUOTE ENTITIES IN PCDATA, OR EMBED IN CDATA BLOCKS!! - $indent = $changelog ? " " : ""; - $ret = "$indent <release>\n"; - if (!empty($pkginfo['version'])) { - $ret .= "$indent <version>$pkginfo[version]</version>\n"; - } - if (!empty($pkginfo['release_date'])) { - $ret .= "$indent <date>$pkginfo[release_date]</date>\n"; - } - if (!empty($pkginfo['release_license'])) { - $ret .= "$indent <license>$pkginfo[release_license]</license>\n"; - } - if (!empty($pkginfo['release_state'])) { - $ret .= "$indent <state>$pkginfo[release_state]</state>\n"; - } - if (!empty($pkginfo['release_notes'])) { - $ret .= "$indent <notes>".trim($this->_fixXmlEncoding($pkginfo['release_notes'])) - ."\n$indent </notes>\n"; - } - if (!empty($pkginfo['release_warnings'])) { - $ret .= "$indent <warnings>".$this->_fixXmlEncoding($pkginfo['release_warnings'])."</warnings>\n"; - } - if (isset($pkginfo['release_deps']) && sizeof($pkginfo['release_deps']) > 0) { - $ret .= "$indent <deps>\n"; - foreach ($pkginfo['release_deps'] as $dep) { - $ret .= "$indent <dep type=\"$dep[type]\" rel=\"$dep[rel]\""; - if (isset($dep['version'])) { - $ret .= " version=\"$dep[version]\""; - } - if (isset($dep['optional'])) { - $ret .= " optional=\"$dep[optional]\""; - } - if (isset($dep['name'])) { - $ret .= ">$dep[name]</dep>\n"; - } else { - $ret .= "/>\n"; - } - } - $ret .= "$indent </deps>\n"; - } - if (isset($pkginfo['configure_options'])) { - $ret .= "$indent <configureoptions>\n"; - foreach ($pkginfo['configure_options'] as $c) { - $ret .= "$indent <configureoption name=\"". - $this->_fixXmlEncoding($c['name']) . "\""; - if (isset($c['default'])) { - $ret .= " default=\"" . $this->_fixXmlEncoding($c['default']) . "\""; - } - $ret .= " prompt=\"" . $this->_fixXmlEncoding($c['prompt']) . "\""; - $ret .= "/>\n"; - } - $ret .= "$indent </configureoptions>\n"; - } - if (isset($pkginfo['provides'])) { - foreach ($pkginfo['provides'] as $key => $what) { - $ret .= "$indent <provides type=\"$what[type]\" "; - $ret .= "name=\"$what[name]\" "; - if (isset($what['extends'])) { - $ret .= "extends=\"$what[extends]\" "; - } - $ret .= "/>\n"; - } - } - if (isset($pkginfo['filelist'])) { - $ret .= "$indent <filelist>\n"; - if ($state ^ PEAR_VALIDATE_PACKAGING) { - $ret .= $this->recursiveXmlFilelist($pkginfo['filelist']); - } else { - foreach ($pkginfo['filelist'] as $file => $fa) { - if (!isset($fa['role'])) { - $fa['role'] = ''; - } - $ret .= "$indent <file role=\"$fa[role]\""; - if (isset($fa['baseinstalldir'])) { - $ret .= ' baseinstalldir="' . - $this->_fixXmlEncoding($fa['baseinstalldir']) . '"'; - } - if (isset($fa['md5sum'])) { - $ret .= " md5sum=\"$fa[md5sum]\""; - } - if (isset($fa['platform'])) { - $ret .= " platform=\"$fa[platform]\""; - } - if (!empty($fa['install-as'])) { - $ret .= ' install-as="' . - $this->_fixXmlEncoding($fa['install-as']) . '"'; - } - $ret .= ' name="' . $this->_fixXmlEncoding($file) . '"'; - if (empty($fa['replacements'])) { - $ret .= "/>\n"; - } else { - $ret .= ">\n"; - foreach ($fa['replacements'] as $r) { - $ret .= "$indent <replace"; - foreach ($r as $k => $v) { - $ret .= " $k=\"" . $this->_fixXmlEncoding($v) .'"'; - } - $ret .= "/>\n"; - } - $ret .= "$indent </file>\n"; - } - } - } - $ret .= "$indent </filelist>\n"; - } - $ret .= "$indent </release>\n"; - return $ret; - } - - /** - * @param array - * @access protected - */ - function recursiveXmlFilelist($list) - { - $this->_dirs = array(); - foreach ($list as $file => $attributes) { - $this->_addDir($this->_dirs, explode('/', dirname($file)), $file, $attributes); - } - return $this->_formatDir($this->_dirs); - } - - /** - * @param array - * @param array - * @param string|null - * @param array|null - * @access private - */ - function _addDir(&$dirs, $dir, $file = null, $attributes = null) - { - if ($dir == array() || $dir == array('.')) { - $dirs['files'][basename($file)] = $attributes; - return; - } - $curdir = array_shift($dir); - if (!isset($dirs['dirs'][$curdir])) { - $dirs['dirs'][$curdir] = array(); - } - $this->_addDir($dirs['dirs'][$curdir], $dir, $file, $attributes); - } - - /** - * @param array - * @param string - * @param string - * @access private - */ - function _formatDir($dirs, $indent = '', $curdir = '') - { - $ret = ''; - if (!count($dirs)) { - return ''; - } - if (isset($dirs['dirs'])) { - uksort($dirs['dirs'], 'strnatcasecmp'); - foreach ($dirs['dirs'] as $dir => $contents) { - $usedir = "$curdir/$dir"; - $ret .= "$indent <dir name=\"$dir\">\n"; - $ret .= $this->_formatDir($contents, "$indent ", $usedir); - $ret .= "$indent </dir> <!-- $usedir -->\n"; - } - } - if (isset($dirs['files'])) { - uksort($dirs['files'], 'strnatcasecmp'); - foreach ($dirs['files'] as $file => $attribs) { - $ret .= $this->_formatFile($file, $attribs, $indent); - } - } - return $ret; - } - - /** - * @param string - * @param array - * @param string - * @access private - */ - function _formatFile($file, $attributes, $indent) - { - $ret = "$indent <file role=\"$attributes[role]\""; - if (isset($attributes['baseinstalldir'])) { - $ret .= ' baseinstalldir="' . - $this->_fixXmlEncoding($attributes['baseinstalldir']) . '"'; - } - if (isset($attributes['md5sum'])) { - $ret .= " md5sum=\"$attributes[md5sum]\""; - } - if (isset($attributes['platform'])) { - $ret .= " platform=\"$attributes[platform]\""; - } - if (!empty($attributes['install-as'])) { - $ret .= ' install-as="' . - $this->_fixXmlEncoding($attributes['install-as']) . '"'; - } - $ret .= ' name="' . $this->_fixXmlEncoding($file) . '"'; - if (empty($attributes['replacements'])) { - $ret .= "/>\n"; - } else { - $ret .= ">\n"; - foreach ($attributes['replacements'] as $r) { - $ret .= "$indent <replace"; - foreach ($r as $k => $v) { - $ret .= " $k=\"" . $this->_fixXmlEncoding($v) .'"'; - } - $ret .= "/>\n"; - } - $ret .= "$indent </file>\n"; - } - return $ret; - } - - // {{{ _unIndent() - - /** - * Unindent given string (?) - * - * @param string $str The string that has to be unindented. - * @return string - * @access private - */ - function _unIndent($str) - { - // remove leading newlines - $str = preg_replace('/^[\r\n]+/', '', $str); - // find whitespace at the beginning of the first line - $indent_len = strspn($str, " \t"); - $indent = substr($str, 0, $indent_len); - $data = ''; - // remove the same amount of whitespace from following lines - foreach (explode("\n", $str) as $line) { - if (substr($line, 0, $indent_len) == $indent) { - $data .= substr($line, $indent_len) . "\n"; - } - } - return $data; - } - - /** - * @return array - */ - function dependenciesToV2() - { - $arr = array(); - $this->_convertDependencies2_0($arr); - return $arr['dependencies']; - } - - /** - * Convert a package.xml version 1.0 into version 2.0 - * - * Note that this does a basic conversion, to allow more advanced - * features like bundles and multiple releases - * @param string the classname to instantiate and return. This must be - * PEAR_PackageFile_v2 or a descendant - * @param boolean if true, only valid, deterministic package.xml 1.0 as defined by the - * strictest parameters will be converted - * @return PEAR_PackageFile_v2|PEAR_Error - */ - function &toV2($class = 'PEAR_PackageFile_v2', $strict = false) - { - if ($strict) { - if (!$this->_packagefile->validate()) { - $a = PEAR::raiseError('invalid package.xml version 1.0 cannot be converted' . - ' to version 2.0', null, null, null, - $this->_packagefile->getValidationWarnings(true)); - return $a; - } - } - $arr = array( - 'attribs' => array( - 'version' => '2.0', - 'xmlns' => 'http://pear.php.net/dtd/package-2.0', - 'xmlns:tasks' => 'http://pear.php.net/dtd/tasks-1.0', - 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:schemaLocation' => "http://pear.php.net/dtd/tasks-1.0\n" . -"http://pear.php.net/dtd/tasks-1.0.xsd\n" . -"http://pear.php.net/dtd/package-2.0\n" . -'http://pear.php.net/dtd/package-2.0.xsd', - ), - 'name' => $this->_packagefile->getPackage(), - 'channel' => 'pear.php.net', - ); - $arr['summary'] = $this->_packagefile->getSummary(); - $arr['description'] = $this->_packagefile->getDescription(); - $maintainers = $this->_packagefile->getMaintainers(); - foreach ($maintainers as $maintainer) { - if ($maintainer['role'] != 'lead') { - continue; - } - $new = array( - 'name' => $maintainer['name'], - 'user' => $maintainer['handle'], - 'email' => $maintainer['email'], - 'active' => 'yes', - ); - $arr['lead'][] = $new; - } - if (!isset($arr['lead'])) { // some people... you know? - $arr['lead'] = array( - 'name' => 'unknown', - 'user' => 'unknown', - 'email' => 'noleadmaintainer@example.com', - 'active' => 'no', - ); - } - if (count($arr['lead']) == 1) { - $arr['lead'] = $arr['lead'][0]; - } - foreach ($maintainers as $maintainer) { - if ($maintainer['role'] == 'lead') { - continue; - } - $new = array( - 'name' => $maintainer['name'], - 'user' => $maintainer['handle'], - 'email' => $maintainer['email'], - 'active' => 'yes', - ); - $arr[$maintainer['role']][] = $new; - } - if (isset($arr['developer']) && count($arr['developer']) == 1) { - $arr['developer'] = $arr['developer'][0]; - } - if (isset($arr['contributor']) && count($arr['contributor']) == 1) { - $arr['contributor'] = $arr['contributor'][0]; - } - if (isset($arr['helper']) && count($arr['helper']) == 1) { - $arr['helper'] = $arr['helper'][0]; - } - $arr['date'] = $this->_packagefile->getDate(); - $arr['version'] = - array( - 'release' => $this->_packagefile->getVersion(), - 'api' => $this->_packagefile->getVersion(), - ); - $arr['stability'] = - array( - 'release' => $this->_packagefile->getState(), - 'api' => $this->_packagefile->getState(), - ); - $licensemap = - array( - 'php' => 'http://www.php.net/license', - 'php license' => 'http://www.php.net/license', - 'lgpl' => 'http://www.gnu.org/copyleft/lesser.html', - 'bsd' => 'http://www.opensource.org/licenses/bsd-license.php', - 'bsd style' => 'http://www.opensource.org/licenses/bsd-license.php', - 'bsd-style' => 'http://www.opensource.org/licenses/bsd-license.php', - 'mit' => 'http://www.opensource.org/licenses/mit-license.php', - 'gpl' => 'http://www.gnu.org/copyleft/gpl.html', - 'apache' => 'http://www.opensource.org/licenses/apache2.0.php' - ); - if (isset($licensemap[strtolower($this->_packagefile->getLicense())])) { - $arr['license'] = array( - 'attribs' => array('uri' => - $licensemap[strtolower($this->_packagefile->getLicense())]), - '_content' => $this->_packagefile->getLicense() - ); - } else { - // don't use bogus uri - $arr['license'] = $this->_packagefile->getLicense(); - } - $arr['notes'] = $this->_packagefile->getNotes(); - $temp = array(); - $arr['contents'] = $this->_convertFilelist2_0($temp); - $this->_convertDependencies2_0($arr); - $release = ($this->_packagefile->getConfigureOptions() || $this->_isExtension) ? - 'extsrcrelease' : 'phprelease'; - if ($release == 'extsrcrelease') { - $arr['channel'] = 'pecl.php.net'; - $arr['providesextension'] = $arr['name']; // assumption - } - $arr[$release] = array(); - if ($this->_packagefile->getConfigureOptions()) { - $arr[$release]['configureoption'] = $this->_packagefile->getConfigureOptions(); - foreach ($arr[$release]['configureoption'] as $i => $opt) { - $arr[$release]['configureoption'][$i] = array('attribs' => $opt); - } - if (count($arr[$release]['configureoption']) == 1) { - $arr[$release]['configureoption'] = $arr[$release]['configureoption'][0]; - } - } - $this->_convertRelease2_0($arr[$release], $temp); - if ($release == 'extsrcrelease' && count($arr[$release]) > 1) { - // multiple extsrcrelease tags added in PEAR 1.4.1 - $arr['dependencies']['required']['pearinstaller']['min'] = '1.4.1'; - } - if ($cl = $this->_packagefile->getChangelog()) { - foreach ($cl as $release) { - $rel = array(); - $rel['version'] = - array( - 'release' => $release['version'], - 'api' => $release['version'], - ); - if (!isset($release['release_state'])) { - $release['release_state'] = 'stable'; - } - $rel['stability'] = - array( - 'release' => $release['release_state'], - 'api' => $release['release_state'], - ); - if (isset($release['release_date'])) { - $rel['date'] = $release['release_date']; - } else { - $rel['date'] = date('Y-m-d'); - } - if (isset($release['release_license'])) { - if (isset($licensemap[strtolower($release['release_license'])])) { - $uri = $licensemap[strtolower($release['release_license'])]; - } else { - $uri = 'http://www.example.com'; - } - $rel['license'] = array( - 'attribs' => array('uri' => $uri), - '_content' => $release['release_license'] - ); - } else { - $rel['license'] = $arr['license']; - } - if (!isset($release['release_notes'])) { - $release['release_notes'] = 'no release notes'; - } - $rel['notes'] = $release['release_notes']; - $arr['changelog']['release'][] = $rel; - } - } - $ret = new $class; - $ret->setConfig($this->_packagefile->_config); - if (isset($this->_packagefile->_logger) && is_object($this->_packagefile->_logger)) { - $ret->setLogger($this->_packagefile->_logger); - } - $ret->fromArray($arr); - return $ret; - } - - /** - * @param array - * @param bool - * @access private - */ - function _convertDependencies2_0(&$release, $internal = false) - { - $peardep = array('pearinstaller' => - array('min' => '1.4.0b1')); // this is a lot safer - $required = $optional = array(); - $release['dependencies'] = array('required' => array()); - if ($this->_packagefile->hasDeps()) { - foreach ($this->_packagefile->getDeps() as $dep) { - if (!isset($dep['optional']) || $dep['optional'] == 'no') { - $required[] = $dep; - } else { - $optional[] = $dep; - } - } - foreach (array('required', 'optional') as $arr) { - $deps = array(); - foreach ($$arr as $dep) { - // organize deps by dependency type and name - if (!isset($deps[$dep['type']])) { - $deps[$dep['type']] = array(); - } - if (isset($dep['name'])) { - $deps[$dep['type']][$dep['name']][] = $dep; - } else { - $deps[$dep['type']][] = $dep; - } - } - do { - if (isset($deps['php'])) { - $php = array(); - if (count($deps['php']) > 1) { - $php = $this->_processPhpDeps($deps['php']); - } else { - if (!isset($deps['php'][0])) { - list($key, $blah) = each ($deps['php']); // stupid buggy versions - $deps['php'] = array($blah[0]); - } - $php = $this->_processDep($deps['php'][0]); - if (!$php) { - break; // poor mans throw - } - } - $release['dependencies'][$arr]['php'] = $php; - } - } while (false); - do { - if (isset($deps['pkg'])) { - $pkg = array(); - $pkg = $this->_processMultipleDepsName($deps['pkg']); - if (!$pkg) { - break; // poor mans throw - } - $release['dependencies'][$arr]['package'] = $pkg; - } - } while (false); - do { - if (isset($deps['ext'])) { - $pkg = array(); - $pkg = $this->_processMultipleDepsName($deps['ext']); - $release['dependencies'][$arr]['extension'] = $pkg; - } - } while (false); - // skip sapi - it's not supported so nobody will have used it - // skip os - it's not supported in 1.0 - } - } - if (isset($release['dependencies']['required'])) { - $release['dependencies']['required'] = - array_merge($peardep, $release['dependencies']['required']); - } else { - $release['dependencies']['required'] = $peardep; - } - if (!isset($release['dependencies']['required']['php'])) { - $release['dependencies']['required']['php'] = - array('min' => '4.0.0'); - } - $order = array(); - $bewm = $release['dependencies']['required']; - $order['php'] = $bewm['php']; - $order['pearinstaller'] = $bewm['pearinstaller']; - isset($bewm['package']) ? $order['package'] = $bewm['package'] :0; - isset($bewm['extension']) ? $order['extension'] = $bewm['extension'] :0; - $release['dependencies']['required'] = $order; - } - - /** - * @param array - * @access private - */ - function _convertFilelist2_0(&$package) - { - $ret = array('dir' => - array( - 'attribs' => array('name' => '/'), - 'file' => array() - ) - ); - $package['platform'] = - $package['install-as'] = array(); - $this->_isExtension = false; - foreach ($this->_packagefile->getFilelist() as $name => $file) { - $file['name'] = $name; - if (isset($file['role']) && $file['role'] == 'src') { - $this->_isExtension = true; - } - if (isset($file['replacements'])) { - $repl = $file['replacements']; - unset($file['replacements']); - } else { - unset($repl); - } - if (isset($file['install-as'])) { - $package['install-as'][$name] = $file['install-as']; - unset($file['install-as']); - } - if (isset($file['platform'])) { - $package['platform'][$name] = $file['platform']; - unset($file['platform']); - } - $file = array('attribs' => $file); - if (isset($repl)) { - foreach ($repl as $replace ) { - $file['tasks:replace'][] = array('attribs' => $replace); - } - if (count($repl) == 1) { - $file['tasks:replace'] = $file['tasks:replace'][0]; - } - } - $ret['dir']['file'][] = $file; - } - return $ret; - } - - /** - * Post-process special files with install-as/platform attributes and - * make the release tag. - * - * This complex method follows this work-flow to create the release tags: - * - * <pre> - * - if any install-as/platform exist, create a generic release and fill it with - * o <install as=..> tags for <file name=... install-as=...> - * o <install as=..> tags for <file name=... platform=!... install-as=..> - * o <ignore> tags for <file name=... platform=...> - * o <ignore> tags for <file name=... platform=... install-as=..> - * - create a release for each platform encountered and fill with - * o <install as..> tags for <file name=... install-as=...> - * o <install as..> tags for <file name=... platform=this platform install-as=..> - * o <install as..> tags for <file name=... platform=!other platform install-as=..> - * o <ignore> tags for <file name=... platform=!this platform> - * o <ignore> tags for <file name=... platform=other platform> - * o <ignore> tags for <file name=... platform=other platform install-as=..> - * o <ignore> tags for <file name=... platform=!this platform install-as=..> - * </pre> - * - * It does this by accessing the $package parameter, which contains an array with - * indices: - * - * - platform: mapping of file => OS the file should be installed on - * - install-as: mapping of file => installed name - * - osmap: mapping of OS => list of files that should be installed - * on that OS - * - notosmap: mapping of OS => list of files that should not be - * installed on that OS - * - * @param array - * @param array - * @access private - */ - function _convertRelease2_0(&$release, $package) - { - //- if any install-as/platform exist, create a generic release and fill it with - if (count($package['platform']) || count($package['install-as'])) { - $generic = array(); - $genericIgnore = array(); - foreach ($package['install-as'] as $file => $as) { - //o <install as=..> tags for <file name=... install-as=...> - if (!isset($package['platform'][$file])) { - $generic[] = $file; - continue; - } - //o <install as=..> tags for <file name=... platform=!... install-as=..> - if (isset($package['platform'][$file]) && - $package['platform'][$file]{0} == '!') { - $generic[] = $file; - continue; - } - //o <ignore> tags for <file name=... platform=... install-as=..> - if (isset($package['platform'][$file]) && - $package['platform'][$file]{0} != '!') { - $genericIgnore[] = $file; - continue; - } - } - foreach ($package['platform'] as $file => $platform) { - if (isset($package['install-as'][$file])) { - continue; - } - if ($platform{0} != '!') { - //o <ignore> tags for <file name=... platform=...> - $genericIgnore[] = $file; - } - } - if (count($package['platform'])) { - $oses = $notplatform = $platform = array(); - foreach ($package['platform'] as $file => $os) { - // get a list of oses - if ($os{0} == '!') { - if (isset($oses[substr($os, 1)])) { - continue; - } - $oses[substr($os, 1)] = count($oses); - } else { - if (isset($oses[$os])) { - continue; - } - $oses[$os] = count($oses); - } - } - //- create a release for each platform encountered and fill with - foreach ($oses as $os => $releaseNum) { - $release[$releaseNum]['installconditions']['os']['name'] = $os; - $release[$releaseNum]['filelist'] = array('install' => array(), - 'ignore' => array()); - foreach ($package['install-as'] as $file => $as) { - //o <install as=..> tags for <file name=... install-as=...> - if (!isset($package['platform'][$file])) { - $release[$releaseNum]['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $as, - ), - ); - continue; - } - //o <install as..> tags for - // <file name=... platform=this platform install-as=..> - if (isset($package['platform'][$file]) && - $package['platform'][$file] == $os) { - $release[$releaseNum]['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $as, - ), - ); - continue; - } - //o <install as..> tags for - // <file name=... platform=!other platform install-as=..> - if (isset($package['platform'][$file]) && - $package['platform'][$file] != "!$os" && - $package['platform'][$file]{0} == '!') { - $release[$releaseNum]['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $as, - ), - ); - continue; - } - //o <ignore> tags for - // <file name=... platform=!this platform install-as=..> - if (isset($package['platform'][$file]) && - $package['platform'][$file] == "!$os") { - $release[$releaseNum]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ), - ); - continue; - } - //o <ignore> tags for - // <file name=... platform=other platform install-as=..> - if (isset($package['platform'][$file]) && - $package['platform'][$file]{0} != '!' && - $package['platform'][$file] != $os) { - $release[$releaseNum]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ), - ); - continue; - } - } - foreach ($package['platform'] as $file => $platform) { - if (isset($package['install-as'][$file])) { - continue; - } - //o <ignore> tags for <file name=... platform=!this platform> - if ($platform == "!$os") { - $release[$releaseNum]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ), - ); - continue; - } - //o <ignore> tags for <file name=... platform=other platform> - if ($platform{0} != '!' && $platform != $os) { - $release[$releaseNum]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ), - ); - } - } - if (!count($release[$releaseNum]['filelist']['install'])) { - unset($release[$releaseNum]['filelist']['install']); - } - if (!count($release[$releaseNum]['filelist']['ignore'])) { - unset($release[$releaseNum]['filelist']['ignore']); - } - } - if (count($generic) || count($genericIgnore)) { - $release[count($oses)] = array(); - if (count($generic)) { - foreach ($generic as $file) { - if (isset($package['install-as'][$file])) { - $installas = $package['install-as'][$file]; - } else { - $installas = $file; - } - $release[count($oses)]['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $installas, - ) - ); - } - } - if (count($genericIgnore)) { - foreach ($genericIgnore as $file) { - $release[count($oses)]['filelist']['ignore'][] = - array( - 'attribs' => array( - 'name' => $file, - ) - ); - } - } - } - // cleanup - foreach ($release as $i => $rel) { - if (isset($rel['filelist']['install']) && - count($rel['filelist']['install']) == 1) { - $release[$i]['filelist']['install'] = - $release[$i]['filelist']['install'][0]; - } - if (isset($rel['filelist']['ignore']) && - count($rel['filelist']['ignore']) == 1) { - $release[$i]['filelist']['ignore'] = - $release[$i]['filelist']['ignore'][0]; - } - } - if (count($release) == 1) { - $release = $release[0]; - } - } else { - // no platform atts, but some install-as atts - foreach ($package['install-as'] as $file => $value) { - $release['filelist']['install'][] = - array( - 'attribs' => array( - 'name' => $file, - 'as' => $value - ) - ); - } - if (count($release['filelist']['install']) == 1) { - $release['filelist']['install'] = $release['filelist']['install'][0]; - } - } - } - } - - /** - * @param array - * @return array - * @access private - */ - function _processDep($dep) - { - if ($dep['type'] == 'php') { - if ($dep['rel'] == 'has') { - // come on - everyone has php! - return false; - } - } - $php = array(); - if ($dep['type'] != 'php') { - $php['name'] = $dep['name']; - if ($dep['type'] == 'pkg') { - $php['channel'] = 'pear.php.net'; - } - } - switch ($dep['rel']) { - case 'gt' : - $php['min'] = $dep['version']; - $php['exclude'] = $dep['version']; - break; - case 'ge' : - if (!isset($dep['version'])) { - if ($dep['type'] == 'php') { - if (isset($dep['name'])) { - $dep['version'] = $dep['name']; - } - } - } - $php['min'] = $dep['version']; - break; - case 'lt' : - $php['max'] = $dep['version']; - $php['exclude'] = $dep['version']; - break; - case 'le' : - $php['max'] = $dep['version']; - break; - case 'eq' : - $php['min'] = $dep['version']; - $php['max'] = $dep['version']; - break; - case 'ne' : - $php['exclude'] = $dep['version']; - break; - case 'not' : - $php['conflicts'] = 'yes'; - break; - } - return $php; - } - - /** - * @param array - * @return array - */ - function _processPhpDeps($deps) - { - $test = array(); - foreach ($deps as $dep) { - $test[] = $this->_processDep($dep); - } - $min = array(); - $max = array(); - foreach ($test as $dep) { - if (!$dep) { - continue; - } - if (isset($dep['min'])) { - $min[$dep['min']] = count($min); - } - if (isset($dep['max'])) { - $max[$dep['max']] = count($max); - } - } - if (count($min) > 0) { - uksort($min, 'version_compare'); - } - if (count($max) > 0) { - uksort($max, 'version_compare'); - } - if (count($min)) { - // get the highest minimum - $min = array_pop($a = array_flip($min)); - } else { - $min = false; - } - if (count($max)) { - // get the lowest maximum - $max = array_shift($a = array_flip($max)); - } else { - $max = false; - } - if ($min) { - $php['min'] = $min; - } - if ($max) { - $php['max'] = $max; - } - $exclude = array(); - foreach ($test as $dep) { - if (!isset($dep['exclude'])) { - continue; - } - $exclude[] = $dep['exclude']; - } - if (count($exclude)) { - $php['exclude'] = $exclude; - } - return $php; - } - - /** - * process multiple dependencies that have a name, like package deps - * @param array - * @return array - * @access private - */ - function _processMultipleDepsName($deps) - { - $tests = array(); - foreach ($deps as $name => $dep) { - foreach ($dep as $d) { - $tests[$name][] = $this->_processDep($d); - } - } - foreach ($tests as $name => $test) { - $php = array(); - $min = array(); - $max = array(); - $php['name'] = $name; - foreach ($test as $dep) { - if (!$dep) { - continue; - } - if (isset($dep['channel'])) { - $php['channel'] = 'pear.php.net'; - } - if (isset($dep['conflicts']) && $dep['conflicts'] == 'yes') { - $php['conflicts'] = 'yes'; - } - if (isset($dep['min'])) { - $min[$dep['min']] = count($min); - } - if (isset($dep['max'])) { - $max[$dep['max']] = count($max); - } - } - if (count($min) > 0) { - uksort($min, 'version_compare'); - } - if (count($max) > 0) { - uksort($max, 'version_compare'); - } - if (count($min)) { - // get the highest minimum - $min = array_pop($a = array_flip($min)); - } else { - $min = false; - } - if (count($max)) { - // get the lowest maximum - $max = array_shift($a = array_flip($max)); - } else { - $max = false; - } - if ($min) { - $php['min'] = $min; - } - if ($max) { - $php['max'] = $max; - } - $exclude = array(); - foreach ($test as $dep) { - if (!isset($dep['exclude'])) { - continue; - } - $exclude[] = $dep['exclude']; - } - if (count($exclude)) { - $php['exclude'] = $exclude; - } - $ret[] = $php; - } - return $ret; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/PackageFile/Generator/v2.php b/src/vitis/vas/rest/class/PEAR/PackageFile/Generator/v2.php deleted file mode 100755 index fb8d2f9774f1058a0d783a4ffe760d9cff668616..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PackageFile/Generator/v2.php +++ /dev/null @@ -1,1531 +0,0 @@ -<?php -/** - * package.xml generation class, package.xml version 2.0 - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @author Stephan Schmidt (original XML_Serializer code) - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: v2.php,v 1.39 2008/05/13 05:29:24 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * file/dir manipulation routines - */ -require_once 'System.php'; -/** - * This class converts a PEAR_PackageFile_v2 object into any output format. - * - * Supported output formats include array, XML string (using S. Schmidt's - * XML_Serializer, slightly customized) - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @author Stephan Schmidt (original XML_Serializer code) - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_Generator_v2 -{ - /** - * default options for the serialization - * @access private - * @var array $_defaultOptions - */ - var $_defaultOptions = array( - 'indent' => ' ', // string used for indentation - 'linebreak' => "\n", // string used for newlines - 'typeHints' => false, // automatically add type hin attributes - 'addDecl' => true, // add an XML declaration - 'defaultTagName' => 'XML_Serializer_Tag', // tag used for indexed arrays or invalid names - 'classAsTagName' => false, // use classname for objects in indexed arrays - 'keyAttribute' => '_originalKey', // attribute where original key is stored - 'typeAttribute' => '_type', // attribute for type (only if typeHints => true) - 'classAttribute' => '_class', // attribute for class of objects (only if typeHints => true) - 'scalarAsAttributes' => false, // scalar values (strings, ints,..) will be serialized as attribute - 'prependAttributes' => '', // prepend string for attributes - 'indentAttributes' => false, // indent the attributes, if set to '_auto', it will indent attributes so they all start at the same column - 'mode' => 'simplexml', // use 'simplexml' to use parent name as tagname if transforming an indexed array - 'addDoctype' => false, // add a doctype declaration - 'doctype' => null, // supply a string or an array with id and uri ({@see PEAR_PackageFile_Generator_v2_PEAR_PackageFile_Generator_v2_XML_Util::getDoctypeDeclaration()} - 'rootName' => 'package', // name of the root tag - 'rootAttributes' => array( - 'version' => '2.0', - 'xmlns' => 'http://pear.php.net/dtd/package-2.0', - 'xmlns:tasks' => 'http://pear.php.net/dtd/tasks-1.0', - 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:schemaLocation' => 'http://pear.php.net/dtd/tasks-1.0 -http://pear.php.net/dtd/tasks-1.0.xsd -http://pear.php.net/dtd/package-2.0 -http://pear.php.net/dtd/package-2.0.xsd', - ), // attributes of the root tag - 'attributesArray' => 'attribs', // all values in this key will be treated as attributes - 'contentName' => '_content', // this value will be used directly as content, instead of creating a new tag, may only be used in conjuction with attributesArray - 'beautifyFilelist' => false, - 'encoding' => 'UTF-8', - ); - - /** - * options for the serialization - * @access private - * @var array $options - */ - var $options = array(); - - /** - * current tag depth - * @var integer $_tagDepth - */ - var $_tagDepth = 0; - - /** - * serilialized representation of the data - * @var string $_serializedData - */ - var $_serializedData = null; - /** - * @var PEAR_PackageFile_v2 - */ - var $_packagefile; - /** - * @param PEAR_PackageFile_v2 - */ - function PEAR_PackageFile_Generator_v2(&$packagefile) - { - $this->_packagefile = &$packagefile; - } - - /** - * @return string - */ - function getPackagerVersion() - { - return '1.7.2'; - } - - /** - * @param PEAR_Packager - * @param bool generate a .tgz or a .tar - * @param string|null temporary directory to package in - */ - function toTgz(&$packager, $compress = true, $where = null) - { - $a = null; - return $this->toTgz2($packager, $a, $compress, $where); - } - - /** - * Package up both a package.xml and package2.xml for the same release - * @param PEAR_Packager - * @param PEAR_PackageFile_v1 - * @param bool generate a .tgz or a .tar - * @param string|null temporary directory to package in - */ - function toTgz2(&$packager, &$pf1, $compress = true, $where = null) - { - require_once 'Archive/Tar.php'; - if (!$this->_packagefile->isEquivalent($pf1)) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: "' . - basename($pf1->getPackageFile()) . - '" is not equivalent to "' . basename($this->_packagefile->getPackageFile()) - . '"'); - } - if ($where === null) { - if (!($where = System::mktemp(array('-d')))) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: mktemp failed'); - } - } elseif (!@System::mkDir(array('-p', $where))) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: "' . $where . '" could' . - ' not be created'); - } - if (file_exists($where . DIRECTORY_SEPARATOR . 'package.xml') && - !is_file($where . DIRECTORY_SEPARATOR . 'package.xml')) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: unable to save package.xml as' . - ' "' . $where . DIRECTORY_SEPARATOR . 'package.xml"'); - } - if (!$this->_packagefile->validate(PEAR_VALIDATE_PACKAGING)) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: invalid package.xml'); - } - $ext = $compress ? '.tgz' : '.tar'; - $pkgver = $this->_packagefile->getPackage() . '-' . $this->_packagefile->getVersion(); - $dest_package = getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext; - if (file_exists(getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext) && - !is_file(getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext)) { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: cannot create tgz file "' . - getcwd() . DIRECTORY_SEPARATOR . $pkgver . $ext . '"'); - } - if ($pkgfile = $this->_packagefile->getPackageFile()) { - $pkgdir = dirname(realpath($pkgfile)); - $pkgfile = basename($pkgfile); - } else { - return PEAR::raiseError('PEAR_Packagefile_v2::toTgz: package file object must ' . - 'be created from a real file'); - } - // {{{ Create the package file list - $filelist = array(); - $i = 0; - $this->_packagefile->flattenFilelist(); - $contents = $this->_packagefile->getContents(); - if (isset($contents['bundledpackage'])) { // bundles of packages - $contents = $contents['bundledpackage']; - if (!isset($contents[0])) { - $contents = array($contents); - } - $packageDir = $where; - foreach ($contents as $i => $package) { - $fname = $package; - $file = $pkgdir . DIRECTORY_SEPARATOR . $fname; - if (!file_exists($file)) { - return $packager->raiseError("File does not exist: $fname"); - } - $tfile = $packageDir . DIRECTORY_SEPARATOR . $fname; - System::mkdir(array('-p', dirname($tfile))); - copy($file, $tfile); - $filelist[$i++] = $tfile; - $packager->log(2, "Adding package $fname"); - } - } else { // normal packages - $contents = $contents['dir']['file']; - if (!isset($contents[0])) { - $contents = array($contents); - } - - $packageDir = $where; - foreach ($contents as $i => $file) { - $fname = $file['attribs']['name']; - $atts = $file['attribs']; - $orig = $file; - $file = $pkgdir . DIRECTORY_SEPARATOR . $fname; - if (!file_exists($file)) { - return $packager->raiseError("File does not exist: $fname"); - } else { - $origperms = fileperms($file); - $tfile = $packageDir . DIRECTORY_SEPARATOR . $fname; - unset($orig['attribs']); - if (count($orig)) { // file with tasks - // run any package-time tasks - $contents = file_get_contents($file); - foreach ($orig as $tag => $raw) { - $tag = str_replace( - array($this->_packagefile->getTasksNs() . ':', '-'), - array('', '_'), $tag); - $task = "PEAR_Task_$tag"; - $task = &new $task($this->_packagefile->_config, - $this->_packagefile->_logger, - PEAR_TASK_PACKAGE); - $task->init($raw, $atts, null); - $res = $task->startSession($this->_packagefile, $contents, $tfile); - if (!$res) { - continue; // skip this task - } - if (PEAR::isError($res)) { - return $res; - } - $contents = $res; // save changes - System::mkdir(array('-p', dirname($tfile))); - $wp = fopen($tfile, "wb"); - fwrite($wp, $contents); - fclose($wp); - } - } - if (!file_exists($tfile)) { - System::mkdir(array('-p', dirname($tfile))); - copy($file, $tfile); - } - chmod($tfile, $origperms); - $filelist[$i++] = $tfile; - $this->_packagefile->setFileAttribute($fname, 'md5sum', md5_file($tfile), $i - 1); - $packager->log(2, "Adding file $fname"); - } - } - } - // }}} - if ($pf1 !== null) { - $name = 'package2.xml'; - } else { - $name = 'package.xml'; - } - $packagexml = $this->toPackageFile($where, PEAR_VALIDATE_PACKAGING, $name); - if ($packagexml) { - $tar =& new Archive_Tar($dest_package, $compress); - $tar->setErrorHandling(PEAR_ERROR_RETURN); // XXX Don't print errors - // ----- Creates with the package.xml file - $ok = $tar->createModify(array($packagexml), '', $where); - if (PEAR::isError($ok)) { - return $packager->raiseError($ok); - } elseif (!$ok) { - return $packager->raiseError('PEAR_Packagefile_v2::toTgz(): adding ' . $name . - ' failed'); - } - // ----- Add the content of the package - if (!$tar->addModify($filelist, $pkgver, $where)) { - return $packager->raiseError( - 'PEAR_Packagefile_v2::toTgz(): tarball creation failed'); - } - // add the package.xml version 1.0 - if ($pf1 !== null) { - $pfgen = &$pf1->getDefaultGenerator(); - $packagexml1 = $pfgen->toPackageFile($where, PEAR_VALIDATE_PACKAGING, - 'package.xml', true); - if (!$tar->addModify(array($packagexml1), '', $where)) { - return $packager->raiseError( - 'PEAR_Packagefile_v2::toTgz(): adding package.xml failed'); - } - } - return $dest_package; - } - } - - function toPackageFile($where = null, $state = PEAR_VALIDATE_NORMAL, $name = 'package.xml') - { - if (!$this->_packagefile->validate($state)) { - return PEAR::raiseError('PEAR_Packagefile_v2::toPackageFile: invalid package.xml', - null, null, null, $this->_packagefile->getValidationWarnings()); - } - if ($where === null) { - if (!($where = System::mktemp(array('-d')))) { - return PEAR::raiseError('PEAR_Packagefile_v2::toPackageFile: mktemp failed'); - } - } elseif (!@System::mkDir(array('-p', $where))) { - return PEAR::raiseError('PEAR_Packagefile_v2::toPackageFile: "' . $where . '" could' . - ' not be created'); - } - $newpkgfile = $where . DIRECTORY_SEPARATOR . $name; - $np = @fopen($newpkgfile, 'wb'); - if (!$np) { - return PEAR::raiseError('PEAR_Packagefile_v2::toPackageFile: unable to save ' . - "$name as $newpkgfile"); - } - fwrite($np, $this->toXml($state)); - fclose($np); - return $newpkgfile; - } - - function &toV2() - { - return $this->_packagefile; - } - - /** - * Return an XML document based on the package info (as returned - * by the PEAR_Common::infoFrom* methods). - * - * @return string XML data - */ - function toXml($state = PEAR_VALIDATE_NORMAL, $options = array()) - { - $this->_packagefile->setDate(date('Y-m-d')); - $this->_packagefile->setTime(date('H:i:s')); - if (!$this->_packagefile->validate($state)) { - return false; - } - if (is_array($options)) { - $this->options = array_merge($this->_defaultOptions, $options); - } else { - $this->options = $this->_defaultOptions; - } - $arr = $this->_packagefile->getArray(); - if (isset($arr['filelist'])) { - unset($arr['filelist']); - } - if (isset($arr['_lastversion'])) { - unset($arr['_lastversion']); - } - if ($state ^ PEAR_VALIDATE_PACKAGING && !isset($arr['bundle'])) { - $use = $this->_recursiveXmlFilelist($arr['contents']['dir']['file']); - unset($arr['contents']['dir']['file']); - if (isset($use['dir'])) { - $arr['contents']['dir']['dir'] = $use['dir']; - } - if (isset($use['file'])) { - $arr['contents']['dir']['file'] = $use['file']; - } - $this->options['beautifyFilelist'] = true; - } - $arr['attribs']['packagerversion'] = '1.7.2'; - if ($this->serialize($arr, $options)) { - return $this->_serializedData . "\n"; - } - return false; - } - - - function _recursiveXmlFilelist($list) - { - $dirs = array(); - if (isset($list['attribs'])) { - $file = $list['attribs']['name']; - unset($list['attribs']['name']); - $attributes = $list['attribs']; - $this->_addDir($dirs, explode('/', dirname($file)), $file, $attributes); - } else { - foreach ($list as $a) { - $file = $a['attribs']['name']; - $attributes = $a['attribs']; - unset($a['attribs']); - $this->_addDir($dirs, explode('/', dirname($file)), $file, $attributes, $a); - } - } - $this->_formatDir($dirs); - $this->_deFormat($dirs); - return $dirs; - } - - function _addDir(&$dirs, $dir, $file = null, $attributes = null, $tasks = null) - { - if (!$tasks) { - $tasks = array(); - } - if ($dir == array() || $dir == array('.')) { - $dirs['file'][basename($file)] = $tasks; - $attributes['name'] = basename($file); - $dirs['file'][basename($file)]['attribs'] = $attributes; - return; - } - $curdir = array_shift($dir); - if (!isset($dirs['dir'][$curdir])) { - $dirs['dir'][$curdir] = array(); - } - $this->_addDir($dirs['dir'][$curdir], $dir, $file, $attributes, $tasks); - } - - function _formatDir(&$dirs) - { - if (!count($dirs)) { - return array(); - } - $newdirs = array(); - if (isset($dirs['dir'])) { - $newdirs['dir'] = $dirs['dir']; - } - if (isset($dirs['file'])) { - $newdirs['file'] = $dirs['file']; - } - $dirs = $newdirs; - if (isset($dirs['dir'])) { - uksort($dirs['dir'], 'strnatcasecmp'); - foreach ($dirs['dir'] as $dir => $contents) { - $this->_formatDir($dirs['dir'][$dir]); - } - } - if (isset($dirs['file'])) { - uksort($dirs['file'], 'strnatcasecmp'); - }; - } - - function _deFormat(&$dirs) - { - if (!count($dirs)) { - return array(); - } - $newdirs = array(); - if (isset($dirs['dir'])) { - foreach ($dirs['dir'] as $dir => $contents) { - $newdir = array(); - $newdir['attribs']['name'] = $dir; - $this->_deFormat($contents); - foreach ($contents as $tag => $val) { - $newdir[$tag] = $val; - } - $newdirs['dir'][] = $newdir; - } - if (count($newdirs['dir']) == 1) { - $newdirs['dir'] = $newdirs['dir'][0]; - } - } - if (isset($dirs['file'])) { - foreach ($dirs['file'] as $name => $file) { - $newdirs['file'][] = $file; - } - if (count($newdirs['file']) == 1) { - $newdirs['file'] = $newdirs['file'][0]; - } - } - $dirs = $newdirs; - } - - /** - * reset all options to default options - * - * @access public - * @see setOption(), XML_Unserializer() - */ - function resetOptions() - { - $this->options = $this->_defaultOptions; - } - - /** - * set an option - * - * You can use this method if you do not want to set all options in the constructor - * - * @access public - * @see resetOption(), XML_Serializer() - */ - function setOption($name, $value) - { - $this->options[$name] = $value; - } - - /** - * sets several options at once - * - * You can use this method if you do not want to set all options in the constructor - * - * @access public - * @see resetOption(), XML_Unserializer(), setOption() - */ - function setOptions($options) - { - $this->options = array_merge($this->options, $options); - } - - /** - * serialize data - * - * @access public - * @param mixed $data data to serialize - * @return boolean true on success, pear error on failure - */ - function serialize($data, $options = null) - { - // if options have been specified, use them instead - // of the previously defined ones - if (is_array($options)) { - $optionsBak = $this->options; - if (isset($options['overrideOptions']) && $options['overrideOptions'] == true) { - $this->options = array_merge($this->_defaultOptions, $options); - } else { - $this->options = array_merge($this->options, $options); - } - } - else { - $optionsBak = null; - } - - // start depth is zero - $this->_tagDepth = 0; - - $this->_serializedData = ''; - // serialize an array - if (is_array($data)) { - if (isset($this->options['rootName'])) { - $tagName = $this->options['rootName']; - } else { - $tagName = 'array'; - } - - $this->_serializedData .= $this->_serializeArray($data, $tagName, $this->options['rootAttributes']); - } - - // add doctype declaration - if ($this->options['addDoctype'] === true) { - $this->_serializedData = PEAR_PackageFile_Generator_v2_XML_Util::getDoctypeDeclaration($tagName, $this->options['doctype']) - . $this->options['linebreak'] - . $this->_serializedData; - } - - // build xml declaration - if ($this->options['addDecl']) { - $atts = array(); - if (isset($this->options['encoding']) ) { - $encoding = $this->options['encoding']; - } else { - $encoding = null; - } - $this->_serializedData = PEAR_PackageFile_Generator_v2_XML_Util::getXMLDeclaration('1.0', $encoding) - . $this->options['linebreak'] - . $this->_serializedData; - } - - - if ($optionsBak !== null) { - $this->options = $optionsBak; - } - - return true; - } - - /** - * get the result of the serialization - * - * @access public - * @return string serialized XML - */ - function getSerializedData() - { - if ($this->_serializedData == null ) { - return $this->raiseError('No serialized data available. Use XML_Serializer::serialize() first.', XML_SERIALIZER_ERROR_NO_SERIALIZATION); - } - return $this->_serializedData; - } - - /** - * serialize any value - * - * This method checks for the type of the value and calls the appropriate method - * - * @access private - * @param mixed $value - * @param string $tagName - * @param array $attributes - * @return string - */ - function _serializeValue($value, $tagName = null, $attributes = array()) - { - if (is_array($value)) { - $xml = $this->_serializeArray($value, $tagName, $attributes); - } elseif (is_object($value)) { - $xml = $this->_serializeObject($value, $tagName); - } else { - $tag = array( - 'qname' => $tagName, - 'attributes' => $attributes, - 'content' => $value - ); - $xml = $this->_createXMLTag($tag); - } - return $xml; - } - - /** - * serialize an array - * - * @access private - * @param array $array array to serialize - * @param string $tagName name of the root tag - * @param array $attributes attributes for the root tag - * @return string $string serialized data - * @uses PEAR_PackageFile_Generator_v2_XML_Util::isValidName() to check, whether key has to be substituted - */ - function _serializeArray(&$array, $tagName = null, $attributes = array()) - { - $_content = null; - - /** - * check for special attributes - */ - if ($this->options['attributesArray'] !== null) { - if (isset($array[$this->options['attributesArray']])) { - $attributes = $array[$this->options['attributesArray']]; - unset($array[$this->options['attributesArray']]); - } - /** - * check for special content - */ - if ($this->options['contentName'] !== null) { - if (isset($array[$this->options['contentName']])) { - $_content = $array[$this->options['contentName']]; - unset($array[$this->options['contentName']]); - } - } - } - - /* - * if mode is set to simpleXML, check whether - * the array is associative or indexed - */ - if (is_array($array) && $this->options['mode'] == 'simplexml') { - $indexed = true; - if (!count($array)) { - $indexed = false; - } - foreach ($array as $key => $val) { - if (!is_int($key)) { - $indexed = false; - break; - } - } - - if ($indexed && $this->options['mode'] == 'simplexml') { - $string = ''; - foreach ($array as $key => $val) { - if ($this->options['beautifyFilelist'] && $tagName == 'dir') { - if (!isset($this->_curdir)) { - $this->_curdir = ''; - } - $savedir = $this->_curdir; - if (isset($val['attribs'])) { - if ($val['attribs']['name'] == '/') { - $this->_curdir = '/'; - } else { - if ($this->_curdir == '/') { - $this->_curdir = ''; - } - $this->_curdir .= '/' . $val['attribs']['name']; - } - } - } - $string .= $this->_serializeValue( $val, $tagName, $attributes); - if ($this->options['beautifyFilelist'] && $tagName == 'dir') { - $string .= ' <!-- ' . $this->_curdir . ' -->'; - if (empty($savedir)) { - unset($this->_curdir); - } else { - $this->_curdir = $savedir; - } - } - - $string .= $this->options['linebreak']; - // do indentation - if ($this->options['indent']!==null && $this->_tagDepth>0) { - $string .= str_repeat($this->options['indent'], $this->_tagDepth); - } - } - return rtrim($string); - } - } - - if ($this->options['scalarAsAttributes'] === true) { - foreach ($array as $key => $value) { - if (is_scalar($value) && (PEAR_PackageFile_Generator_v2_XML_Util::isValidName($key) === true)) { - unset($array[$key]); - $attributes[$this->options['prependAttributes'].$key] = $value; - } - } - } - - // check for empty array => create empty tag - if (empty($array)) { - $tag = array( - 'qname' => $tagName, - 'content' => $_content, - 'attributes' => $attributes - ); - - } else { - $this->_tagDepth++; - $tmp = $this->options['linebreak']; - foreach ($array as $key => $value) { - // do indentation - if ($this->options['indent']!==null && $this->_tagDepth>0) { - $tmp .= str_repeat($this->options['indent'], $this->_tagDepth); - } - - // copy key - $origKey = $key; - // key cannot be used as tagname => use default tag - $valid = PEAR_PackageFile_Generator_v2_XML_Util::isValidName($key); - if (PEAR::isError($valid)) { - if ($this->options['classAsTagName'] && is_object($value)) { - $key = get_class($value); - } else { - $key = $this->options['defaultTagName']; - } - } - $atts = array(); - if ($this->options['typeHints'] === true) { - $atts[$this->options['typeAttribute']] = gettype($value); - if ($key !== $origKey) { - $atts[$this->options['keyAttribute']] = (string)$origKey; - } - - } - if ($this->options['beautifyFilelist'] && $key == 'dir') { - if (!isset($this->_curdir)) { - $this->_curdir = ''; - } - $savedir = $this->_curdir; - if (isset($value['attribs'])) { - if ($value['attribs']['name'] == '/') { - $this->_curdir = '/'; - } else { - $this->_curdir .= '/' . $value['attribs']['name']; - } - } - } - - if (is_string($value) && $value && ($value{strlen($value) - 1} == "\n")) { - $value .= str_repeat($this->options['indent'], $this->_tagDepth); - } - $tmp .= $this->_createXMLTag(array( - 'qname' => $key, - 'attributes' => $atts, - 'content' => $value ) - ); - if ($this->options['beautifyFilelist'] && $key == 'dir') { - if (isset($value['attribs'])) { - $tmp .= ' <!-- ' . $this->_curdir . ' -->'; - if (empty($savedir)) { - unset($this->_curdir); - } else { - $this->_curdir = $savedir; - } - } - } - $tmp .= $this->options['linebreak']; - } - - $this->_tagDepth--; - if ($this->options['indent']!==null && $this->_tagDepth>0) { - $tmp .= str_repeat($this->options['indent'], $this->_tagDepth); - } - - if (trim($tmp) === '') { - $tmp = null; - } - - $tag = array( - 'qname' => $tagName, - 'content' => $tmp, - 'attributes' => $attributes - ); - } - if ($this->options['typeHints'] === true) { - if (!isset($tag['attributes'][$this->options['typeAttribute']])) { - $tag['attributes'][$this->options['typeAttribute']] = 'array'; - } - } - - $string = $this->_createXMLTag($tag, false); - return $string; - } - - /** - * create a tag from an array - * this method awaits an array in the following format - * array( - * 'qname' => $tagName, - * 'attributes' => array(), - * 'content' => $content, // optional - * 'namespace' => $namespace // optional - * 'namespaceUri' => $namespaceUri // optional - * ) - * - * @access private - * @param array $tag tag definition - * @param boolean $replaceEntities whether to replace XML entities in content or not - * @return string $string XML tag - */ - function _createXMLTag( $tag, $replaceEntities = true ) - { - if ($this->options['indentAttributes'] !== false) { - $multiline = true; - $indent = str_repeat($this->options['indent'], $this->_tagDepth); - - if ($this->options['indentAttributes'] == '_auto') { - $indent .= str_repeat(' ', (strlen($tag['qname'])+2)); - - } else { - $indent .= $this->options['indentAttributes']; - } - } else { - $multiline = false; - $indent = false; - } - - if (is_array($tag['content'])) { - if (empty($tag['content'])) { - $tag['content'] = ''; - } - } elseif(is_scalar($tag['content']) && (string)$tag['content'] == '') { - $tag['content'] = ''; - } - - if (is_scalar($tag['content']) || is_null($tag['content'])) { - if ($this->options['encoding'] == 'UTF-8' && - version_compare(phpversion(), '5.0.0', 'lt')) { - $encoding = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_UTF8_XML; - } else { - $encoding = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML; - } - $tag = PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray($tag, $replaceEntities, $multiline, $indent, $this->options['linebreak'], $encoding); - } elseif (is_array($tag['content'])) { - $tag = $this->_serializeArray($tag['content'], $tag['qname'], $tag['attributes']); - } elseif (is_object($tag['content'])) { - $tag = $this->_serializeObject($tag['content'], $tag['qname'], $tag['attributes']); - } elseif (is_resource($tag['content'])) { - settype($tag['content'], 'string'); - $tag = PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray($tag, $replaceEntities); - } - return $tag; - } -} - -// well, it's one way to do things without extra deps ... -/* vim: set expandtab tabstop=4 shiftwidth=4: */ -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2002 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.0 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Authors: Stephan Schmidt <schst@php-tools.net> | -// +----------------------------------------------------------------------+ -// -// $Id: v2.php,v 1.39 2008/05/13 05:29:24 cellog Exp $ - -/** - * error code for invalid chars in XML name - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_ERROR_INVALID_CHARS", 51); - -/** - * error code for invalid chars in XML name - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_ERROR_INVALID_START", 52); - -/** - * error code for non-scalar tag content - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_ERROR_NON_SCALAR_CONTENT", 60); - -/** - * error code for missing tag name - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_ERROR_NO_TAG_NAME", 61); - -/** - * replace XML entities - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_REPLACE_ENTITIES", 1); - -/** - * embedd content in a CData Section - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_CDATA_SECTION", 2); - -/** - * do not replace entitites - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_NONE", 0); - -/** - * replace all XML entitites - * This setting will replace <, >, ", ' and & - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML", 1); - -/** - * replace only required XML entitites - * This setting will replace <, " and & - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML_REQUIRED", 2); - -/** - * replace HTML entitites - * @link http://www.php.net/htmlentities - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_HTML", 3); - -/** - * replace all XML entitites, and encode from ISO-8859-1 to UTF-8 - * This setting will replace <, >, ", ' and & - */ -define("PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_UTF8_XML", 4); - -/** - * utility class for working with XML documents - * - * customized version of XML_Util 0.6.0 - * - * @category XML - * @package PEAR - * @version 0.6.0 - * @author Stephan Schmidt <schst@php.net> - * @author Gregory Beaver <cellog@php.net> - */ -class PEAR_PackageFile_Generator_v2_XML_Util { - - /** - * return API version - * - * @access public - * @static - * @return string $version API version - */ - function apiVersion() - { - return "0.6"; - } - - /** - * replace XML entities - * - * With the optional second parameter, you may select, which - * entities should be replaced. - * - * <code> - * require_once 'XML/Util.php'; - * - * // replace XML entites: - * $string = PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities("This string contains < & >."); - * </code> - * - * @access public - * @static - * @param string string where XML special chars should be replaced - * @param integer setting for entities in attribute values (one of PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML_REQUIRED, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_HTML) - * @return string string with replaced chars - */ - function replaceEntities($string, $replaceEntities = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML) - { - switch ($replaceEntities) { - case PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_UTF8_XML: - return strtr(utf8_encode($string),array( - '&' => '&', - '>' => '>', - '<' => '<', - '"' => '"', - '\'' => ''' )); - break; - case PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML: - return strtr($string,array( - '&' => '&', - '>' => '>', - '<' => '<', - '"' => '"', - '\'' => ''' )); - break; - case PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML_REQUIRED: - return strtr($string,array( - '&' => '&', - '<' => '<', - '"' => '"' )); - break; - case PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_HTML: - return htmlspecialchars($string); - break; - } - return $string; - } - - /** - * build an xml declaration - * - * <code> - * require_once 'XML/Util.php'; - * - * // get an XML declaration: - * $xmlDecl = PEAR_PackageFile_Generator_v2_XML_Util::getXMLDeclaration("1.0", "UTF-8", true); - * </code> - * - * @access public - * @static - * @param string $version xml version - * @param string $encoding character encoding - * @param boolean $standAlone document is standalone (or not) - * @return string $decl xml declaration - * @uses PEAR_PackageFile_Generator_v2_XML_Util::attributesToString() to serialize the attributes of the XML declaration - */ - function getXMLDeclaration($version = "1.0", $encoding = null, $standalone = null) - { - $attributes = array( - "version" => $version, - ); - // add encoding - if ($encoding !== null) { - $attributes["encoding"] = $encoding; - } - // add standalone, if specified - if ($standalone !== null) { - $attributes["standalone"] = $standalone ? "yes" : "no"; - } - - return sprintf("<?xml%s?>", PEAR_PackageFile_Generator_v2_XML_Util::attributesToString($attributes, false)); - } - - /** - * build a document type declaration - * - * <code> - * require_once 'XML/Util.php'; - * - * // get a doctype declaration: - * $xmlDecl = PEAR_PackageFile_Generator_v2_XML_Util::getDocTypeDeclaration("rootTag","myDocType.dtd"); - * </code> - * - * @access public - * @static - * @param string $root name of the root tag - * @param string $uri uri of the doctype definition (or array with uri and public id) - * @param string $internalDtd internal dtd entries - * @return string $decl doctype declaration - * @since 0.2 - */ - function getDocTypeDeclaration($root, $uri = null, $internalDtd = null) - { - if (is_array($uri)) { - $ref = sprintf( ' PUBLIC "%s" "%s"', $uri["id"], $uri["uri"] ); - } elseif (!empty($uri)) { - $ref = sprintf( ' SYSTEM "%s"', $uri ); - } else { - $ref = ""; - } - - if (empty($internalDtd)) { - return sprintf("<!DOCTYPE %s%s>", $root, $ref); - } else { - return sprintf("<!DOCTYPE %s%s [\n%s\n]>", $root, $ref, $internalDtd); - } - } - - /** - * create string representation of an attribute list - * - * <code> - * require_once 'XML/Util.php'; - * - * // build an attribute string - * $att = array( - * "foo" => "bar", - * "argh" => "tomato" - * ); - * - * $attList = PEAR_PackageFile_Generator_v2_XML_Util::attributesToString($att); - * </code> - * - * @access public - * @static - * @param array $attributes attribute array - * @param boolean|array $sort sort attribute list alphabetically, may also be an assoc array containing the keys 'sort', 'multiline', 'indent', 'linebreak' and 'entities' - * @param boolean $multiline use linebreaks, if more than one attribute is given - * @param string $indent string used for indentation of multiline attributes - * @param string $linebreak string used for linebreaks of multiline attributes - * @param integer $entities setting for entities in attribute values (one of PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_NONE, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML_REQUIRED, PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_HTML) - * @return string string representation of the attributes - * @uses PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities() to replace XML entities in attribute values - * @todo allow sort also to be an options array - */ - function attributesToString($attributes, $sort = true, $multiline = false, $indent = ' ', $linebreak = "\n", $entities = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML) - { - /** - * second parameter may be an array - */ - if (is_array($sort)) { - if (isset($sort['multiline'])) { - $multiline = $sort['multiline']; - } - if (isset($sort['indent'])) { - $indent = $sort['indent']; - } - if (isset($sort['linebreak'])) { - $multiline = $sort['linebreak']; - } - if (isset($sort['entities'])) { - $entities = $sort['entities']; - } - if (isset($sort['sort'])) { - $sort = $sort['sort']; - } else { - $sort = true; - } - } - $string = ''; - if (is_array($attributes) && !empty($attributes)) { - if ($sort) { - ksort($attributes); - } - if( !$multiline || count($attributes) == 1) { - foreach ($attributes as $key => $value) { - if ($entities != PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_NONE) { - $value = PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities($value, $entities); - } - $string .= ' '.$key.'="'.$value.'"'; - } - } else { - $first = true; - foreach ($attributes as $key => $value) { - if ($entities != PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_NONE) { - $value = PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities($value, $entities); - } - if ($first) { - $string .= " ".$key.'="'.$value.'"'; - $first = false; - } else { - $string .= $linebreak.$indent.$key.'="'.$value.'"'; - } - } - } - } - return $string; - } - - /** - * create a tag - * - * This method will call PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray(), which - * is more flexible. - * - * <code> - * require_once 'XML/Util.php'; - * - * // create an XML tag: - * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createTag("myNs:myTag", array("foo" => "bar"), "This is inside the tag", "http://www.w3c.org/myNs#"); - * </code> - * - * @access public - * @static - * @param string $qname qualified tagname (including namespace) - * @param array $attributes array containg attributes - * @param mixed $content - * @param string $namespaceUri URI of the namespace - * @param integer $replaceEntities whether to replace XML special chars in content, embedd it in a CData section or none of both - * @param boolean $multiline whether to create a multiline tag where each attribute gets written to a single line - * @param string $indent string used to indent attributes (_auto indents attributes so they start at the same column) - * @param string $linebreak string used for linebreaks - * @param string $encoding encoding that should be used to translate content - * @return string $string XML tag - * @see PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray() - * @uses PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray() to create the tag - */ - function createTag($qname, $attributes = array(), $content = null, $namespaceUri = null, $replaceEntities = PEAR_PackageFile_Generator_v2_XML_Util_REPLACE_ENTITIES, $multiline = false, $indent = "_auto", $linebreak = "\n", $encoding = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML) - { - $tag = array( - "qname" => $qname, - "attributes" => $attributes - ); - - // add tag content - if ($content !== null) { - $tag["content"] = $content; - } - - // add namespace Uri - if ($namespaceUri !== null) { - $tag["namespaceUri"] = $namespaceUri; - } - - return PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray($tag, $replaceEntities, $multiline, $indent, $linebreak, $encoding); - } - - /** - * create a tag from an array - * this method awaits an array in the following format - * <pre> - * array( - * "qname" => $qname // qualified name of the tag - * "namespace" => $namespace // namespace prefix (optional, if qname is specified or no namespace) - * "localpart" => $localpart, // local part of the tagname (optional, if qname is specified) - * "attributes" => array(), // array containing all attributes (optional) - * "content" => $content, // tag content (optional) - * "namespaceUri" => $namespaceUri // namespaceUri for the given namespace (optional) - * ) - * </pre> - * - * <code> - * require_once 'XML/Util.php'; - * - * $tag = array( - * "qname" => "foo:bar", - * "namespaceUri" => "http://foo.com", - * "attributes" => array( "key" => "value", "argh" => "fruit&vegetable" ), - * "content" => "I'm inside the tag", - * ); - * // creating a tag with qualified name and namespaceUri - * $string = PEAR_PackageFile_Generator_v2_XML_Util::createTagFromArray($tag); - * </code> - * - * @access public - * @static - * @param array $tag tag definition - * @param integer $replaceEntities whether to replace XML special chars in content, embedd it in a CData section or none of both - * @param boolean $multiline whether to create a multiline tag where each attribute gets written to a single line - * @param string $indent string used to indent attributes (_auto indents attributes so they start at the same column) - * @param string $linebreak string used for linebreaks - * @return string $string XML tag - * @see PEAR_PackageFile_Generator_v2_XML_Util::createTag() - * @uses PEAR_PackageFile_Generator_v2_XML_Util::attributesToString() to serialize the attributes of the tag - * @uses PEAR_PackageFile_Generator_v2_XML_Util::splitQualifiedName() to get local part and namespace of a qualified name - */ - function createTagFromArray($tag, $replaceEntities = PEAR_PackageFile_Generator_v2_XML_Util_REPLACE_ENTITIES, $multiline = false, $indent = "_auto", $linebreak = "\n", $encoding = PEAR_PackageFile_Generator_v2_XML_Util_ENTITIES_XML) - { - if (isset($tag["content"]) && !is_scalar($tag["content"])) { - return PEAR_PackageFile_Generator_v2_XML_Util::raiseError( "Supplied non-scalar value as tag content", PEAR_PackageFile_Generator_v2_XML_Util_ERROR_NON_SCALAR_CONTENT ); - } - - if (!isset($tag['qname']) && !isset($tag['localPart'])) { - return PEAR_PackageFile_Generator_v2_XML_Util::raiseError( 'You must either supply a qualified name (qname) or local tag name (localPart).', PEAR_PackageFile_Generator_v2_XML_Util_ERROR_NO_TAG_NAME ); - } - - // if no attributes hav been set, use empty attributes - if (!isset($tag["attributes"]) || !is_array($tag["attributes"])) { - $tag["attributes"] = array(); - } - - // qualified name is not given - if (!isset($tag["qname"])) { - // check for namespace - if (isset($tag["namespace"]) && !empty($tag["namespace"])) { - $tag["qname"] = $tag["namespace"].":".$tag["localPart"]; - } else { - $tag["qname"] = $tag["localPart"]; - } - // namespace URI is set, but no namespace - } elseif (isset($tag["namespaceUri"]) && !isset($tag["namespace"])) { - $parts = PEAR_PackageFile_Generator_v2_XML_Util::splitQualifiedName($tag["qname"]); - $tag["localPart"] = $parts["localPart"]; - if (isset($parts["namespace"])) { - $tag["namespace"] = $parts["namespace"]; - } - } - - if (isset($tag["namespaceUri"]) && !empty($tag["namespaceUri"])) { - // is a namespace given - if (isset($tag["namespace"]) && !empty($tag["namespace"])) { - $tag["attributes"]["xmlns:".$tag["namespace"]] = $tag["namespaceUri"]; - } else { - // define this Uri as the default namespace - $tag["attributes"]["xmlns"] = $tag["namespaceUri"]; - } - } - - // check for multiline attributes - if ($multiline === true) { - if ($indent === "_auto") { - $indent = str_repeat(" ", (strlen($tag["qname"])+2)); - } - } - - // create attribute list - $attList = PEAR_PackageFile_Generator_v2_XML_Util::attributesToString($tag["attributes"], true, $multiline, $indent, $linebreak ); - if (!isset($tag["content"]) || (string)$tag["content"] == '') { - $tag = sprintf("<%s%s />", $tag["qname"], $attList); - } else { - if ($replaceEntities == PEAR_PackageFile_Generator_v2_XML_Util_REPLACE_ENTITIES) { - $tag["content"] = PEAR_PackageFile_Generator_v2_XML_Util::replaceEntities($tag["content"], $encoding); - } elseif ($replaceEntities == PEAR_PackageFile_Generator_v2_XML_Util_CDATA_SECTION) { - $tag["content"] = PEAR_PackageFile_Generator_v2_XML_Util::createCDataSection($tag["content"]); - } - $tag = sprintf("<%s%s>%s</%s>", $tag["qname"], $attList, $tag["content"], $tag["qname"] ); - } - return $tag; - } - - /** - * create a start element - * - * <code> - * require_once 'XML/Util.php'; - * - * // create an XML start element: - * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createStartElement("myNs:myTag", array("foo" => "bar") ,"http://www.w3c.org/myNs#"); - * </code> - * - * @access public - * @static - * @param string $qname qualified tagname (including namespace) - * @param array $attributes array containg attributes - * @param string $namespaceUri URI of the namespace - * @param boolean $multiline whether to create a multiline tag where each attribute gets written to a single line - * @param string $indent string used to indent attributes (_auto indents attributes so they start at the same column) - * @param string $linebreak string used for linebreaks - * @return string $string XML start element - * @see PEAR_PackageFile_Generator_v2_XML_Util::createEndElement(), PEAR_PackageFile_Generator_v2_XML_Util::createTag() - */ - function createStartElement($qname, $attributes = array(), $namespaceUri = null, $multiline = false, $indent = '_auto', $linebreak = "\n") - { - // if no attributes hav been set, use empty attributes - if (!isset($attributes) || !is_array($attributes)) { - $attributes = array(); - } - - if ($namespaceUri != null) { - $parts = PEAR_PackageFile_Generator_v2_XML_Util::splitQualifiedName($qname); - } - - // check for multiline attributes - if ($multiline === true) { - if ($indent === "_auto") { - $indent = str_repeat(" ", (strlen($qname)+2)); - } - } - - if ($namespaceUri != null) { - // is a namespace given - if (isset($parts["namespace"]) && !empty($parts["namespace"])) { - $attributes["xmlns:".$parts["namespace"]] = $namespaceUri; - } else { - // define this Uri as the default namespace - $attributes["xmlns"] = $namespaceUri; - } - } - - // create attribute list - $attList = PEAR_PackageFile_Generator_v2_XML_Util::attributesToString($attributes, true, $multiline, $indent, $linebreak); - $element = sprintf("<%s%s>", $qname, $attList); - return $element; - } - - /** - * create an end element - * - * <code> - * require_once 'XML/Util.php'; - * - * // create an XML start element: - * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createEndElement("myNs:myTag"); - * </code> - * - * @access public - * @static - * @param string $qname qualified tagname (including namespace) - * @return string $string XML end element - * @see PEAR_PackageFile_Generator_v2_XML_Util::createStartElement(), PEAR_PackageFile_Generator_v2_XML_Util::createTag() - */ - function createEndElement($qname) - { - $element = sprintf("</%s>", $qname); - return $element; - } - - /** - * create an XML comment - * - * <code> - * require_once 'XML/Util.php'; - * - * // create an XML start element: - * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createComment("I am a comment"); - * </code> - * - * @access public - * @static - * @param string $content content of the comment - * @return string $comment XML comment - */ - function createComment($content) - { - $comment = sprintf("<!-- %s -->", $content); - return $comment; - } - - /** - * create a CData section - * - * <code> - * require_once 'XML/Util.php'; - * - * // create a CData section - * $tag = PEAR_PackageFile_Generator_v2_XML_Util::createCDataSection("I am content."); - * </code> - * - * @access public - * @static - * @param string $data data of the CData section - * @return string $string CData section with content - */ - function createCDataSection($data) - { - return sprintf("<![CDATA[%s]]>", $data); - } - - /** - * split qualified name and return namespace and local part - * - * <code> - * require_once 'XML/Util.php'; - * - * // split qualified tag - * $parts = PEAR_PackageFile_Generator_v2_XML_Util::splitQualifiedName("xslt:stylesheet"); - * </code> - * the returned array will contain two elements: - * <pre> - * array( - * "namespace" => "xslt", - * "localPart" => "stylesheet" - * ); - * </pre> - * - * @access public - * @static - * @param string $qname qualified tag name - * @param string $defaultNs default namespace (optional) - * @return array $parts array containing namespace and local part - */ - function splitQualifiedName($qname, $defaultNs = null) - { - if (strstr($qname, ':')) { - $tmp = explode(":", $qname); - return array( - "namespace" => $tmp[0], - "localPart" => $tmp[1] - ); - } - return array( - "namespace" => $defaultNs, - "localPart" => $qname - ); - } - - /** - * check, whether string is valid XML name - * - * <p>XML names are used for tagname, attribute names and various - * other, lesser known entities.</p> - * <p>An XML name may only consist of alphanumeric characters, - * dashes, undescores and periods, and has to start with a letter - * or an underscore. - * </p> - * - * <code> - * require_once 'XML/Util.php'; - * - * // verify tag name - * $result = PEAR_PackageFile_Generator_v2_XML_Util::isValidName("invalidTag?"); - * if (PEAR_PackageFile_Generator_v2_XML_Util::isError($result)) { - * print "Invalid XML name: " . $result->getMessage(); - * } - * </code> - * - * @access public - * @static - * @param string $string string that should be checked - * @return mixed $valid true, if string is a valid XML name, PEAR error otherwise - * @todo support for other charsets - */ - function isValidName($string) - { - // check for invalid chars - if (!preg_match("/^[[:alnum:]_\-.]\\z/", $string{0})) { - return PEAR_PackageFile_Generator_v2_XML_Util::raiseError( "XML names may only start with letter or underscore", PEAR_PackageFile_Generator_v2_XML_Util_ERROR_INVALID_START ); - } - - // check for invalid chars - if (!preg_match("/^([a-zA-Z_]([a-zA-Z0-9_\-\.]*)?:)?[a-zA-Z_]([a-zA-Z0-9_\-\.]+)?\\z/", $string)) { - return PEAR_PackageFile_Generator_v2_XML_Util::raiseError( "XML names may only contain alphanumeric chars, period, hyphen, colon and underscores", PEAR_PackageFile_Generator_v2_XML_Util_ERROR_INVALID_CHARS ); - } - // XML name is valid - return true; - } - - /** - * replacement for PEAR_PackageFile_Generator_v2_XML_Util::raiseError - * - * Avoids the necessity to always require - * PEAR.php - * - * @access public - * @param string error message - * @param integer error code - * @return object PEAR_Error - */ - function raiseError($msg, $code) - { - require_once 'PEAR.php'; - return PEAR::raiseError($msg, $code); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/PackageFile/Parser/v1.php b/src/vitis/vas/rest/class/PEAR/PackageFile/Parser/v1.php deleted file mode 100755 index 1134dc60357c8d8bc8640c93441ba6f91aecfdde..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PackageFile/Parser/v1.php +++ /dev/null @@ -1,465 +0,0 @@ -<?php -/** - * package.xml parsing class, package.xml version 1.0 - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: v1.php,v 1.27 2008/01/03 20:55:16 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * package.xml abstraction class - */ -require_once 'PEAR/PackageFile/v1.php'; -/** - * Parser for package.xml version 1.0 - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: @PEAR-VER@ - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_Parser_v1 -{ - var $_registry; - var $_config; - var $_logger; - /** - * BC hack to allow PEAR_Common::infoFromString() to sort of - * work with the version 2.0 format - there's no filelist though - * @param PEAR_PackageFile_v2 - */ - function fromV2($packagefile) - { - $info = $packagefile->getArray(true); - $ret = new PEAR_PackageFile_v1; - $ret->fromArray($info['old']); - } - - function setConfig(&$c) - { - $this->_config = &$c; - $this->_registry = &$c->getRegistry(); - } - - function setLogger(&$l) - { - $this->_logger = &$l; - } - - /** - * @param string contents of package.xml file, version 1.0 - * @return bool success of parsing - */ - function &parse($data, $file, $archive = false) - { - if (!extension_loaded('xml')) { - return PEAR::raiseError('Cannot create xml parser for parsing package.xml, no xml extension'); - } - $xp = xml_parser_create(); - if (!$xp) { - $a = &PEAR::raiseError('Cannot create xml parser for parsing package.xml'); - return $a; - } - xml_set_object($xp, $this); - xml_set_element_handler($xp, '_element_start_1_0', '_element_end_1_0'); - xml_set_character_data_handler($xp, '_pkginfo_cdata_1_0'); - xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, false); - - $this->element_stack = array(); - $this->_packageInfo = array('provides' => array()); - $this->current_element = false; - unset($this->dir_install); - $this->_packageInfo['filelist'] = array(); - $this->filelist =& $this->_packageInfo['filelist']; - $this->dir_names = array(); - $this->in_changelog = false; - $this->d_i = 0; - $this->cdata = ''; - $this->_isValid = true; - - if (!xml_parse($xp, $data, 1)) { - $code = xml_get_error_code($xp); - $line = xml_get_current_line_number($xp); - xml_parser_free($xp); - $a = &PEAR::raiseError(sprintf("XML error: %s at line %d", - $str = xml_error_string($code), $line), 2); - return $a; - } - - xml_parser_free($xp); - - $pf = new PEAR_PackageFile_v1; - $pf->setConfig($this->_config); - if (isset($this->_logger)) { - $pf->setLogger($this->_logger); - } - $pf->setPackagefile($file, $archive); - $pf->fromArray($this->_packageInfo); - return $pf; - } - // {{{ _unIndent() - - /** - * Unindent given string - * - * @param string $str The string that has to be unindented. - * @return string - * @access private - */ - function _unIndent($str) - { - // remove leading newlines - $str = preg_replace('/^[\r\n]+/', '', $str); - // find whitespace at the beginning of the first line - $indent_len = strspn($str, " \t"); - $indent = substr($str, 0, $indent_len); - $data = ''; - // remove the same amount of whitespace from following lines - foreach (explode("\n", $str) as $line) { - if (substr($line, 0, $indent_len) == $indent) { - $data .= substr($line, $indent_len) . "\n"; - } elseif (trim(substr($line, 0, $indent_len))) { - $data .= ltrim($line); - } - } - return $data; - } - - // Support for package DTD v1.0: - // {{{ _element_start_1_0() - - /** - * XML parser callback for ending elements. Used for version 1.0 - * packages. - * - * @param resource $xp XML parser resource - * @param string $name name of ending element - * - * @return void - * - * @access private - */ - function _element_start_1_0($xp, $name, $attribs) - { - array_push($this->element_stack, $name); - $this->current_element = $name; - $spos = sizeof($this->element_stack) - 2; - $this->prev_element = ($spos >= 0) ? $this->element_stack[$spos] : ''; - $this->current_attributes = $attribs; - $this->cdata = ''; - switch ($name) { - case 'dir': - if ($this->in_changelog) { - break; - } - if (array_key_exists('name', $attribs) && $attribs['name'] != '/') { - $attribs['name'] = preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), - $attribs['name']); - if (strrpos($attribs['name'], '/') === strlen($attribs['name']) - 1) { - $attribs['name'] = substr($attribs['name'], 0, - strlen($attribs['name']) - 1); - } - if (strpos($attribs['name'], '/') === 0) { - $attribs['name'] = substr($attribs['name'], 1); - } - $this->dir_names[] = $attribs['name']; - } - if (isset($attribs['baseinstalldir'])) { - $this->dir_install = $attribs['baseinstalldir']; - } - if (isset($attribs['role'])) { - $this->dir_role = $attribs['role']; - } - break; - case 'file': - if ($this->in_changelog) { - break; - } - if (isset($attribs['name'])) { - $path = ''; - if (count($this->dir_names)) { - foreach ($this->dir_names as $dir) { - $path .= $dir . '/'; - } - } - $path .= preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), - $attribs['name']); - unset($attribs['name']); - $this->current_path = $path; - $this->filelist[$path] = $attribs; - // Set the baseinstalldir only if the file don't have this attrib - if (!isset($this->filelist[$path]['baseinstalldir']) && - isset($this->dir_install)) - { - $this->filelist[$path]['baseinstalldir'] = $this->dir_install; - } - // Set the Role - if (!isset($this->filelist[$path]['role']) && isset($this->dir_role)) { - $this->filelist[$path]['role'] = $this->dir_role; - } - } - break; - case 'replace': - if (!$this->in_changelog) { - $this->filelist[$this->current_path]['replacements'][] = $attribs; - } - break; - case 'maintainers': - $this->_packageInfo['maintainers'] = array(); - $this->m_i = 0; // maintainers array index - break; - case 'maintainer': - // compatibility check - if (!isset($this->_packageInfo['maintainers'])) { - $this->_packageInfo['maintainers'] = array(); - $this->m_i = 0; - } - $this->_packageInfo['maintainers'][$this->m_i] = array(); - $this->current_maintainer =& $this->_packageInfo['maintainers'][$this->m_i]; - break; - case 'changelog': - $this->_packageInfo['changelog'] = array(); - $this->c_i = 0; // changelog array index - $this->in_changelog = true; - break; - case 'release': - if ($this->in_changelog) { - $this->_packageInfo['changelog'][$this->c_i] = array(); - $this->current_release = &$this->_packageInfo['changelog'][$this->c_i]; - } else { - $this->current_release = &$this->_packageInfo; - } - break; - case 'deps': - if (!$this->in_changelog) { - $this->_packageInfo['release_deps'] = array(); - } - break; - case 'dep': - // dependencies array index - if (!$this->in_changelog) { - $this->d_i++; - isset($attribs['type']) ? ($attribs['type'] = strtolower($attribs['type'])) : false; - $this->_packageInfo['release_deps'][$this->d_i] = $attribs; - } - break; - case 'configureoptions': - if (!$this->in_changelog) { - $this->_packageInfo['configure_options'] = array(); - } - break; - case 'configureoption': - if (!$this->in_changelog) { - $this->_packageInfo['configure_options'][] = $attribs; - } - break; - case 'provides': - if (empty($attribs['type']) || empty($attribs['name'])) { - break; - } - $attribs['explicit'] = true; - $this->_packageInfo['provides']["$attribs[type];$attribs[name]"] = $attribs; - break; - case 'package' : - if (isset($attribs['version'])) { - $this->_packageInfo['xsdversion'] = trim($attribs['version']); - } else { - $this->_packageInfo['xsdversion'] = '1.0'; - } - if (isset($attribs['packagerversion'])) { - $this->_packageInfo['packagerversion'] = $attribs['packagerversion']; - } - break; - } - } - - // }}} - // {{{ _element_end_1_0() - - /** - * XML parser callback for ending elements. Used for version 1.0 - * packages. - * - * @param resource $xp XML parser resource - * @param string $name name of ending element - * - * @return void - * - * @access private - */ - function _element_end_1_0($xp, $name) - { - $data = trim($this->cdata); - switch ($name) { - case 'name': - switch ($this->prev_element) { - case 'package': - $this->_packageInfo['package'] = $data; - break; - case 'maintainer': - $this->current_maintainer['name'] = $data; - break; - } - break; - case 'extends' : - $this->_packageInfo['extends'] = $data; - break; - case 'summary': - $this->_packageInfo['summary'] = $data; - break; - case 'description': - $data = $this->_unIndent($this->cdata); - $this->_packageInfo['description'] = $data; - break; - case 'user': - $this->current_maintainer['handle'] = $data; - break; - case 'email': - $this->current_maintainer['email'] = $data; - break; - case 'role': - $this->current_maintainer['role'] = $data; - break; - case 'version': - //$data = ereg_replace ('[^a-zA-Z0-9._\-]', '_', $data); - if ($this->in_changelog) { - $this->current_release['version'] = $data; - } else { - $this->_packageInfo['version'] = $data; - } - break; - case 'date': - if ($this->in_changelog) { - $this->current_release['release_date'] = $data; - } else { - $this->_packageInfo['release_date'] = $data; - } - break; - case 'notes': - // try to "de-indent" release notes in case someone - // has been over-indenting their xml ;-) - $data = $this->_unIndent($this->cdata); - if ($this->in_changelog) { - $this->current_release['release_notes'] = $data; - } else { - $this->_packageInfo['release_notes'] = $data; - } - break; - case 'warnings': - if ($this->in_changelog) { - $this->current_release['release_warnings'] = $data; - } else { - $this->_packageInfo['release_warnings'] = $data; - } - break; - case 'state': - if ($this->in_changelog) { - $this->current_release['release_state'] = $data; - } else { - $this->_packageInfo['release_state'] = $data; - } - break; - case 'license': - if ($this->in_changelog) { - $this->current_release['release_license'] = $data; - } else { - $this->_packageInfo['release_license'] = $data; - } - break; - case 'dep': - if ($data && !$this->in_changelog) { - $this->_packageInfo['release_deps'][$this->d_i]['name'] = $data; - } - break; - case 'dir': - if ($this->in_changelog) { - break; - } - array_pop($this->dir_names); - break; - case 'file': - if ($this->in_changelog) { - break; - } - if ($data) { - $path = ''; - if (count($this->dir_names)) { - foreach ($this->dir_names as $dir) { - $path .= $dir . '/'; - } - } - $path .= $data; - $this->filelist[$path] = $this->current_attributes; - // Set the baseinstalldir only if the file don't have this attrib - if (!isset($this->filelist[$path]['baseinstalldir']) && - isset($this->dir_install)) - { - $this->filelist[$path]['baseinstalldir'] = $this->dir_install; - } - // Set the Role - if (!isset($this->filelist[$path]['role']) && isset($this->dir_role)) { - $this->filelist[$path]['role'] = $this->dir_role; - } - } - break; - case 'maintainer': - if (empty($this->_packageInfo['maintainers'][$this->m_i]['role'])) { - $this->_packageInfo['maintainers'][$this->m_i]['role'] = 'lead'; - } - $this->m_i++; - break; - case 'release': - if ($this->in_changelog) { - $this->c_i++; - } - break; - case 'changelog': - $this->in_changelog = false; - break; - } - array_pop($this->element_stack); - $spos = sizeof($this->element_stack) - 1; - $this->current_element = ($spos > 0) ? $this->element_stack[$spos] : ''; - $this->cdata = ''; - } - - // }}} - // {{{ _pkginfo_cdata_1_0() - - /** - * XML parser callback for character data. Used for version 1.0 - * packages. - * - * @param resource $xp XML parser resource - * @param string $name character data - * - * @return void - * - * @access private - */ - function _pkginfo_cdata_1_0($xp, $data) - { - if (isset($this->cdata)) { - $this->cdata .= $data; - } - } - - // }}} -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/PackageFile/Parser/v2.php b/src/vitis/vas/rest/class/PEAR/PackageFile/Parser/v2.php deleted file mode 100755 index 7cbc5851b23e58f7614e1d0a83d672d760db9114..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PackageFile/Parser/v2.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php -/** - * package.xml parsing class, package.xml version 2.0 - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: v2.php,v 1.21 2008/01/03 20:26:37 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * base xml parser class - */ -require_once 'PEAR/XMLParser.php'; -require_once 'PEAR/PackageFile/v2.php'; -/** - * Parser for package.xml version 2.0 - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: @PEAR-VER@ - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_Parser_v2 extends PEAR_XMLParser -{ - var $_config; - var $_logger; - var $_registry; - - function setConfig(&$c) - { - $this->_config = &$c; - $this->_registry = &$c->getRegistry(); - } - - function setLogger(&$l) - { - $this->_logger = &$l; - } - /** - * Unindent given string - * - * @param string $str The string that has to be unindented. - * @return string - * @access private - */ - function _unIndent($str) - { - // remove leading newlines - $str = preg_replace('/^[\r\n]+/', '', $str); - // find whitespace at the beginning of the first line - $indent_len = strspn($str, " \t"); - $indent = substr($str, 0, $indent_len); - $data = ''; - // remove the same amount of whitespace from following lines - foreach (explode("\n", $str) as $line) { - if (substr($line, 0, $indent_len) == $indent) { - $data .= substr($line, $indent_len) . "\n"; - } else { - $data .= $line . "\n"; - } - } - return $data; - } - - /** - * post-process data - * - * @param string $data - * @param string $element element name - */ - function postProcess($data, $element) - { - if ($element == 'notes') { - return trim($this->_unIndent($data)); - } - return trim($data); - } - - /** - * @param string - * @param string file name of the package.xml - * @param string|false name of the archive this package.xml came from, if any - * @param string class name to instantiate and return. This must be PEAR_PackageFile_v2 or - * a subclass - * @return PEAR_PackageFile_v2 - */ - function &parse($data, $file, $archive = false, $class = 'PEAR_PackageFile_v2') - { - if (PEAR::isError($err = parent::parse($data, $file))) { - return $err; - } - $ret = new $class; - $ret->setConfig($this->_config); - if (isset($this->_logger)) { - $ret->setLogger($this->_logger); - } - $ret->fromArray($this->_unserializedData); - $ret->setPackagefile($file, $archive); - return $ret; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/PackageFile/v1.php b/src/vitis/vas/rest/class/PEAR/PackageFile/v1.php deleted file mode 100755 index d289550737799fc15d119ad8eb0037c71513a47b..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PackageFile/v1.php +++ /dev/null @@ -1,1618 +0,0 @@ -<?php -/** - * PEAR_PackageFile_v1, package.xml version 1.0 - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: v1.php,v 1.74 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * For error handling - */ -require_once 'PEAR/ErrorStack.php'; - -/** - * Error code if parsing is attempted with no xml extension - */ -define('PEAR_PACKAGEFILE_ERROR_NO_XML_EXT', 3); - -/** - * Error code if creating the xml parser resource fails - */ -define('PEAR_PACKAGEFILE_ERROR_CANT_MAKE_PARSER', 4); - -/** - * Error code used for all sax xml parsing errors - */ -define('PEAR_PACKAGEFILE_ERROR_PARSER_ERROR', 5); - -/** - * Error code used when there is no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_NAME', 6); - -/** - * Error code when a package name is not valid - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_NAME', 7); - -/** - * Error code used when no summary is parsed - */ -define('PEAR_PACKAGEFILE_ERROR_NO_SUMMARY', 8); - -/** - * Error code for summaries that are more than 1 line - */ -define('PEAR_PACKAGEFILE_ERROR_MULTILINE_SUMMARY', 9); - -/** - * Error code used when no description is present - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DESCRIPTION', 10); - -/** - * Error code used when no license is present - */ -define('PEAR_PACKAGEFILE_ERROR_NO_LICENSE', 11); - -/** - * Error code used when a <version> version number is not present - */ -define('PEAR_PACKAGEFILE_ERROR_NO_VERSION', 12); - -/** - * Error code used when a <version> version number is invalid - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_VERSION', 13); - -/** - * Error code when release state is missing - */ -define('PEAR_PACKAGEFILE_ERROR_NO_STATE', 14); - -/** - * Error code when release state is invalid - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_STATE', 15); - -/** - * Error code when release state is missing - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DATE', 16); - -/** - * Error code when release state is invalid - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DATE', 17); - -/** - * Error code when no release notes are found - */ -define('PEAR_PACKAGEFILE_ERROR_NO_NOTES', 18); - -/** - * Error code when no maintainers are found - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTAINERS', 19); - -/** - * Error code when a maintainer has no handle - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTHANDLE', 20); - -/** - * Error code when a maintainer has no handle - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTROLE', 21); - -/** - * Error code when a maintainer has no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTNAME', 22); - -/** - * Error code when a maintainer has no email - */ -define('PEAR_PACKAGEFILE_ERROR_NO_MAINTEMAIL', 23); - -/** - * Error code when a maintainer has no handle - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_MAINTROLE', 24); - -/** - * Error code when a dependency is not a PHP dependency, but has no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DEPNAME', 25); - -/** - * Error code when a dependency has no type (pkg, php, etc.) - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DEPTYPE', 26); - -/** - * Error code when a dependency has no relation (lt, ge, has, etc.) - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DEPREL', 27); - -/** - * Error code when a dependency is not a 'has' relation, but has no version - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DEPVERSION', 28); - -/** - * Error code when a dependency has an invalid relation - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DEPREL', 29); - -/** - * Error code when a dependency has an invalid type - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DEPTYPE', 30); - -/** - * Error code when a dependency has an invalid optional option - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DEPOPTIONAL', 31); - -/** - * Error code when a dependency is a pkg dependency, and has an invalid package name - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_DEPNAME', 32); - -/** - * Error code when a dependency has a channel="foo" attribute, and foo is not a registered channel - */ -define('PEAR_PACKAGEFILE_ERROR_UNKNOWN_DEPCHANNEL', 33); - -/** - * Error code when rel="has" and version attribute is present. - */ -define('PEAR_PACKAGEFILE_ERROR_DEPVERSION_IGNORED', 34); - -/** - * Error code when type="php" and dependency name is present - */ -define('PEAR_PACKAGEFILE_ERROR_DEPNAME_IGNORED', 35); - -/** - * Error code when a configure option has no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_CONFNAME', 36); - -/** - * Error code when a configure option has no name - */ -define('PEAR_PACKAGEFILE_ERROR_NO_CONFPROMPT', 37); - -/** - * Error code when a file in the filelist has an invalid role - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_FILEROLE', 38); - -/** - * Error code when a file in the filelist has no role - */ -define('PEAR_PACKAGEFILE_ERROR_NO_FILEROLE', 39); - -/** - * Error code when analyzing a php source file that has parse errors - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_PHPFILE', 40); - -/** - * Error code when analyzing a php source file reveals a source element - * without a package name prefix - */ -define('PEAR_PACKAGEFILE_ERROR_NO_PNAME_PREFIX', 41); - -/** - * Error code when an unknown channel is specified - */ -define('PEAR_PACKAGEFILE_ERROR_UNKNOWN_CHANNEL', 42); - -/** - * Error code when no files are found in the filelist - */ -define('PEAR_PACKAGEFILE_ERROR_NO_FILES', 43); - -/** - * Error code when a file is not valid php according to _analyzeSourceCode() - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_FILE', 44); - -/** - * Error code when the channel validator returns an error or warning - */ -define('PEAR_PACKAGEFILE_ERROR_CHANNELVAL', 45); - -/** - * Error code when a php5 package is packaged in php4 (analysis doesn't work) - */ -define('PEAR_PACKAGEFILE_ERROR_PHP5', 46); - -/** - * Error code when a file is listed in package.xml but does not exist - */ -define('PEAR_PACKAGEFILE_ERROR_FILE_NOTFOUND', 47); - -/** - * Error code when a <dep type="php" rel="not"... is encountered (use rel="ne") - */ -define('PEAR_PACKAGEFILE_PHP_NO_NOT', 48); - -/** - * Error code when a package.xml contains non-ISO-8859-1 characters - */ -define('PEAR_PACKAGEFILE_ERROR_NON_ISO_CHARS', 49); - -/** - * Error code when a dependency is not a 'has' relation, but has no version - */ -define('PEAR_PACKAGEFILE_ERROR_NO_DEPPHPVERSION', 50); - -/** - * Error code when a package has no lead developer - */ -define('PEAR_PACKAGEFILE_ERROR_NO_LEAD', 51); - -/** - * Error code when a filename begins with "." - */ -define('PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME', 52); -/** - * package.xml encapsulator - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_v1 -{ - /** - * @access private - * @var PEAR_ErrorStack - * @access private - */ - var $_stack; - - /** - * A registry object, used to access the package name validation regex for non-standard channels - * @var PEAR_Registry - * @access private - */ - var $_registry; - - /** - * An object that contains a log method that matches PEAR_Common::log's signature - * @var object - * @access private - */ - var $_logger; - - /** - * Parsed package information - * @var array - * @access private - */ - var $_packageInfo; - - /** - * path to package.xml - * @var string - * @access private - */ - var $_packageFile; - - /** - * path to package .tgz or false if this is a local/extracted package.xml - * @var string - * @access private - */ - var $_archiveFile; - - /** - * @var int - * @access private - */ - var $_isValid = 0; - - /** - * Determines whether this packagefile was initialized only with partial package info - * - * If this package file was constructed via parsing REST, it will only contain - * - * - package name - * - channel name - * - dependencies - * @var boolean - * @access private - */ - var $_incomplete = true; - - /** - * @param bool determines whether to return a PEAR_Error object, or use the PEAR_ErrorStack - * @param string Name of Error Stack class to use. - */ - function PEAR_PackageFile_v1() - { - $this->_stack = &new PEAR_ErrorStack('PEAR_PackageFile_v1'); - $this->_stack->setErrorMessageTemplate($this->_getErrorMessage()); - $this->_isValid = 0; - } - - function installBinary($installer) - { - return false; - } - - function isExtension($name) - { - return false; - } - - function setConfig(&$config) - { - $this->_config = &$config; - $this->_registry = &$config->getRegistry(); - } - - function setRequestedGroup() - { - // placeholder - } - - /** - * For saving in the registry. - * - * Set the last version that was installed - * @param string - */ - function setLastInstalledVersion($version) - { - $this->_packageInfo['_lastversion'] = $version; - } - - /** - * @return string|false - */ - function getLastInstalledVersion() - { - if (isset($this->_packageInfo['_lastversion'])) { - return $this->_packageInfo['_lastversion']; - } - return false; - } - - function getInstalledBinary() - { - return false; - } - - function listPostinstallScripts() - { - return false; - } - - function initPostinstallScripts() - { - return false; - } - - function setLogger(&$logger) - { - if ($logger && (!is_object($logger) || !method_exists($logger, 'log'))) { - return PEAR::raiseError('Logger must be compatible with PEAR_Common::log'); - } - $this->_logger = &$logger; - } - - function setPackagefile($file, $archive = false) - { - $this->_packageFile = $file; - $this->_archiveFile = $archive ? $archive : $file; - } - - function getPackageFile() - { - return isset($this->_packageFile) ? $this->_packageFile : false; - } - - function getPackageType() - { - return 'php'; - } - - function getArchiveFile() - { - return $this->_archiveFile; - } - - function packageInfo($field) - { - if (!is_string($field) || empty($field) || - !isset($this->_packageInfo[$field])) { - return false; - } - return $this->_packageInfo[$field]; - } - - function setDirtree($path) - { - if (!isset($this->_packageInfo['dirtree'])) { - $this->_packageInfo['dirtree'] = array(); - } - $this->_packageInfo['dirtree'][$path] = true; - } - - function getDirtree() - { - if (isset($this->_packageInfo['dirtree']) && count($this->_packageInfo['dirtree'])) { - return $this->_packageInfo['dirtree']; - } - return false; - } - - function resetDirtree() - { - unset($this->_packageInfo['dirtree']); - } - - function fromArray($pinfo) - { - $this->_incomplete = false; - $this->_packageInfo = $pinfo; - } - - function isIncomplete() - { - return $this->_incomplete; - } - - function getChannel() - { - return 'pear.php.net'; - } - - function getUri() - { - return false; - } - - function getTime() - { - return false; - } - - function getExtends() - { - if (isset($this->_packageInfo['extends'])) { - return $this->_packageInfo['extends']; - } - return false; - } - - /** - * @return array - */ - function toArray() - { - if (!$this->validate(PEAR_VALIDATE_NORMAL)) { - return false; - } - return $this->getArray(); - } - - function getArray() - { - return $this->_packageInfo; - } - - function getName() - { - return $this->getPackage(); - } - - function getPackage() - { - if (isset($this->_packageInfo['package'])) { - return $this->_packageInfo['package']; - } - return false; - } - - /** - * WARNING - don't use this unless you know what you are doing - */ - function setRawPackage($package) - { - $this->_packageInfo['package'] = $package; - } - - function setPackage($package) - { - $this->_packageInfo['package'] = $package; - $this->_isValid = false; - } - - function getVersion() - { - if (isset($this->_packageInfo['version'])) { - return $this->_packageInfo['version']; - } - return false; - } - - function setVersion($version) - { - $this->_packageInfo['version'] = $version; - $this->_isValid = false; - } - - function clearMaintainers() - { - unset($this->_packageInfo['maintainers']); - } - - function getMaintainers() - { - if (isset($this->_packageInfo['maintainers'])) { - return $this->_packageInfo['maintainers']; - } - return false; - } - - /** - * Adds a new maintainer - no checking of duplicates is performed, use - * updatemaintainer for that purpose. - */ - function addMaintainer($role, $handle, $name, $email) - { - $this->_packageInfo['maintainers'][] = - array('handle' => $handle, 'role' => $role, 'email' => $email, 'name' => $name); - $this->_isValid = false; - } - - function updateMaintainer($role, $handle, $name, $email) - { - $found = false; - if (!isset($this->_packageInfo['maintainers']) || - !is_array($this->_packageInfo['maintainers'])) { - return $this->addMaintainer($role, $handle, $name, $email); - } - foreach ($this->_packageInfo['maintainers'] as $i => $maintainer) { - if ($maintainer['handle'] == $handle) { - $found = $i; - break; - } - } - if ($found !== false) { - unset($this->_packageInfo['maintainers'][$found]); - $this->_packageInfo['maintainers'] = - array_values($this->_packageInfo['maintainers']); - } - $this->addMaintainer($role, $handle, $name, $email); - } - - function deleteMaintainer($handle) - { - $found = false; - foreach ($this->_packageInfo['maintainers'] as $i => $maintainer) { - if ($maintainer['handle'] == $handle) { - $found = $i; - break; - } - } - if ($found !== false) { - unset($this->_packageInfo['maintainers'][$found]); - $this->_packageInfo['maintainers'] = - array_values($this->_packageInfo['maintainers']); - return true; - } - return false; - } - - function getState() - { - if (isset($this->_packageInfo['release_state'])) { - return $this->_packageInfo['release_state']; - } - return false; - } - - function setRawState($state) - { - $this->_packageInfo['release_state'] = $state; - } - - function setState($state) - { - $this->_packageInfo['release_state'] = $state; - $this->_isValid = false; - } - - function getDate() - { - if (isset($this->_packageInfo['release_date'])) { - return $this->_packageInfo['release_date']; - } - return false; - } - - function setDate($date) - { - $this->_packageInfo['release_date'] = $date; - $this->_isValid = false; - } - - function getLicense() - { - if (isset($this->_packageInfo['release_license'])) { - return $this->_packageInfo['release_license']; - } - return false; - } - - function setLicense($date) - { - $this->_packageInfo['release_license'] = $date; - $this->_isValid = false; - } - - function getSummary() - { - if (isset($this->_packageInfo['summary'])) { - return $this->_packageInfo['summary']; - } - return false; - } - - function setSummary($summary) - { - $this->_packageInfo['summary'] = $summary; - $this->_isValid = false; - } - - function getDescription() - { - if (isset($this->_packageInfo['description'])) { - return $this->_packageInfo['description']; - } - return false; - } - - function setDescription($desc) - { - $this->_packageInfo['description'] = $desc; - $this->_isValid = false; - } - - function getNotes() - { - if (isset($this->_packageInfo['release_notes'])) { - return $this->_packageInfo['release_notes']; - } - return false; - } - - function setNotes($notes) - { - $this->_packageInfo['release_notes'] = $notes; - $this->_isValid = false; - } - - function getDeps() - { - if (isset($this->_packageInfo['release_deps'])) { - return $this->_packageInfo['release_deps']; - } - return false; - } - - /** - * Reset dependencies prior to adding new ones - */ - function clearDeps() - { - unset($this->_packageInfo['release_deps']); - } - - function addPhpDep($version, $rel) - { - $this->_isValid = false; - $this->_packageInfo['release_deps'][] = - array('type' => 'php', - 'rel' => $rel, - 'version' => $version); - } - - function addPackageDep($name, $version, $rel, $optional = 'no') - { - $this->_isValid = false; - $dep = - array('type' => 'pkg', - 'name' => $name, - 'rel' => $rel, - 'optional' => $optional); - if ($rel != 'has' && $rel != 'not') { - $dep['version'] = $version; - } - $this->_packageInfo['release_deps'][] = $dep; - } - - function addExtensionDep($name, $version, $rel, $optional = 'no') - { - $this->_isValid = false; - $this->_packageInfo['release_deps'][] = - array('type' => 'ext', - 'name' => $name, - 'rel' => $rel, - 'version' => $version, - 'optional' => $optional); - } - - /** - * WARNING - do not use this function directly unless you know what you're doing - */ - function setDeps($deps) - { - $this->_packageInfo['release_deps'] = $deps; - } - - function hasDeps() - { - return isset($this->_packageInfo['release_deps']) && - count($this->_packageInfo['release_deps']); - } - - function getDependencyGroup($group) - { - return false; - } - - function isCompatible($pf) - { - return false; - } - - function isSubpackageOf($p) - { - return $p->isSubpackage($this); - } - - function isSubpackage($p) - { - return false; - } - - function dependsOn($package, $channel) - { - if (strtolower($channel) != 'pear.php.net') { - return false; - } - if (!($deps = $this->getDeps())) { - return false; - } - foreach ($deps as $dep) { - if ($dep['type'] != 'pkg') { - continue; - } - if (strtolower($dep['name']) == strtolower($package)) { - return true; - } - } - return false; - } - - function getConfigureOptions() - { - if (isset($this->_packageInfo['configure_options'])) { - return $this->_packageInfo['configure_options']; - } - return false; - } - - function hasConfigureOptions() - { - return isset($this->_packageInfo['configure_options']) && - count($this->_packageInfo['configure_options']); - } - - function addConfigureOption($name, $prompt, $default = false) - { - $o = array('name' => $name, 'prompt' => $prompt); - if ($default !== false) { - $o['default'] = $default; - } - if (!isset($this->_packageInfo['configure_options'])) { - $this->_packageInfo['configure_options'] = array(); - } - $this->_packageInfo['configure_options'][] = $o; - } - - function clearConfigureOptions() - { - unset($this->_packageInfo['configure_options']); - } - - function getProvides() - { - if (isset($this->_packageInfo['provides'])) { - return $this->_packageInfo['provides']; - } - return false; - } - - function getProvidesExtension() - { - return false; - } - - function addFile($dir, $file, $attrs) - { - $dir = preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), $dir); - if ($dir == '/' || $dir == '') { - $dir = ''; - } else { - $dir .= '/'; - } - $file = $dir . $file; - $file = preg_replace('![\\/]+!', '/', $file); - $this->_packageInfo['filelist'][$file] = $attrs; - } - - function getInstallationFilelist() - { - return $this->getFilelist(); - } - - function getFilelist() - { - if (isset($this->_packageInfo['filelist'])) { - return $this->_packageInfo['filelist']; - } - return false; - } - - function setFileAttribute($file, $attr, $value) - { - $this->_packageInfo['filelist'][$file][$attr] = $value; - } - - function resetFilelist() - { - $this->_packageInfo['filelist'] = array(); - } - - function setInstalledAs($file, $path) - { - if ($path) { - return $this->_packageInfo['filelist'][$file]['installed_as'] = $path; - } - unset($this->_packageInfo['filelist'][$file]['installed_as']); - } - - function installedFile($file, $atts) - { - if (isset($this->_packageInfo['filelist'][$file])) { - $this->_packageInfo['filelist'][$file] = - array_merge($this->_packageInfo['filelist'][$file], $atts); - } else { - $this->_packageInfo['filelist'][$file] = $atts; - } - } - - function getChangelog() - { - if (isset($this->_packageInfo['changelog'])) { - return $this->_packageInfo['changelog']; - } - return false; - } - - function getPackagexmlVersion() - { - return '1.0'; - } - - /** - * Wrapper to {@link PEAR_ErrorStack::getErrors()} - * @param boolean determines whether to purge the error stack after retrieving - * @return array - */ - function getValidationWarnings($purge = true) - { - return $this->_stack->getErrors($purge); - } - - // }}} - /** - * Validation error. Also marks the object contents as invalid - * @param error code - * @param array error information - * @access private - */ - function _validateError($code, $params = array()) - { - $this->_stack->push($code, 'error', $params, false, false, debug_backtrace()); - $this->_isValid = false; - } - - /** - * Validation warning. Does not mark the object contents invalid. - * @param error code - * @param array error information - * @access private - */ - function _validateWarning($code, $params = array()) - { - $this->_stack->push($code, 'warning', $params, false, false, debug_backtrace()); - } - - /** - * @param integer error code - * @access protected - */ - function _getErrorMessage() - { - return array( - PEAR_PACKAGEFILE_ERROR_NO_NAME => - 'Missing Package Name', - PEAR_PACKAGEFILE_ERROR_NO_SUMMARY => - 'No summary found', - PEAR_PACKAGEFILE_ERROR_MULTILINE_SUMMARY => - 'Summary should be on one line', - PEAR_PACKAGEFILE_ERROR_NO_DESCRIPTION => - 'Missing description', - PEAR_PACKAGEFILE_ERROR_NO_LICENSE => - 'Missing license', - PEAR_PACKAGEFILE_ERROR_NO_VERSION => - 'No release version found', - PEAR_PACKAGEFILE_ERROR_NO_STATE => - 'No release state found', - PEAR_PACKAGEFILE_ERROR_NO_DATE => - 'No release date found', - PEAR_PACKAGEFILE_ERROR_NO_NOTES => - 'No release notes found', - PEAR_PACKAGEFILE_ERROR_NO_LEAD => - 'Package must have at least one lead maintainer', - PEAR_PACKAGEFILE_ERROR_NO_MAINTAINERS => - 'No maintainers found, at least one must be defined', - PEAR_PACKAGEFILE_ERROR_NO_MAINTHANDLE => - 'Maintainer %index% has no handle (user ID at channel server)', - PEAR_PACKAGEFILE_ERROR_NO_MAINTROLE => - 'Maintainer %index% has no role', - PEAR_PACKAGEFILE_ERROR_NO_MAINTNAME => - 'Maintainer %index% has no name', - PEAR_PACKAGEFILE_ERROR_NO_MAINTEMAIL => - 'Maintainer %index% has no email', - PEAR_PACKAGEFILE_ERROR_NO_DEPNAME => - 'Dependency %index% is not a php dependency, and has no name', - PEAR_PACKAGEFILE_ERROR_NO_DEPREL => - 'Dependency %index% has no relation (rel)', - PEAR_PACKAGEFILE_ERROR_NO_DEPTYPE => - 'Dependency %index% has no type', - PEAR_PACKAGEFILE_ERROR_DEPNAME_IGNORED => - 'PHP Dependency %index% has a name attribute of "%name%" which will be' . - ' ignored!', - PEAR_PACKAGEFILE_ERROR_NO_DEPVERSION => - 'Dependency %index% is not a rel="has" or rel="not" dependency, ' . - 'and has no version', - PEAR_PACKAGEFILE_ERROR_NO_DEPPHPVERSION => - 'Dependency %index% is a type="php" dependency, ' . - 'and has no version', - PEAR_PACKAGEFILE_ERROR_DEPVERSION_IGNORED => - 'Dependency %index% is a rel="%rel%" dependency, versioning is ignored', - PEAR_PACKAGEFILE_ERROR_INVALID_DEPOPTIONAL => - 'Dependency %index% has invalid optional value "%opt%", should be yes or no', - PEAR_PACKAGEFILE_PHP_NO_NOT => - 'Dependency %index%: php dependencies cannot use "not" rel, use "ne"' . - ' to exclude specific versions', - PEAR_PACKAGEFILE_ERROR_NO_CONFNAME => - 'Configure Option %index% has no name', - PEAR_PACKAGEFILE_ERROR_NO_CONFPROMPT => - 'Configure Option %index% has no prompt', - PEAR_PACKAGEFILE_ERROR_NO_FILES => - 'No files in <filelist> section of package.xml', - PEAR_PACKAGEFILE_ERROR_NO_FILEROLE => - 'File "%file%" has no role, expecting one of "%roles%"', - PEAR_PACKAGEFILE_ERROR_INVALID_FILEROLE => - 'File "%file%" has invalid role "%role%", expecting one of "%roles%"', - PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME => - 'File "%file%" cannot start with ".", cannot package or install', - PEAR_PACKAGEFILE_ERROR_INVALID_PHPFILE => - 'Parser error: invalid PHP found in file "%file%"', - PEAR_PACKAGEFILE_ERROR_NO_PNAME_PREFIX => - 'in %file%: %type% "%name%" not prefixed with package name "%package%"', - PEAR_PACKAGEFILE_ERROR_INVALID_FILE => - 'Parser error: invalid PHP file "%file%"', - PEAR_PACKAGEFILE_ERROR_CHANNELVAL => - 'Channel validator error: field "%field%" - %reason%', - PEAR_PACKAGEFILE_ERROR_PHP5 => - 'Error, PHP5 token encountered in %file%, analysis should be in PHP5', - PEAR_PACKAGEFILE_ERROR_FILE_NOTFOUND => - 'File "%file%" in package.xml does not exist', - PEAR_PACKAGEFILE_ERROR_NON_ISO_CHARS => - 'Package.xml contains non-ISO-8859-1 characters, and may not validate', - ); - } - - /** - * Validate XML package definition file. - * - * @access public - * @return boolean - */ - function validate($state = PEAR_VALIDATE_NORMAL, $nofilechecking = false) - { - if (($this->_isValid & $state) == $state) { - return true; - } - $this->_isValid = true; - $info = $this->_packageInfo; - if (empty($info['package'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_NAME); - $this->_packageName = $pn = 'unknown'; - } else { - $this->_packageName = $pn = $info['package']; - } - - if (empty($info['summary'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_SUMMARY); - } elseif (strpos(trim($info['summary']), "\n") !== false) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_MULTILINE_SUMMARY, - array('summary' => $info['summary'])); - } - if (empty($info['description'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DESCRIPTION); - } - if (empty($info['release_license'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_LICENSE); - } - if (empty($info['version'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_VERSION); - } - if (empty($info['release_state'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_STATE); - } - if (empty($info['release_date'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DATE); - } - if (empty($info['release_notes'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_NOTES); - } - if (empty($info['maintainers'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTAINERS); - } else { - $haslead = false; - $i = 1; - foreach ($info['maintainers'] as $m) { - if (empty($m['handle'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTHANDLE, - array('index' => $i)); - } - if (empty($m['role'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTROLE, - array('index' => $i, 'roles' => PEAR_Common::getUserRoles())); - } elseif ($m['role'] == 'lead') { - $haslead = true; - } - if (empty($m['name'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTNAME, - array('index' => $i)); - } - if (empty($m['email'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_MAINTEMAIL, - array('index' => $i)); - } - $i++; - } - if (!$haslead) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_LEAD); - } - } - if (!empty($info['release_deps'])) { - $i = 1; - foreach ($info['release_deps'] as $d) { - if (!isset($d['type']) || empty($d['type'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPTYPE, - array('index' => $i, 'types' => PEAR_Common::getDependencyTypes())); - continue; - } - if (!isset($d['rel']) || empty($d['rel'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPREL, - array('index' => $i, 'rels' => PEAR_Common::getDependencyRelations())); - continue; - } - if (!empty($d['optional'])) { - if (!in_array($d['optional'], array('yes', 'no'))) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_DEPOPTIONAL, - array('index' => $i, 'opt' => $d['optional'])); - } - } - if ($d['rel'] != 'has' && $d['rel'] != 'not' && empty($d['version'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPVERSION, - array('index' => $i)); - } elseif (($d['rel'] == 'has' || $d['rel'] == 'not') && !empty($d['version'])) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_DEPVERSION_IGNORED, - array('index' => $i, 'rel' => $d['rel'])); - } - if ($d['type'] == 'php' && !empty($d['name'])) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_DEPNAME_IGNORED, - array('index' => $i, 'name' => $d['name'])); - } elseif ($d['type'] != 'php' && empty($d['name'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPNAME, - array('index' => $i)); - } - if ($d['type'] == 'php' && empty($d['version'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_DEPPHPVERSION, - array('index' => $i)); - } - if (($d['rel'] == 'not') && ($d['type'] == 'php')) { - $this->_validateError(PEAR_PACKAGEFILE_PHP_NO_NOT, - array('index' => $i)); - } - $i++; - } - } - if (!empty($info['configure_options'])) { - $i = 1; - foreach ($info['configure_options'] as $c) { - if (empty($c['name'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_CONFNAME, - array('index' => $i)); - } - if (empty($c['prompt'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_CONFPROMPT, - array('index' => $i)); - } - $i++; - } - } - if (empty($info['filelist'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_FILES); - $errors[] = 'no files'; - } else { - foreach ($info['filelist'] as $file => $fa) { - if (empty($fa['role'])) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_NO_FILEROLE, - array('file' => $file, 'roles' => PEAR_Common::getFileRoles())); - continue; - } elseif (!in_array($fa['role'], PEAR_Common::getFileRoles())) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_FILEROLE, - array('file' => $file, 'role' => $fa['role'], 'roles' => PEAR_Common::getFileRoles())); - } - if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~', str_replace('\\', '/', $file))) { - // file contains .. parent directory or . cur directory references - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME, - array('file' => $file)); - } - if (isset($fa['install-as']) && - preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $fa['install-as']))) { - // install-as contains .. parent directory or . cur directory references - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME, - array('file' => $file . ' [installed as ' . $fa['install-as'] . ']')); - } - if (isset($fa['baseinstalldir']) && - preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $fa['baseinstalldir']))) { - // install-as contains .. parent directory or . cur directory references - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_FILENAME, - array('file' => $file . ' [baseinstalldir ' . $fa['baseinstalldir'] . ']')); - } - } - } - if (isset($this->_registry) && $this->_isValid) { - $chan = $this->_registry->getChannel('pear.php.net'); - if (PEAR::isError($chan)) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_CHANNELVAL, $chan->getMessage()); - return $this->_isValid = 0; - } - $validator = $chan->getValidationObject(); - $validator->setPackageFile($this); - $validator->validate($state); - $failures = $validator->getFailures(); - foreach ($failures['errors'] as $error) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_CHANNELVAL, $error); - } - foreach ($failures['warnings'] as $warning) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_CHANNELVAL, $warning); - } - } - if ($this->_isValid && $state == PEAR_VALIDATE_PACKAGING && !$nofilechecking) { - if ($this->_analyzePhpFiles()) { - $this->_isValid = true; - } - } - if ($this->_isValid) { - return $this->_isValid = $state; - } - return $this->_isValid = 0; - } - - function _analyzePhpFiles() - { - if (!$this->_isValid) { - return false; - } - if (!isset($this->_packageFile)) { - return false; - } - $dir_prefix = dirname($this->_packageFile); - $common = new PEAR_Common; - $log = isset($this->_logger) ? array(&$this->_logger, 'log') : - array($common, 'log'); - $info = $this->getFilelist(); - foreach ($info as $file => $fa) { - if (!file_exists($dir_prefix . DIRECTORY_SEPARATOR . $file)) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_FILE_NOTFOUND, - array('file' => realpath($dir_prefix) . DIRECTORY_SEPARATOR . $file)); - continue; - } - if ($fa['role'] == 'php' && $dir_prefix) { - call_user_func_array($log, array(1, "Analyzing $file")); - $srcinfo = $this->_analyzeSourceCode($dir_prefix . DIRECTORY_SEPARATOR . $file); - if ($srcinfo) { - $this->_buildProvidesArray($srcinfo); - } - } - } - $this->_packageName = $pn = $this->getPackage(); - $pnl = strlen($pn); - if (isset($this->_packageInfo['provides'])) { - foreach ((array) $this->_packageInfo['provides'] as $key => $what) { - if (isset($what['explicit'])) { - // skip conformance checks if the provides entry is - // specified in the package.xml file - continue; - } - extract($what); - if ($type == 'class') { - if (!strncasecmp($name, $pn, $pnl)) { - continue; - } - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_NO_PNAME_PREFIX, - array('file' => $file, 'type' => $type, 'name' => $name, 'package' => $pn)); - } elseif ($type == 'function') { - if (strstr($name, '::') || !strncasecmp($name, $pn, $pnl)) { - continue; - } - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_NO_PNAME_PREFIX, - array('file' => $file, 'type' => $type, 'name' => $name, 'package' => $pn)); - } - } - } - return $this->_isValid; - } - - /** - * Get the default xml generator object - * - * @return PEAR_PackageFile_Generator_v1 - */ - function &getDefaultGenerator() - { - if (!class_exists('PEAR_PackageFile_Generator_v1')) { - require_once 'PEAR/PackageFile/Generator/v1.php'; - } - $a = &new PEAR_PackageFile_Generator_v1($this); - return $a; - } - - /** - * Get the contents of a file listed within the package.xml - * @param string - * @return string - */ - function getFileContents($file) - { - if ($this->_archiveFile == $this->_packageFile) { // unpacked - $dir = dirname($this->_packageFile); - $file = $dir . DIRECTORY_SEPARATOR . $file; - $file = str_replace(array('/', '\\'), - array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR), $file); - if (file_exists($file) && is_readable($file)) { - return implode('', file($file)); - } - } else { // tgz - if (!class_exists('Archive_Tar')) { - require_once 'Archive/Tar.php'; - } - $tar = &new Archive_Tar($this->_archiveFile); - $tar->pushErrorHandling(PEAR_ERROR_RETURN); - if ($file != 'package.xml' && $file != 'package2.xml') { - $file = $this->getPackage() . '-' . $this->getVersion() . '/' . $file; - } - $file = $tar->extractInString($file); - $tar->popErrorHandling(); - if (PEAR::isError($file)) { - return PEAR::raiseError("Cannot locate file '$file' in archive"); - } - return $file; - } - } - - // {{{ analyzeSourceCode() - /** - * Analyze the source code of the given PHP file - * - * @param string Filename of the PHP file - * @return mixed - * @access private - */ - function _analyzeSourceCode($file) - { - if (!function_exists("token_get_all")) { - return false; - } - if (!defined('T_DOC_COMMENT')) { - define('T_DOC_COMMENT', T_COMMENT); - } - if (!defined('T_INTERFACE')) { - define('T_INTERFACE', -1); - } - if (!defined('T_IMPLEMENTS')) { - define('T_IMPLEMENTS', -1); - } - if (!$fp = @fopen($file, "r")) { - return false; - } - fclose($fp); - $contents = file_get_contents($file); - $tokens = token_get_all($contents); -/* - for ($i = 0; $i < sizeof($tokens); $i++) { - @list($token, $data) = $tokens[$i]; - if (is_string($token)) { - var_dump($token); - } else { - print token_name($token) . ' '; - var_dump(rtrim($data)); - } - } -*/ - $look_for = 0; - $paren_level = 0; - $bracket_level = 0; - $brace_level = 0; - $lastphpdoc = ''; - $current_class = ''; - $current_interface = ''; - $current_class_level = -1; - $current_function = ''; - $current_function_level = -1; - $declared_classes = array(); - $declared_interfaces = array(); - $declared_functions = array(); - $declared_methods = array(); - $used_classes = array(); - $used_functions = array(); - $extends = array(); - $implements = array(); - $nodeps = array(); - $inquote = false; - $interface = false; - for ($i = 0; $i < sizeof($tokens); $i++) { - if (is_array($tokens[$i])) { - list($token, $data) = $tokens[$i]; - } else { - $token = $tokens[$i]; - $data = ''; - } - if ($inquote) { - if ($token != '"' && $token != T_END_HEREDOC) { - continue; - } else { - $inquote = false; - continue; - } - } - switch ($token) { - case T_WHITESPACE : - continue; - case ';': - if ($interface) { - $current_function = ''; - $current_function_level = -1; - } - break; - case '"': - case T_START_HEREDOC: - $inquote = true; - break; - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case '{': $brace_level++; continue 2; - case '}': - $brace_level--; - if ($current_class_level == $brace_level) { - $current_class = ''; - $current_class_level = -1; - } - if ($current_function_level == $brace_level) { - $current_function = ''; - $current_function_level = -1; - } - continue 2; - case '[': $bracket_level++; continue 2; - case ']': $bracket_level--; continue 2; - case '(': $paren_level++; continue 2; - case ')': $paren_level--; continue 2; - case T_INTERFACE: - $interface = true; - case T_CLASS: - if (($current_class_level != -1) || ($current_function_level != -1)) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_PHPFILE, - array('file' => $file)); - return false; - } - case T_FUNCTION: - case T_NEW: - case T_EXTENDS: - case T_IMPLEMENTS: - $look_for = $token; - continue 2; - case T_STRING: - if (version_compare(zend_version(), '2.0', '<')) { - if (in_array(strtolower($data), - array('public', 'private', 'protected', 'abstract', - 'interface', 'implements', 'throw') - )) { - $this->_validateWarning(PEAR_PACKAGEFILE_ERROR_PHP5, - array($file)); - } - } - if ($look_for == T_CLASS) { - $current_class = $data; - $current_class_level = $brace_level; - $declared_classes[] = $current_class; - } elseif ($look_for == T_INTERFACE) { - $current_interface = $data; - $current_class_level = $brace_level; - $declared_interfaces[] = $current_interface; - } elseif ($look_for == T_IMPLEMENTS) { - $implements[$current_class] = $data; - } elseif ($look_for == T_EXTENDS) { - $extends[$current_class] = $data; - } elseif ($look_for == T_FUNCTION) { - if ($current_class) { - $current_function = "$current_class::$data"; - $declared_methods[$current_class][] = $data; - } elseif ($current_interface) { - $current_function = "$current_interface::$data"; - $declared_methods[$current_interface][] = $data; - } else { - $current_function = $data; - $declared_functions[] = $current_function; - } - $current_function_level = $brace_level; - $m = array(); - } elseif ($look_for == T_NEW) { - $used_classes[$data] = true; - } - $look_for = 0; - continue 2; - case T_VARIABLE: - $look_for = 0; - continue 2; - case T_DOC_COMMENT: - case T_COMMENT: - if (preg_match('!^/\*\*\s!', $data)) { - $lastphpdoc = $data; - if (preg_match_all('/@nodep\s+(\S+)/', $lastphpdoc, $m)) { - $nodeps = array_merge($nodeps, $m[1]); - } - } - continue 2; - case T_DOUBLE_COLON: - if (!($tokens[$i - 1][0] == T_WHITESPACE || $tokens[$i - 1][0] == T_STRING)) { - $this->_validateError(PEAR_PACKAGEFILE_ERROR_INVALID_PHPFILE, - array('file' => $file)); - return false; - } - $class = $tokens[$i - 1][1]; - if (strtolower($class) != 'parent') { - $used_classes[$class] = true; - } - continue 2; - } - } - return array( - "source_file" => $file, - "declared_classes" => $declared_classes, - "declared_interfaces" => $declared_interfaces, - "declared_methods" => $declared_methods, - "declared_functions" => $declared_functions, - "used_classes" => array_diff(array_keys($used_classes), $nodeps), - "inheritance" => $extends, - "implements" => $implements, - ); - } - - /** - * Build a "provides" array from data returned by - * analyzeSourceCode(). The format of the built array is like - * this: - * - * array( - * 'class;MyClass' => 'array('type' => 'class', 'name' => 'MyClass'), - * ... - * ) - * - * - * @param array $srcinfo array with information about a source file - * as returned by the analyzeSourceCode() method. - * - * @return void - * - * @access private - * - */ - function _buildProvidesArray($srcinfo) - { - if (!$this->_isValid) { - return false; - } - $file = basename($srcinfo['source_file']); - $pn = $this->getPackage(); - $pnl = strlen($pn); - foreach ($srcinfo['declared_classes'] as $class) { - $key = "class;$class"; - if (isset($this->_packageInfo['provides'][$key])) { - continue; - } - $this->_packageInfo['provides'][$key] = - array('file'=> $file, 'type' => 'class', 'name' => $class); - if (isset($srcinfo['inheritance'][$class])) { - $this->_packageInfo['provides'][$key]['extends'] = - $srcinfo['inheritance'][$class]; - } - } - foreach ($srcinfo['declared_methods'] as $class => $methods) { - foreach ($methods as $method) { - $function = "$class::$method"; - $key = "function;$function"; - if ($method{0} == '_' || !strcasecmp($method, $class) || - isset($this->_packageInfo['provides'][$key])) { - continue; - } - $this->_packageInfo['provides'][$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - foreach ($srcinfo['declared_functions'] as $function) { - $key = "function;$function"; - if ($function{0} == '_' || isset($this->_packageInfo['provides'][$key])) { - continue; - } - if (!strstr($function, '::') && strncasecmp($function, $pn, $pnl)) { - $warnings[] = "in1 " . $file . ": function \"$function\" not prefixed with package name \"$pn\""; - } - $this->_packageInfo['provides'][$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - // }}} -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/PackageFile/v2.php b/src/vitis/vas/rest/class/PEAR/PackageFile/v2.php deleted file mode 100755 index 4638a77f13a1b04d22d8b6b92def70db0780c8d7..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PackageFile/v2.php +++ /dev/null @@ -1,2046 +0,0 @@ -<?php -/** - * PEAR_PackageFile_v2, package.xml version 2.0 - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: v2.php,v 1.143 2008/05/13 05:28:51 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * For error handling - */ -require_once 'PEAR/ErrorStack.php'; -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_PackageFile_v2 -{ - - /** - * Parsed package information - * @var array - * @access private - */ - var $_packageInfo = array(); - - /** - * path to package .tgz or false if this is a local/extracted package.xml - * @var string|false - * @access private - */ - var $_archiveFile; - - /** - * path to package .xml or false if this is an abstract parsed-from-string xml - * @var string|false - * @access private - */ - var $_packageFile; - - /** - * This is used by file analysis routines to log progress information - * @var PEAR_Common - * @access protected - */ - var $_logger; - - /** - * This is set to the highest validation level that has been validated - * - * If the package.xml is invalid or unknown, this is set to 0. If - * normal validation has occurred, this is set to PEAR_VALIDATE_NORMAL. If - * downloading/installation validation has occurred it is set to PEAR_VALIDATE_DOWNLOADING - * or INSTALLING, and so on up to PEAR_VALIDATE_PACKAGING. This allows validation - * "caching" to occur, which is particularly important for package validation, so - * that PHP files are not validated twice - * @var int - * @access private - */ - var $_isValid = 0; - - /** - * True if the filelist has been validated - * @param bool - */ - var $_filesValid = false; - - /** - * @var PEAR_Registry - * @access protected - */ - var $_registry; - - /** - * @var PEAR_Config - * @access protected - */ - var $_config; - - /** - * Optional Dependency group requested for installation - * @var string - * @access private - */ - var $_requestedGroup = false; - - /** - * @var PEAR_ErrorStack - * @access protected - */ - var $_stack; - - /** - * Namespace prefix used for tasks in this package.xml - use tasks: whenever possible - */ - var $_tasksNs; - - /** - * Determines whether this packagefile was initialized only with partial package info - * - * If this package file was constructed via parsing REST, it will only contain - * - * - package name - * - channel name - * - dependencies - * @var boolean - * @access private - */ - var $_incomplete = true; - - /** - * @var PEAR_PackageFile_v2_Validator - */ - var $_v2Validator; - - /** - * The constructor merely sets up the private error stack - */ - function PEAR_PackageFile_v2() - { - $this->_stack = new PEAR_ErrorStack('PEAR_PackageFile_v2', false, null); - $this->_isValid = false; - } - - /** - * To make unit-testing easier - * @param PEAR_Frontend_* - * @param array options - * @param PEAR_Config - * @return PEAR_Downloader - * @access protected - */ - function &getPEARDownloader(&$i, $o, &$c) - { - $z = &new PEAR_Downloader($i, $o, $c); - return $z; - } - - /** - * To make unit-testing easier - * @param PEAR_Config - * @param array options - * @param array package name as returned from {@link PEAR_Registry::parsePackageName()} - * @param int PEAR_VALIDATE_* constant - * @return PEAR_Dependency2 - * @access protected - */ - function &getPEARDependency2(&$c, $o, $p, $s = PEAR_VALIDATE_INSTALLING) - { - if (!class_exists('PEAR_Dependency2')) { - require_once 'PEAR/Dependency2.php'; - } - $z = &new PEAR_Dependency2($c, $o, $p, $s); - return $z; - } - - function getInstalledBinary() - { - return isset($this->_packageInfo['#binarypackage']) ? $this->_packageInfo['#binarypackage'] : - false; - } - - /** - * Installation of source package has failed, attempt to download and install the - * binary version of this package. - * @param PEAR_Installer - * @return array|false - */ - function installBinary(&$installer) - { - if (!OS_WINDOWS) { - $a = false; - return $a; - } - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $releasetype = $this->getPackageType() . 'release'; - if (!is_array($installer->getInstallPackages())) { - $a = false; - return $a; - } - foreach ($installer->getInstallPackages() as $p) { - if ($p->isExtension($this->_packageInfo['providesextension'])) { - if ($p->getPackageType() != 'extsrc' && $p->getPackageType() != 'zendextsrc') { - $a = false; - return $a; // the user probably downloaded it separately - } - } - } - if (isset($this->_packageInfo[$releasetype]['binarypackage'])) { - $installer->log(0, 'Attempting to download binary version of extension "' . - $this->_packageInfo['providesextension'] . '"'); - $params = $this->_packageInfo[$releasetype]['binarypackage']; - if (!is_array($params) || !isset($params[0])) { - $params = array($params); - } - if (isset($this->_packageInfo['channel'])) { - foreach ($params as $i => $param) { - $params[$i] = array('channel' => $this->_packageInfo['channel'], - 'package' => $param, 'version' => $this->getVersion()); - } - } - $dl = &$this->getPEARDownloader($installer->ui, $installer->getOptions(), - $installer->config); - $verbose = $dl->config->get('verbose'); - $dl->config->set('verbose', -1); - foreach ($params as $param) { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $ret = $dl->download(array($param)); - PEAR::popErrorHandling(); - if (is_array($ret) && count($ret)) { - break; - } - } - $dl->config->set('verbose', $verbose); - if (is_array($ret)) { - if (count($ret) == 1) { - $pf = $ret[0]->getPackageFile(); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $installer->install($ret[0]); - PEAR::popErrorHandling(); - if (is_array($err)) { - $this->_packageInfo['#binarypackage'] = $ret[0]->getPackage(); - // "install" self, so all dependencies will work transparently - $this->_registry->addPackage2($this); - $installer->log(0, 'Download and install of binary extension "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pf->getChannel(), - 'package' => $pf->getPackage()), true) . '" successful'); - $a = array($ret[0], $err); - return $a; - } - $installer->log(0, 'Download and install of binary extension "' . - $this->_registry->parsedPackageNameToString( - array('channel' => $pf->getChannel(), - 'package' => $pf->getPackage()), true) . '" failed'); - } - } - } - } - $a = false; - return $a; - } - - /** - * @return string|false Extension name - */ - function getProvidesExtension() - { - if (in_array($this->getPackageType(), - array('extsrc', 'extbin', 'zendextsrc', 'zendextbin'))) { - if (isset($this->_packageInfo['providesextension'])) { - return $this->_packageInfo['providesextension']; - } - } - return false; - } - - /** - * @param string Extension name - * @return bool - */ - function isExtension($extension) - { - if (in_array($this->getPackageType(), - array('extsrc', 'extbin', 'zendextsrc', 'zendextbin'))) { - return $this->_packageInfo['providesextension'] == $extension; - } - return false; - } - - /** - * Tests whether every part of the package.xml 1.0 is represented in - * this package.xml 2.0 - * @param PEAR_PackageFile_v1 - * @return bool - */ - function isEquivalent($pf1) - { - if (!$pf1) { - return true; - } - if ($this->getPackageType() == 'bundle') { - return false; - } - $this->_stack->getErrors(true); - if (!$pf1->validate(PEAR_VALIDATE_NORMAL)) { - return false; - } - $pass = true; - if ($pf1->getPackage() != $this->getPackage()) { - $this->_differentPackage($pf1->getPackage()); - $pass = false; - } - if ($pf1->getVersion() != $this->getVersion()) { - $this->_differentVersion($pf1->getVersion()); - $pass = false; - } - if (trim($pf1->getSummary()) != $this->getSummary()) { - $this->_differentSummary($pf1->getSummary()); - $pass = false; - } - if (preg_replace('/\s+/', '', $pf1->getDescription()) != - preg_replace('/\s+/', '', $this->getDescription())) { - $this->_differentDescription($pf1->getDescription()); - $pass = false; - } - if ($pf1->getState() != $this->getState()) { - $this->_differentState($pf1->getState()); - $pass = false; - } - if (!strstr(preg_replace('/\s+/', '', $this->getNotes()), - preg_replace('/\s+/', '', $pf1->getNotes()))) { - $this->_differentNotes($pf1->getNotes()); - $pass = false; - } - $mymaintainers = $this->getMaintainers(); - $yourmaintainers = $pf1->getMaintainers(); - for ($i1 = 0; $i1 < count($yourmaintainers); $i1++) { - $reset = false; - for ($i2 = 0; $i2 < count($mymaintainers); $i2++) { - if ($mymaintainers[$i2]['handle'] == $yourmaintainers[$i1]['handle']) { - if ($mymaintainers[$i2]['role'] != $yourmaintainers[$i1]['role']) { - $this->_differentRole($mymaintainers[$i2]['handle'], - $yourmaintainers[$i1]['role'], $mymaintainers[$i2]['role']); - $pass = false; - } - if ($mymaintainers[$i2]['email'] != $yourmaintainers[$i1]['email']) { - $this->_differentEmail($mymaintainers[$i2]['handle'], - $yourmaintainers[$i1]['email'], $mymaintainers[$i2]['email']); - $pass = false; - } - if ($mymaintainers[$i2]['name'] != $yourmaintainers[$i1]['name']) { - $this->_differentName($mymaintainers[$i2]['handle'], - $yourmaintainers[$i1]['name'], $mymaintainers[$i2]['name']); - $pass = false; - } - unset($mymaintainers[$i2]); - $mymaintainers = array_values($mymaintainers); - unset($yourmaintainers[$i1]); - $yourmaintainers = array_values($yourmaintainers); - $reset = true; - break; - } - } - if ($reset) { - $i1 = -1; - } - } - $this->_unmatchedMaintainers($mymaintainers, $yourmaintainers); - $filelist = $this->getFilelist(); - foreach ($pf1->getFilelist() as $file => $atts) { - if (!isset($filelist[$file])) { - $this->_missingFile($file); - $pass = false; - } - } - return $pass; - } - - function _differentPackage($package) - { - $this->_stack->push(__FUNCTION__, 'error', array('package' => $package, - 'self' => $this->getPackage()), - 'package.xml 1.0 package "%package%" does not match "%self%"'); - } - - function _differentVersion($version) - { - $this->_stack->push(__FUNCTION__, 'error', array('version' => $version, - 'self' => $this->getVersion()), - 'package.xml 1.0 version "%version%" does not match "%self%"'); - } - - function _differentState($state) - { - $this->_stack->push(__FUNCTION__, 'error', array('state' => $state, - 'self' => $this->getState()), - 'package.xml 1.0 state "%state%" does not match "%self%"'); - } - - function _differentRole($handle, $role, $selfrole) - { - $this->_stack->push(__FUNCTION__, 'error', array('handle' => $handle, - 'role' => $role, 'self' => $selfrole), - 'package.xml 1.0 maintainer "%handle%" role "%role%" does not match "%self%"'); - } - - function _differentEmail($handle, $email, $selfemail) - { - $this->_stack->push(__FUNCTION__, 'error', array('handle' => $handle, - 'email' => $email, 'self' => $selfemail), - 'package.xml 1.0 maintainer "%handle%" email "%email%" does not match "%self%"'); - } - - function _differentName($handle, $name, $selfname) - { - $this->_stack->push(__FUNCTION__, 'error', array('handle' => $handle, - 'name' => $name, 'self' => $selfname), - 'package.xml 1.0 maintainer "%handle%" name "%name%" does not match "%self%"'); - } - - function _unmatchedMaintainers($my, $yours) - { - if ($my) { - array_walk($my, create_function('&$i, $k', '$i = $i["handle"];')); - $this->_stack->push(__FUNCTION__, 'error', array('handles' => $my), - 'package.xml 2.0 has unmatched extra maintainers "%handles%"'); - } - if ($yours) { - array_walk($yours, create_function('&$i, $k', '$i = $i["handle"];')); - $this->_stack->push(__FUNCTION__, 'error', array('handles' => $yours), - 'package.xml 1.0 has unmatched extra maintainers "%handles%"'); - } - } - - function _differentNotes($notes) - { - $truncnotes = strlen($notes) < 25 ? $notes : substr($notes, 0, 24) . '...'; - $truncmynotes = strlen($this->getNotes()) < 25 ? $this->getNotes() : - substr($this->getNotes(), 0, 24) . '...'; - $this->_stack->push(__FUNCTION__, 'error', array('notes' => $truncnotes, - 'self' => $truncmynotes), - 'package.xml 1.0 release notes "%notes%" do not match "%self%"'); - } - - function _differentSummary($summary) - { - $truncsummary = strlen($summary) < 25 ? $summary : substr($summary, 0, 24) . '...'; - $truncmysummary = strlen($this->getsummary()) < 25 ? $this->getSummary() : - substr($this->getsummary(), 0, 24) . '...'; - $this->_stack->push(__FUNCTION__, 'error', array('summary' => $truncsummary, - 'self' => $truncmysummary), - 'package.xml 1.0 summary "%summary%" does not match "%self%"'); - } - - function _differentDescription($description) - { - $truncdescription = trim(strlen($description) < 25 ? $description : substr($description, 0, 24) . '...'); - $truncmydescription = trim(strlen($this->getDescription()) < 25 ? $this->getDescription() : - substr($this->getdescription(), 0, 24) . '...'); - $this->_stack->push(__FUNCTION__, 'error', array('description' => $truncdescription, - 'self' => $truncmydescription), - 'package.xml 1.0 description "%description%" does not match "%self%"'); - } - - function _missingFile($file) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'package.xml 1.0 file "%file%" is not present in <contents>'); - } - - /** - * WARNING - do not use this function unless you know what you're doing - */ - function setRawState($state) - { - if (!isset($this->_packageInfo['stability'])) { - $this->_packageInfo['stability'] = array(); - } - $this->_packageInfo['stability']['release'] = $state; - } - - /** - * WARNING - do not use this function unless you know what you're doing - */ - function setRawCompatible($compatible) - { - $this->_packageInfo['compatible'] = $compatible; - } - - /** - * WARNING - do not use this function unless you know what you're doing - */ - function setRawPackage($package) - { - $this->_packageInfo['name'] = $package; - } - - /** - * WARNING - do not use this function unless you know what you're doing - */ - function setRawChannel($channel) - { - $this->_packageInfo['channel'] = $channel; - } - - function setRequestedGroup($group) - { - $this->_requestedGroup = $group; - } - - function getRequestedGroup() - { - if (isset($this->_requestedGroup)) { - return $this->_requestedGroup; - } - return false; - } - - /** - * For saving in the registry. - * - * Set the last version that was installed - * @param string - */ - function setLastInstalledVersion($version) - { - $this->_packageInfo['_lastversion'] = $version; - } - - /** - * @return string|false - */ - function getLastInstalledVersion() - { - if (isset($this->_packageInfo['_lastversion'])) { - return $this->_packageInfo['_lastversion']; - } - return false; - } - - /** - * Determines whether this package.xml has post-install scripts or not - * @return array|false - */ - function listPostinstallScripts() - { - $filelist = $this->getFilelist(); - $contents = $this->getContents(); - $contents = $contents['dir']['file']; - if (!is_array($contents) || !isset($contents[0])) { - $contents = array($contents); - } - $taskfiles = array(); - foreach ($contents as $file) { - $atts = $file['attribs']; - unset($file['attribs']); - if (count($file)) { - $taskfiles[$atts['name']] = $file; - } - } - $common = new PEAR_Common; - $common->debug = $this->_config->get('verbose'); - $this->_scripts = array(); - $ret = array(); - foreach ($taskfiles as $name => $tasks) { - if (!isset($filelist[$name])) { - // ignored files will not be in the filelist - continue; - } - $atts = $filelist[$name]; - foreach ($tasks as $tag => $raw) { - $task = $this->getTask($tag); - $task = &new $task($this->_config, $common, PEAR_TASK_INSTALL); - if ($task->isScript()) { - $ret[] = $filelist[$name]['installed_as']; - } - } - } - if (count($ret)) { - return $ret; - } - return false; - } - - /** - * Initialize post-install scripts for running - * - * This method can be used to detect post-install scripts, as the return value - * indicates whether any exist - * @return bool - */ - function initPostinstallScripts() - { - $filelist = $this->getFilelist(); - $contents = $this->getContents(); - $contents = $contents['dir']['file']; - if (!is_array($contents) || !isset($contents[0])) { - $contents = array($contents); - } - $taskfiles = array(); - foreach ($contents as $file) { - $atts = $file['attribs']; - unset($file['attribs']); - if (count($file)) { - $taskfiles[$atts['name']] = $file; - } - } - $common = new PEAR_Common; - $common->debug = $this->_config->get('verbose'); - $this->_scripts = array(); - foreach ($taskfiles as $name => $tasks) { - if (!isset($filelist[$name])) { - // file was not installed due to installconditions - continue; - } - $atts = $filelist[$name]; - foreach ($tasks as $tag => $raw) { - $taskname = $this->getTask($tag); - $task = &new $taskname($this->_config, $common, PEAR_TASK_INSTALL); - if (!$task->isScript()) { - continue; // scripts are only handled after installation - } - $lastversion = isset($this->_packageInfo['_lastversion']) ? - $this->_packageInfo['_lastversion'] : null; - $task->init($raw, $atts, $lastversion); - $res = $task->startSession($this, $atts['installed_as']); - if (!$res) { - continue; // skip this file - } - if (PEAR::isError($res)) { - return $res; - } - $assign = &$task; - $this->_scripts[] = &$assign; - } - } - if (count($this->_scripts)) { - return true; - } - return false; - } - - function runPostinstallScripts() - { - if ($this->initPostinstallScripts()) { - $ui = &PEAR_Frontend::singleton(); - if ($ui) { - $ui->runPostinstallScripts($this->_scripts, $this); - } - } - } - - - /** - * Convert a recursive set of <dir> and <file> tags into a single <dir> tag with - * <file> tags. - */ - function flattenFilelist() - { - if (isset($this->_packageInfo['bundle'])) { - return; - } - $filelist = array(); - if (isset($this->_packageInfo['contents']['dir']['dir'])) { - $this->_getFlattenedFilelist($filelist, $this->_packageInfo['contents']['dir']); - if (!isset($filelist[1])) { - $filelist = $filelist[0]; - } - $this->_packageInfo['contents']['dir']['file'] = $filelist; - unset($this->_packageInfo['contents']['dir']['dir']); - } else { - // else already flattened but check for baseinstalldir propagation - if (isset($this->_packageInfo['contents']['dir']['attribs']['baseinstalldir'])) { - if (isset($this->_packageInfo['contents']['dir']['file'][0])) { - foreach ($this->_packageInfo['contents']['dir']['file'] as $i => $file) { - if (isset($file['attribs']['baseinstalldir'])) { - continue; - } - $this->_packageInfo['contents']['dir']['file'][$i]['attribs']['baseinstalldir'] - = $this->_packageInfo['contents']['dir']['attribs']['baseinstalldir']; - } - } else { - if (!isset($this->_packageInfo['contents']['dir']['file']['attribs']['baseinstalldir'])) { - $this->_packageInfo['contents']['dir']['file']['attribs']['baseinstalldir'] - = $this->_packageInfo['contents']['dir']['attribs']['baseinstalldir']; - } - } - } - } - } - - /** - * @param array the final flattened file list - * @param array the current directory being processed - * @param string|false any recursively inherited baeinstalldir attribute - * @param string private recursion variable - * @return array - * @access protected - */ - function _getFlattenedFilelist(&$files, $dir, $baseinstall = false, $path = '') - { - if (isset($dir['attribs']) && isset($dir['attribs']['baseinstalldir'])) { - $baseinstall = $dir['attribs']['baseinstalldir']; - } - if (isset($dir['dir'])) { - if (!isset($dir['dir'][0])) { - $dir['dir'] = array($dir['dir']); - } - foreach ($dir['dir'] as $subdir) { - if (!isset($subdir['attribs']) || !isset($subdir['attribs']['name'])) { - $name = '*unknown*'; - } else { - $name = $subdir['attribs']['name']; - } - $newpath = empty($path) ? $name : - $path . '/' . $name; - $this->_getFlattenedFilelist($files, $subdir, - $baseinstall, $newpath); - } - } - if (isset($dir['file'])) { - if (!isset($dir['file'][0])) { - $dir['file'] = array($dir['file']); - } - foreach ($dir['file'] as $file) { - $attrs = $file['attribs']; - $name = $attrs['name']; - if ($baseinstall && !isset($attrs['baseinstalldir'])) { - $attrs['baseinstalldir'] = $baseinstall; - } - $attrs['name'] = empty($path) ? $name : $path . '/' . $name; - $attrs['name'] = preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), - $attrs['name']); - $file['attribs'] = $attrs; - $files[] = $file; - } - } - } - - function setConfig(&$config) - { - $this->_config = &$config; - $this->_registry = &$config->getRegistry(); - } - - function setLogger(&$logger) - { - if (!is_object($logger) || !method_exists($logger, 'log')) { - return PEAR::raiseError('Logger must be compatible with PEAR_Common::log'); - } - $this->_logger = &$logger; - } - - /** - * WARNING - do not use this function directly unless you know what you're doing - */ - function setDeps($deps) - { - $this->_packageInfo['dependencies'] = $deps; - } - - /** - * WARNING - do not use this function directly unless you know what you're doing - */ - function setCompatible($compat) - { - $this->_packageInfo['compatible'] = $compat; - } - - function setPackagefile($file, $archive = false) - { - $this->_packageFile = $file; - $this->_archiveFile = $archive ? $archive : $file; - } - - /** - * Wrapper to {@link PEAR_ErrorStack::getErrors()} - * @param boolean determines whether to purge the error stack after retrieving - * @return array - */ - function getValidationWarnings($purge = true) - { - return $this->_stack->getErrors($purge); - } - - function getPackageFile() - { - return $this->_packageFile; - } - - function getArchiveFile() - { - return $this->_archiveFile; - } - - - /** - * Directly set the array that defines this packagefile - * - * WARNING: no validation. This should only be performed by internal methods - * inside PEAR or by inputting an array saved from an existing PEAR_PackageFile_v2 - * @param array - */ - function fromArray($pinfo) - { - unset($pinfo['old']); - unset($pinfo['xsdversion']); - $this->_incomplete = false; - $this->_packageInfo = $pinfo; - } - - function isIncomplete() - { - return $this->_incomplete; - } - - /** - * @return array - */ - function toArray($forreg = false) - { - if (!$this->validate(PEAR_VALIDATE_NORMAL)) { - return false; - } - return $this->getArray($forreg); - } - - function getArray($forReg = false) - { - if ($forReg) { - $arr = $this->_packageInfo; - $arr['old'] = array(); - $arr['old']['version'] = $this->getVersion(); - $arr['old']['release_date'] = $this->getDate(); - $arr['old']['release_state'] = $this->getState(); - $arr['old']['release_license'] = $this->getLicense(); - $arr['old']['release_notes'] = $this->getNotes(); - $arr['old']['release_deps'] = $this->getDeps(); - $arr['old']['maintainers'] = $this->getMaintainers(); - $arr['xsdversion'] = '2.0'; - return $arr; - } else { - $info = $this->_packageInfo; - unset($info['dirtree']); - if (isset($info['_lastversion'])) { - unset($info['_lastversion']); - } - if (isset($info['#binarypackage'])) { - unset($info['#binarypackage']); - } - return $info; - } - } - - function packageInfo($field) - { - $arr = $this->getArray(true); - if ($field == 'state') { - return $arr['stability']['release']; - } - if ($field == 'api-version') { - return $arr['version']['api']; - } - if ($field == 'api-state') { - return $arr['stability']['api']; - } - if (isset($arr['old'][$field])) { - if (!is_string($arr['old'][$field])) { - return null; - } - return $arr['old'][$field]; - } - if (isset($arr[$field])) { - if (!is_string($arr[$field])) { - return null; - } - return $arr[$field]; - } - return null; - } - - function getName() - { - return $this->getPackage(); - } - - function getPackage() - { - if (isset($this->_packageInfo['name'])) { - return $this->_packageInfo['name']; - } - return false; - } - - function getChannel() - { - if (isset($this->_packageInfo['uri'])) { - return '__uri'; - } - if (isset($this->_packageInfo['channel'])) { - return strtolower($this->_packageInfo['channel']); - } - return false; - } - - function getUri() - { - if (isset($this->_packageInfo['uri'])) { - return $this->_packageInfo['uri']; - } - return false; - } - - function getExtends() - { - if (isset($this->_packageInfo['extends'])) { - return $this->_packageInfo['extends']; - } - return false; - } - - function getSummary() - { - if (isset($this->_packageInfo['summary'])) { - return $this->_packageInfo['summary']; - } - return false; - } - - function getDescription() - { - if (isset($this->_packageInfo['description'])) { - return $this->_packageInfo['description']; - } - return false; - } - - function getMaintainers($raw = false) - { - if (!isset($this->_packageInfo['lead'])) { - return false; - } - if ($raw) { - $ret = array('lead' => $this->_packageInfo['lead']); - (isset($this->_packageInfo['developer'])) ? - $ret['developer'] = $this->_packageInfo['developer'] :null; - (isset($this->_packageInfo['contributor'])) ? - $ret['contributor'] = $this->_packageInfo['contributor'] :null; - (isset($this->_packageInfo['helper'])) ? - $ret['helper'] = $this->_packageInfo['helper'] :null; - return $ret; - } else { - $ret = array(); - $leads = isset($this->_packageInfo['lead'][0]) ? $this->_packageInfo['lead'] : - array($this->_packageInfo['lead']); - foreach ($leads as $lead) { - $s = $lead; - $s['handle'] = $s['user']; - unset($s['user']); - $s['role'] = 'lead'; - $ret[] = $s; - } - if (isset($this->_packageInfo['developer'])) { - $leads = isset($this->_packageInfo['developer'][0]) ? - $this->_packageInfo['developer'] : - array($this->_packageInfo['developer']); - foreach ($leads as $maintainer) { - $s = $maintainer; - $s['handle'] = $s['user']; - unset($s['user']); - $s['role'] = 'developer'; - $ret[] = $s; - } - } - if (isset($this->_packageInfo['contributor'])) { - $leads = isset($this->_packageInfo['contributor'][0]) ? - $this->_packageInfo['contributor'] : - array($this->_packageInfo['contributor']); - foreach ($leads as $maintainer) { - $s = $maintainer; - $s['handle'] = $s['user']; - unset($s['user']); - $s['role'] = 'contributor'; - $ret[] = $s; - } - } - if (isset($this->_packageInfo['helper'])) { - $leads = isset($this->_packageInfo['helper'][0]) ? - $this->_packageInfo['helper'] : - array($this->_packageInfo['helper']); - foreach ($leads as $maintainer) { - $s = $maintainer; - $s['handle'] = $s['user']; - unset($s['user']); - $s['role'] = 'helper'; - $ret[] = $s; - } - } - return $ret; - } - return false; - } - - function getLeads() - { - if (isset($this->_packageInfo['lead'])) { - return $this->_packageInfo['lead']; - } - return false; - } - - function getDevelopers() - { - if (isset($this->_packageInfo['developer'])) { - return $this->_packageInfo['developer']; - } - return false; - } - - function getContributors() - { - if (isset($this->_packageInfo['contributor'])) { - return $this->_packageInfo['contributor']; - } - return false; - } - - function getHelpers() - { - if (isset($this->_packageInfo['helper'])) { - return $this->_packageInfo['helper']; - } - return false; - } - - function setDate($date) - { - if (!isset($this->_packageInfo['date'])) { - // ensure that the extends tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', - 'zendextbinrelease', 'bundle', 'changelog'), array(), 'date'); - } - $this->_packageInfo['date'] = $date; - $this->_isValid = 0; - } - - function setTime($time) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['time'])) { - // ensure that the time tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', - 'zendextbinrelease', 'bundle', 'changelog'), $time, 'time'); - } - $this->_packageInfo['time'] = $time; - } - - function getDate() - { - if (isset($this->_packageInfo['date'])) { - return $this->_packageInfo['date']; - } - return false; - } - - function getTime() - { - if (isset($this->_packageInfo['time'])) { - return $this->_packageInfo['time']; - } - return false; - } - - /** - * @param package|api version category to return - */ - function getVersion($key = 'release') - { - if (isset($this->_packageInfo['version'][$key])) { - return $this->_packageInfo['version'][$key]; - } - return false; - } - - function getStability() - { - if (isset($this->_packageInfo['stability'])) { - return $this->_packageInfo['stability']; - } - return false; - } - - function getState($key = 'release') - { - if (isset($this->_packageInfo['stability'][$key])) { - return $this->_packageInfo['stability'][$key]; - } - return false; - } - - function getLicense($raw = false) - { - if (isset($this->_packageInfo['license'])) { - if ($raw) { - return $this->_packageInfo['license']; - } - if (is_array($this->_packageInfo['license'])) { - return $this->_packageInfo['license']['_content']; - } else { - return $this->_packageInfo['license']; - } - } - return false; - } - - function getLicenseLocation() - { - if (!isset($this->_packageInfo['license']) || !is_array($this->_packageInfo['license'])) { - return false; - } - return $this->_packageInfo['license']['attribs']; - } - - function getNotes() - { - if (isset($this->_packageInfo['notes'])) { - return $this->_packageInfo['notes']; - } - return false; - } - - /** - * Return the <usesrole> tag contents, if any - * @return array|false - */ - function getUsesrole() - { - if (isset($this->_packageInfo['usesrole'])) { - return $this->_packageInfo['usesrole']; - } - return false; - } - - /** - * Return the <usestask> tag contents, if any - * @return array|false - */ - function getUsestask() - { - if (isset($this->_packageInfo['usestask'])) { - return $this->_packageInfo['usestask']; - } - return false; - } - - /** - * This should only be used to retrieve filenames and install attributes - */ - function getFilelist($preserve = false) - { - if (isset($this->_packageInfo['filelist']) && !$preserve) { - return $this->_packageInfo['filelist']; - } - $this->flattenFilelist(); - if ($contents = $this->getContents()) { - $ret = array(); - if (!isset($contents['dir'])) { - return false; - } - if (!isset($contents['dir']['file'][0])) { - $contents['dir']['file'] = array($contents['dir']['file']); - } - foreach ($contents['dir']['file'] as $file) { - $name = $file['attribs']['name']; - if (!$preserve) { - $file = $file['attribs']; - } - $ret[$name] = $file; - } - if (!$preserve) { - $this->_packageInfo['filelist'] = $ret; - } - return $ret; - } - return false; - } - - /** - * Return configure options array, if any - * - * @return array|false - */ - function getConfigureOptions() - { - if ($this->getPackageType() != 'extsrc' && $this->getPackageType() != 'zendextsrc') { - return false; - } - $releases = $this->getReleases(); - if (isset($releases[0])) { - $releases = $releases[0]; - } - if (isset($releases['configureoption'])) { - if (!isset($releases['configureoption'][0])) { - $releases['configureoption'] = array($releases['configureoption']); - } - for ($i = 0; $i < count($releases['configureoption']); $i++) { - $releases['configureoption'][$i] = $releases['configureoption'][$i]['attribs']; - } - return $releases['configureoption']; - } - return false; - } - - /** - * This is only used at install-time, after all serialization - * is over. - */ - function resetFilelist() - { - $this->_packageInfo['filelist'] = array(); - } - - /** - * Retrieve a list of files that should be installed on this computer - * @return array - */ - function getInstallationFilelist($forfilecheck = false) - { - $contents = $this->getFilelist(true); - if (isset($contents['dir']['attribs']['baseinstalldir'])) { - $base = $contents['dir']['attribs']['baseinstalldir']; - } - if (isset($this->_packageInfo['bundle'])) { - return PEAR::raiseError( - 'Exception: bundles should be handled in download code only'); - } - $release = $this->getReleases(); - if ($release) { - if (!isset($release[0])) { - if (!isset($release['installconditions']) && !isset($release['filelist'])) { - if ($forfilecheck) { - return $this->getFilelist(); - } - return $contents; - } - $release = array($release); - } - $depchecker = &$this->getPEARDependency2($this->_config, array(), - array('channel' => $this->getChannel(), 'package' => $this->getPackage()), - PEAR_VALIDATE_INSTALLING); - foreach ($release as $instance) { - if (isset($instance['installconditions'])) { - $installconditions = $instance['installconditions']; - if (is_array($installconditions)) { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - foreach ($installconditions as $type => $conditions) { - if (!isset($conditions[0])) { - $conditions = array($conditions); - } - foreach ($conditions as $condition) { - $ret = $depchecker->{"validate{$type}Dependency"}($condition); - if (PEAR::isError($ret)) { - PEAR::popErrorHandling(); - continue 3; // skip this release - } - } - } - PEAR::popErrorHandling(); - } - } - // this is the release to use - if (isset($instance['filelist'])) { - // ignore files - if (isset($instance['filelist']['ignore'])) { - $ignore = isset($instance['filelist']['ignore'][0]) ? - $instance['filelist']['ignore'] : - array($instance['filelist']['ignore']); - foreach ($ignore as $ig) { - unset ($contents[$ig['attribs']['name']]); - } - } - // install files as this name - if (isset($instance['filelist']['install'])) { - $installas = isset($instance['filelist']['install'][0]) ? - $instance['filelist']['install'] : - array($instance['filelist']['install']); - foreach ($installas as $as) { - $contents[$as['attribs']['name']]['attribs']['install-as'] = - $as['attribs']['as']; - } - } - } - if ($forfilecheck) { - foreach ($contents as $file => $attrs) { - $contents[$file] = $attrs['attribs']; - } - } - return $contents; - } - } else { // simple release - no installconditions or install-as - if ($forfilecheck) { - return $this->getFilelist(); - } - return $contents; - } - // no releases matched - return PEAR::raiseError('No releases in package.xml matched the existing operating ' . - 'system, extensions installed, or architecture, cannot install'); - } - - /** - * This is only used at install-time, after all serialization - * is over. - * @param string file name - * @param string installed path - */ - function setInstalledAs($file, $path) - { - if ($path) { - return $this->_packageInfo['filelist'][$file]['installed_as'] = $path; - } - unset($this->_packageInfo['filelist'][$file]['installed_as']); - } - - function getInstalledLocation($file) - { - if (isset($this->_packageInfo['filelist'][$file]['installed_as'])) { - return $this->_packageInfo['filelist'][$file]['installed_as']; - } - return false; - } - - /** - * This is only used at install-time, after all serialization - * is over. - */ - function installedFile($file, $atts) - { - if (isset($this->_packageInfo['filelist'][$file])) { - $this->_packageInfo['filelist'][$file] = - array_merge($this->_packageInfo['filelist'][$file], $atts['attribs']); - } else { - $this->_packageInfo['filelist'][$file] = $atts['attribs']; - } - } - - /** - * Retrieve the contents tag - */ - function getContents() - { - if (isset($this->_packageInfo['contents'])) { - return $this->_packageInfo['contents']; - } - return false; - } - - /** - * @param string full path to file - * @param string attribute name - * @param string attribute value - * @param int risky but fast - use this to choose a file based on its position in the list - * of files. Index is zero-based like PHP arrays. - * @return bool success of operation - */ - function setFileAttribute($filename, $attr, $value, $index = false) - { - $this->_isValid = 0; - if (in_array($attr, array('role', 'name', 'baseinstalldir'))) { - $this->_filesValid = false; - } - if ($index !== false && - isset($this->_packageInfo['contents']['dir']['file'][$index]['attribs'])) { - $this->_packageInfo['contents']['dir']['file'][$index]['attribs'][$attr] = $value; - return true; - } - if (!isset($this->_packageInfo['contents']['dir']['file'])) { - return false; - } - $files = $this->_packageInfo['contents']['dir']['file']; - if (!isset($files[0])) { - $files = array($files); - $ind = false; - } else { - $ind = true; - } - foreach ($files as $i => $file) { - if (isset($file['attribs'])) { - if ($file['attribs']['name'] == $filename) { - if ($ind) { - $this->_packageInfo['contents']['dir']['file'][$i]['attribs'][$attr] = $value; - } else { - $this->_packageInfo['contents']['dir']['file']['attribs'][$attr] = $value; - } - return true; - } - } - } - return false; - } - - function setDirtree($path) - { - if (!isset($this->_packageInfo['dirtree'])) { - $this->_packageInfo['dirtree'] = array(); - } - $this->_packageInfo['dirtree'][$path] = true; - } - - function getDirtree() - { - if (isset($this->_packageInfo['dirtree']) && count($this->_packageInfo['dirtree'])) { - return $this->_packageInfo['dirtree']; - } - return false; - } - - function resetDirtree() - { - unset($this->_packageInfo['dirtree']); - } - - /** - * Determines whether this package claims it is compatible with the version of - * the package that has a recommended version dependency - * @param PEAR_PackageFile_v2|PEAR_PackageFile_v1|PEAR_Downloader_Package - * @return boolean - */ - function isCompatible($pf) - { - if (!isset($this->_packageInfo['compatible'])) { - return false; - } - if (!isset($this->_packageInfo['channel'])) { - return false; - } - $me = $pf->getVersion(); - $compatible = $this->_packageInfo['compatible']; - if (!isset($compatible[0])) { - $compatible = array($compatible); - } - $found = false; - foreach ($compatible as $info) { - if (strtolower($info['name']) == strtolower($pf->getPackage())) { - if (strtolower($info['channel']) == strtolower($pf->getChannel())) { - $found = true; - break; - } - } - } - if (!$found) { - return false; - } - if (isset($info['exclude'])) { - if (!isset($info['exclude'][0])) { - $info['exclude'] = array($info['exclude']); - } - foreach ($info['exclude'] as $exclude) { - if (version_compare($me, $exclude, '==')) { - return false; - } - } - } - if (version_compare($me, $info['min'], '>=') && version_compare($me, $info['max'], '<=')) { - return true; - } - return false; - } - - /** - * @return array|false - */ - function getCompatible() - { - if (isset($this->_packageInfo['compatible'])) { - return $this->_packageInfo['compatible']; - } - return false; - } - - function getDependencies() - { - if (isset($this->_packageInfo['dependencies'])) { - return $this->_packageInfo['dependencies']; - } - return false; - } - - function isSubpackageOf($p) - { - return $p->isSubpackage($this); - } - - /** - * Determines whether the passed in package is a subpackage of this package. - * - * No version checking is done, only name verification. - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @return bool - */ - function isSubpackage($p) - { - $sub = array(); - if (isset($this->_packageInfo['dependencies']['required']['subpackage'])) { - $sub = $this->_packageInfo['dependencies']['required']['subpackage']; - if (!isset($sub[0])) { - $sub = array($sub); - } - } - if (isset($this->_packageInfo['dependencies']['optional']['subpackage'])) { - $sub1 = $this->_packageInfo['dependencies']['optional']['subpackage']; - if (!isset($sub1[0])) { - $sub1 = array($sub1); - } - $sub = array_merge($sub, $sub1); - } - if (isset($this->_packageInfo['dependencies']['group'])) { - $group = $this->_packageInfo['dependencies']['group']; - if (!isset($group[0])) { - $group = array($group); - } - foreach ($group as $deps) { - if (isset($deps['subpackage'])) { - $sub2 = $deps['subpackage']; - if (!isset($sub2[0])) { - $sub2 = array($sub2); - } - $sub = array_merge($sub, $sub2); - } - } - } - foreach ($sub as $dep) { - if (strtolower($dep['name']) == strtolower($p->getPackage())) { - if (isset($dep['channel'])) { - if (strtolower($dep['channel']) == strtolower($p->getChannel())) { - return true; - } - } else { - if ($dep['uri'] == $p->getURI()) { - return true; - } - } - } - } - return false; - } - - function dependsOn($package, $channel) - { - if (!($deps = $this->getDependencies())) { - return false; - } - foreach (array('package', 'subpackage') as $type) { - foreach (array('required', 'optional') as $needed) { - if (isset($deps[$needed][$type])) { - if (!isset($deps[$needed][$type][0])) { - $deps[$needed][$type] = array($deps[$needed][$type]); - } - foreach ($deps[$needed][$type] as $dep) { - $depchannel = isset($dep['channel']) ? $dep['channel'] : '__uri'; - if (strtolower($dep['name']) == strtolower($package) && - $depchannel == $channel) { - return true; - } - } - } - } - if (isset($deps['group'])) { - if (!isset($deps['group'][0])) { - $dep['group'] = array($deps['group']); - } - foreach ($deps['group'] as $group) { - if (isset($group[$type])) { - if (!is_array($group[$type])) { - $group[$type] = array($group[$type]); - } - foreach ($group[$type] as $dep) { - $depchannel = isset($dep['channel']) ? $dep['channel'] : '__uri'; - if (strtolower($dep['name']) == strtolower($package) && - $depchannel == $channel) { - return true; - } - } - } - } - } - } - return false; - } - - /** - * Get the contents of a dependency group - * @param string - * @return array|false - */ - function getDependencyGroup($name) - { - $name = strtolower($name); - if (!isset($this->_packageInfo['dependencies']['group'])) { - return false; - } - $groups = $this->_packageInfo['dependencies']['group']; - if (!isset($groups[0])) { - $groups = array($groups); - } - foreach ($groups as $group) { - if (strtolower($group['attribs']['name']) == $name) { - return $group; - } - } - return false; - } - - /** - * Retrieve a partial package.xml 1.0 representation of dependencies - * - * a very limited representation of dependencies is returned by this method. - * The <exclude> tag for excluding certain versions of a dependency is - * completely ignored. In addition, dependency groups are ignored, with the - * assumption that all dependencies in dependency groups are also listed in - * the optional group that work with all dependency groups - * @param boolean return package.xml 2.0 <dependencies> tag - * @return array|false - */ - function getDeps($raw = false, $nopearinstaller = false) - { - if (isset($this->_packageInfo['dependencies'])) { - if ($raw) { - return $this->_packageInfo['dependencies']; - } - $ret = array(); - $map = array( - 'php' => 'php', - 'package' => 'pkg', - 'subpackage' => 'pkg', - 'extension' => 'ext', - 'os' => 'os', - 'pearinstaller' => 'pkg', - ); - foreach (array('required', 'optional') as $type) { - $optional = ($type == 'optional') ? 'yes' : 'no'; - if (!isset($this->_packageInfo['dependencies'][$type]) - || empty($this->_packageInfo['dependencies'][$type])) { - continue; - } - foreach ($this->_packageInfo['dependencies'][$type] as $dtype => $deps) { - if ($dtype == 'pearinstaller' && $nopearinstaller) { - continue; - } - if (!isset($deps[0])) { - $deps = array($deps); - } - foreach ($deps as $dep) { - if (!isset($map[$dtype])) { - // no support for arch type - continue; - } - if ($dtype == 'pearinstaller') { - $dep['name'] = 'PEAR'; - $dep['channel'] = 'pear.php.net'; - } - $s = array('type' => $map[$dtype]); - if (isset($dep['channel'])) { - $s['channel'] = $dep['channel']; - } - if (isset($dep['uri'])) { - $s['uri'] = $dep['uri']; - } - if (isset($dep['name'])) { - $s['name'] = $dep['name']; - } - if (isset($dep['conflicts'])) { - $s['rel'] = 'not'; - } else { - if (!isset($dep['min']) && - !isset($dep['max'])) { - $s['rel'] = 'has'; - $s['optional'] = $optional; - } elseif (isset($dep['min']) && - isset($dep['max'])) { - $s['rel'] = 'ge'; - $s1 = $s; - $s1['rel'] = 'le'; - $s['version'] = $dep['min']; - $s1['version'] = $dep['max']; - if (isset($dep['channel'])) { - $s1['channel'] = $dep['channel']; - } - if ($dtype != 'php') { - $s['name'] = $dep['name']; - $s1['name'] = $dep['name']; - } - $s['optional'] = $optional; - $s1['optional'] = $optional; - $ret[] = $s1; - } elseif (isset($dep['min'])) { - if (isset($dep['exclude']) && - $dep['exclude'] == $dep['min']) { - $s['rel'] = 'gt'; - } else { - $s['rel'] = 'ge'; - } - $s['version'] = $dep['min']; - $s['optional'] = $optional; - if ($dtype != 'php') { - $s['name'] = $dep['name']; - } - } elseif (isset($dep['max'])) { - if (isset($dep['exclude']) && - $dep['exclude'] == $dep['max']) { - $s['rel'] = 'lt'; - } else { - $s['rel'] = 'le'; - } - $s['version'] = $dep['max']; - $s['optional'] = $optional; - if ($dtype != 'php') { - $s['name'] = $dep['name']; - } - } - } - $ret[] = $s; - } - } - } - if (count($ret)) { - return $ret; - } - } - return false; - } - - /** - * @return php|extsrc|extbin|zendextsrc|zendextbin|bundle|false - */ - function getPackageType() - { - if (isset($this->_packageInfo['phprelease'])) { - return 'php'; - } - if (isset($this->_packageInfo['extsrcrelease'])) { - return 'extsrc'; - } - if (isset($this->_packageInfo['extbinrelease'])) { - return 'extbin'; - } - if (isset($this->_packageInfo['zendextsrcrelease'])) { - return 'zendextsrc'; - } - if (isset($this->_packageInfo['zendextbinrelease'])) { - return 'zendextbin'; - } - if (isset($this->_packageInfo['bundle'])) { - return 'bundle'; - } - return false; - } - - /** - * @return array|false - */ - function getReleases() - { - $type = $this->getPackageType(); - if ($type != 'bundle') { - $type .= 'release'; - } - if ($this->getPackageType() && isset($this->_packageInfo[$type])) { - return $this->_packageInfo[$type]; - } - return false; - } - - /** - * @return array - */ - function getChangelog() - { - if (isset($this->_packageInfo['changelog'])) { - return $this->_packageInfo['changelog']; - } - return false; - } - - function hasDeps() - { - return isset($this->_packageInfo['dependencies']); - } - - function getPackagexmlVersion() - { - if (isset($this->_packageInfo['zendextsrcrelease'])) { - return '2.1'; - } - if (isset($this->_packageInfo['zendextbinrelease'])) { - return '2.1'; - } - return '2.0'; - } - - /** - * @return array|false - */ - function getSourcePackage() - { - if (isset($this->_packageInfo['extbinrelease']) || - isset($this->_packageInfo['zendextbinrelease'])) { - return array('channel' => $this->_packageInfo['srcchannel'], - 'package' => $this->_packageInfo['srcpackage']); - } - return false; - } - - function getBundledPackages() - { - if (isset($this->_packageInfo['bundle'])) { - return $this->_packageInfo['contents']['bundledpackage']; - } - return false; - } - - function getLastModified() - { - if (isset($this->_packageInfo['_lastmodified'])) { - return $this->_packageInfo['_lastmodified']; - } - return false; - } - - /** - * Get the contents of a file listed within the package.xml - * @param string - * @return string - */ - function getFileContents($file) - { - if ($this->_archiveFile == $this->_packageFile) { // unpacked - $dir = dirname($this->_packageFile); - $file = $dir . DIRECTORY_SEPARATOR . $file; - $file = str_replace(array('/', '\\'), - array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR), $file); - if (file_exists($file) && is_readable($file)) { - return implode('', file($file)); - } - } else { // tgz - $tar = &new Archive_Tar($this->_archiveFile); - $tar->pushErrorHandling(PEAR_ERROR_RETURN); - if ($file != 'package.xml' && $file != 'package2.xml') { - $file = $this->getPackage() . '-' . $this->getVersion() . '/' . $file; - } - $file = $tar->extractInString($file); - $tar->popErrorHandling(); - if (PEAR::isError($file)) { - return PEAR::raiseError("Cannot locate file '$file' in archive"); - } - return $file; - } - } - - function &getRW() - { - if (!class_exists('PEAR_PackageFile_v2_rw')) { - require_once 'PEAR/PackageFile/v2/rw.php'; - } - $a = new PEAR_PackageFile_v2_rw; - foreach (get_object_vars($this) as $name => $unused) { - if (!isset($this->$name)) { - continue; - } - if ($name == '_config' || $name == '_logger'|| $name == '_registry' || - $name == '_stack') { - $a->$name = &$this->$name; - } else { - $a->$name = $this->$name; - } - } - return $a; - } - - function &getDefaultGenerator() - { - if (!class_exists('PEAR_PackageFile_Generator_v2')) { - require_once 'PEAR/PackageFile/Generator/v2.php'; - } - $a = &new PEAR_PackageFile_Generator_v2($this); - return $a; - } - - function analyzeSourceCode($file, $string = false) - { - if (!isset($this->_v2Validator) || - !is_a($this->_v2Validator, 'PEAR_PackageFile_v2_Validator')) { - if (!class_exists('PEAR_PackageFile_v2_Validator')) { - require_once 'PEAR/PackageFile/v2/Validator.php'; - } - $this->_v2Validator = new PEAR_PackageFile_v2_Validator; - } - return $this->_v2Validator->analyzeSourceCode($file, $string); - } - - function validate($state = PEAR_VALIDATE_NORMAL) - { - if (!isset($this->_packageInfo) || !is_array($this->_packageInfo)) { - return false; - } - if (!isset($this->_v2Validator) || - !is_a($this->_v2Validator, 'PEAR_PackageFile_v2_Validator')) { - if (!class_exists('PEAR_PackageFile_v2_Validator')) { - require_once 'PEAR/PackageFile/v2/Validator.php'; - } - $this->_v2Validator = new PEAR_PackageFile_v2_Validator; - } - if (isset($this->_packageInfo['xsdversion'])) { - unset($this->_packageInfo['xsdversion']); - } - return $this->_v2Validator->validate($this, $state); - } - - function getTasksNs() - { - if (!isset($this->_tasksNs)) { - if (isset($this->_packageInfo['attribs'])) { - foreach ($this->_packageInfo['attribs'] as $name => $value) { - if ($value == 'http://pear.php.net/dtd/tasks-1.0') { - $this->_tasksNs = str_replace('xmlns:', '', $name); - break; - } - } - } - } - return $this->_tasksNs; - } - - /** - * Determine whether a task name is a valid task. Custom tasks may be defined - * using subdirectories by putting a "-" in the name, as in <tasks:mycustom-task> - * - * Note that this method will auto-load the task class file and test for the existence - * of the name with "-" replaced by "_" as in PEAR/Task/mycustom/task.php makes class - * PEAR_Task_mycustom_task - * @param string - * @return boolean - */ - function getTask($task) - { - $this->getTasksNs(); - // transform all '-' to '/' and 'tasks:' to '' so tasks:replace becomes replace - $task = str_replace(array($this->_tasksNs . ':', '-'), array('', ' '), $task); - $taskfile = str_replace(' ', '/', ucwords($task)); - $task = str_replace(array(' ', '/'), '_', ucwords($task)); - if (class_exists("PEAR_Task_$task")) { - return "PEAR_Task_$task"; - } - $fp = @fopen("PEAR/Task/$taskfile.php", 'r', true); - if ($fp) { - fclose($fp); - require_once "PEAR/Task/$taskfile.php"; - return "PEAR_Task_$task"; - } - return false; - } - - /** - * Key-friendly array_splice - * @param tagname to splice a value in before - * @param mixed the value to splice in - * @param string the new tag name - */ - function _ksplice($array, $key, $value, $newkey) - { - $offset = array_search($key, array_keys($array)); - $after = array_slice($array, $offset); - $before = array_slice($array, 0, $offset); - $before[$newkey] = $value; - return array_merge($before, $after); - } - - /** - * @param array a list of possible keys, in the order they may occur - * @param mixed contents of the new package.xml tag - * @param string tag name - * @access private - */ - function _insertBefore($array, $keys, $contents, $newkey) - { - foreach ($keys as $key) { - if (isset($array[$key])) { - return $array = $this->_ksplice($array, $key, $contents, $newkey); - } - } - $array[$newkey] = $contents; - return $array; - } - - /** - * @param subsection of {@link $_packageInfo} - * @param array|string tag contents - * @param array format: - * <pre> - * array( - * tagname => array(list of tag names that follow this one), - * childtagname => array(list of child tag names that follow this one), - * ) - * </pre> - * - * This allows construction of nested tags - * @access private - */ - function _mergeTag($manip, $contents, $order) - { - if (count($order)) { - foreach ($order as $tag => $curorder) { - if (!isset($manip[$tag])) { - // ensure that the tag is set up - $manip = $this->_insertBefore($manip, $curorder, array(), $tag); - } - if (count($order) > 1) { - $manip[$tag] = $this->_mergeTag($manip[$tag], $contents, array_slice($order, 1)); - return $manip; - } - } - } else { - return $manip; - } - if (is_array($manip[$tag]) && !empty($manip[$tag]) && isset($manip[$tag][0])) { - $manip[$tag][] = $contents; - } else { - if (!count($manip[$tag])) { - $manip[$tag] = $contents; - } else { - $manip[$tag] = array($manip[$tag]); - $manip[$tag][] = $contents; - } - } - return $manip; - } -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/PackageFile/v2/Validator.php b/src/vitis/vas/rest/class/PEAR/PackageFile/v2/Validator.php deleted file mode 100755 index 10efbbb6ab539a22e694e0c70abc01e3181ca7ca..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PackageFile/v2/Validator.php +++ /dev/null @@ -1,2116 +0,0 @@ -<?php -/** - * PEAR_PackageFile_v2, package.xml version 2.0, read/write version - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Validator.php,v 1.106 2008/03/28 22:23:41 dufuz Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a8 - */ -/** - * Private validation class used by PEAR_PackageFile_v2 - do not use directly, its - * sole purpose is to split up the PEAR/PackageFile/v2.php file to make it smaller - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a8 - * @access private - */ -class PEAR_PackageFile_v2_Validator -{ - /** - * @var array - */ - var $_packageInfo; - /** - * @var PEAR_PackageFile_v2 - */ - var $_pf; - /** - * @var PEAR_ErrorStack - */ - var $_stack; - /** - * @var int - */ - var $_isValid = 0; - /** - * @var int - */ - var $_filesValid = 0; - /** - * @var int - */ - var $_curState = 0; - /** - * @param PEAR_PackageFile_v2 - * @param int - */ - function validate(&$pf, $state = PEAR_VALIDATE_NORMAL) - { - $this->_pf = &$pf; - $this->_curState = $state; - $this->_packageInfo = $this->_pf->getArray(); - $this->_isValid = $this->_pf->_isValid; - $this->_filesValid = $this->_pf->_filesValid; - $this->_stack = &$pf->_stack; - $this->_stack->getErrors(true); - if (($this->_isValid & $state) == $state) { - return true; - } - if (!isset($this->_packageInfo) || !is_array($this->_packageInfo)) { - return false; - } - if (!isset($this->_packageInfo['attribs']['version']) || - ($this->_packageInfo['attribs']['version'] != '2.0' && - $this->_packageInfo['attribs']['version'] != '2.1') - ) { - $this->_noPackageVersion(); - } - $structure = - array( - 'name', - 'channel|uri', - '*extends', // can't be multiple, but this works fine - 'summary', - 'description', - '+lead', // these all need content checks - '*developer', - '*contributor', - '*helper', - 'date', - '*time', - 'version', - 'stability', - 'license->?uri->?filesource', - 'notes', - 'contents', //special validation needed - '*compatible', - 'dependencies', //special validation needed - '*usesrole', - '*usestask', // reserve these for 1.4.0a1 to implement - // this will allow a package.xml to gracefully say it - // needs a certain package installed in order to implement a role or task - '*providesextension', - '*srcpackage|*srcuri', - '+phprelease|+extsrcrelease|+extbinrelease|' . - '+zendextsrcrelease|+zendextbinrelease|bundle', //special validation needed - '*changelog', - ); - $test = $this->_packageInfo; - if (isset($test['dependencies']) && - isset($test['dependencies']['required']) && - isset($test['dependencies']['required']['pearinstaller']) && - isset($test['dependencies']['required']['pearinstaller']['min']) && - version_compare('1.7.2', - $test['dependencies']['required']['pearinstaller']['min'], '<') - ) { - $this->_pearVersionTooLow($test['dependencies']['required']['pearinstaller']['min']); - return false; - } - // ignore post-installation array fields - if (array_key_exists('filelist', $test)) { - unset($test['filelist']); - } - if (array_key_exists('_lastmodified', $test)) { - unset($test['_lastmodified']); - } - if (array_key_exists('#binarypackage', $test)) { - unset($test['#binarypackage']); - } - if (array_key_exists('old', $test)) { - unset($test['old']); - } - if (array_key_exists('_lastversion', $test)) { - unset($test['_lastversion']); - } - if (!$this->_stupidSchemaValidate($structure, $test, '<package>')) { - return false; - } - if (empty($this->_packageInfo['name'])) { - $this->_tagCannotBeEmpty('name'); - } - $test = isset($this->_packageInfo['uri']) ? 'uri' :'channel'; - if (empty($this->_packageInfo[$test])) { - $this->_tagCannotBeEmpty($test); - } - if (is_array($this->_packageInfo['license']) && - (!isset($this->_packageInfo['license']['_content']) || - empty($this->_packageInfo['license']['_content']))) { - $this->_tagCannotBeEmpty('license'); - } elseif (empty($this->_packageInfo['license'])) { - $this->_tagCannotBeEmpty('license'); - } - if (empty($this->_packageInfo['summary'])) { - $this->_tagCannotBeEmpty('summary'); - } - if (empty($this->_packageInfo['description'])) { - $this->_tagCannotBeEmpty('description'); - } - if (empty($this->_packageInfo['date'])) { - $this->_tagCannotBeEmpty('date'); - } - if (empty($this->_packageInfo['notes'])) { - $this->_tagCannotBeEmpty('notes'); - } - if (isset($this->_packageInfo['time']) && empty($this->_packageInfo['time'])) { - $this->_tagCannotBeEmpty('time'); - } - if (isset($this->_packageInfo['dependencies'])) { - $this->_validateDependencies(); - } - if (isset($this->_packageInfo['compatible'])) { - $this->_validateCompatible(); - } - if (!isset($this->_packageInfo['bundle'])) { - if (empty($this->_packageInfo['contents'])) { - $this->_tagCannotBeEmpty('contents'); - } - if (!isset($this->_packageInfo['contents']['dir'])) { - $this->_filelistMustContainDir('contents'); - return false; - } - if (isset($this->_packageInfo['contents']['file'])) { - $this->_filelistCannotContainFile('contents'); - return false; - } - } - $this->_validateMaintainers(); - $this->_validateStabilityVersion(); - $fail = false; - if (array_key_exists('usesrole', $this->_packageInfo)) { - $roles = $this->_packageInfo['usesrole']; - if (!is_array($roles) || !isset($roles[0])) { - $roles = array($roles); - } - foreach ($roles as $role) { - if (!isset($role['role'])) { - $this->_usesroletaskMustHaveRoleTask('usesrole', 'role'); - $fail = true; - } else { - if (!isset($role['channel'])) { - if (!isset($role['uri'])) { - $this->_usesroletaskMustHaveChannelOrUri($role['role'], 'usesrole'); - $fail = true; - } - } elseif (!isset($role['package'])) { - $this->_usesroletaskMustHavePackage($role['role'], 'usesrole'); - $fail = true; - } - } - } - } - if (array_key_exists('usestask', $this->_packageInfo)) { - $roles = $this->_packageInfo['usestask']; - if (!is_array($roles) || !isset($roles[0])) { - $roles = array($roles); - } - foreach ($roles as $role) { - if (!isset($role['task'])) { - $this->_usesroletaskMustHaveRoleTask('usestask', 'task'); - $fail = true; - } else { - if (!isset($role['channel'])) { - if (!isset($role['uri'])) { - $this->_usesroletaskMustHaveChannelOrUri($role['task'], 'usestask'); - $fail = true; - } - } elseif (!isset($role['package'])) { - $this->_usesroletaskMustHavePackage($role['task'], 'usestask'); - $fail = true; - } - } - } - } - if ($fail) { - return false; - } - $list = $this->_packageInfo['contents']; - if (isset($list['dir']) && is_array($list['dir']) && isset($list['dir'][0])) { - $this->_multipleToplevelDirNotAllowed(); - return $this->_isValid = 0; - } - $this->_validateFilelist(); - $this->_validateRelease(); - if (!$this->_stack->hasErrors()) { - $chan = $this->_pf->_registry->getChannel($this->_pf->getChannel(), true); - if (PEAR::isError($chan)) { - $this->_unknownChannel($this->_pf->getChannel()); - } else { - $valpack = $chan->getValidationPackage(); - // for channel validator packages, always use the default PEAR validator. - // otherwise, they can't be installed or packaged - $validator = $chan->getValidationObject($this->_pf->getPackage()); - if (!$validator) { - $this->_stack->push(__FUNCTION__, 'error', - array_merge( - array('channel' => $chan->getName(), - 'package' => $this->_pf->getPackage()), - $valpack - ), - 'package "%channel%/%package%" cannot be properly validated without ' . - 'validation package "%channel%/%name%-%version%"'); - return $this->_isValid = 0; - } - $validator->setPackageFile($this->_pf); - $validator->validate($state); - $failures = $validator->getFailures(); - foreach ($failures['errors'] as $error) { - $this->_stack->push(__FUNCTION__, 'error', $error, - 'Channel validator error: field "%field%" - %reason%'); - } - foreach ($failures['warnings'] as $warning) { - $this->_stack->push(__FUNCTION__, 'warning', $warning, - 'Channel validator warning: field "%field%" - %reason%'); - } - } - } - $this->_pf->_isValid = $this->_isValid = !$this->_stack->hasErrors('error'); - if ($this->_isValid && $state == PEAR_VALIDATE_PACKAGING && !$this->_filesValid) { - if ($this->_pf->getPackageType() == 'bundle') { - if ($this->_analyzeBundledPackages()) { - $this->_filesValid = $this->_pf->_filesValid = true; - } else { - $this->_pf->_isValid = $this->_isValid = 0; - } - } else { - if (!$this->_analyzePhpFiles()) { - $this->_pf->_isValid = $this->_isValid = 0; - } else { - $this->_filesValid = $this->_pf->_filesValid = true; - } - } - } - if ($this->_isValid) { - return $this->_pf->_isValid = $this->_isValid = $state; - } - return $this->_pf->_isValid = $this->_isValid = 0; - } - - function _stupidSchemaValidate($structure, $xml, $root) - { - if (!is_array($xml)) { - $xml = array(); - } - $keys = array_keys($xml); - reset($keys); - $key = current($keys); - while ($key == 'attribs' || $key == '_contents') { - $key = next($keys); - } - $unfoundtags = $optionaltags = array(); - $ret = true; - $mismatch = false; - foreach ($structure as $struc) { - if ($key) { - $tag = $xml[$key]; - } - $test = $this->_processStructure($struc); - if (isset($test['choices'])) { - $loose = true; - foreach ($test['choices'] as $choice) { - if ($key == $choice['tag']) { - $key = next($keys); - while ($key == 'attribs' || $key == '_contents') { - $key = next($keys); - } - $unfoundtags = $optionaltags = array(); - $mismatch = false; - if ($key && $key != $choice['tag'] && isset($choice['multiple'])) { - $unfoundtags[] = $choice['tag']; - $optionaltags[] = $choice['tag']; - if ($key) { - $mismatch = true; - } - } - $ret &= $this->_processAttribs($choice, $tag, $root); - continue 2; - } else { - $unfoundtags[] = $choice['tag']; - $mismatch = true; - } - if (!isset($choice['multiple']) || $choice['multiple'] != '*') { - $loose = false; - } else { - $optionaltags[] = $choice['tag']; - } - } - if (!$loose) { - $this->_invalidTagOrder($unfoundtags, $key, $root); - return false; - } - } else { - if ($key != $test['tag']) { - if (isset($test['multiple']) && $test['multiple'] != '*') { - $unfoundtags[] = $test['tag']; - $this->_invalidTagOrder($unfoundtags, $key, $root); - return false; - } else { - if ($key) { - $mismatch = true; - } - $unfoundtags[] = $test['tag']; - $optionaltags[] = $test['tag']; - } - if (!isset($test['multiple'])) { - $this->_invalidTagOrder($unfoundtags, $key, $root); - return false; - } - continue; - } else { - $unfoundtags = $optionaltags = array(); - $mismatch = false; - } - $key = next($keys); - while ($key == 'attribs' || $key == '_contents') { - $key = next($keys); - } - if ($key && $key != $test['tag'] && isset($test['multiple'])) { - $unfoundtags[] = $test['tag']; - $optionaltags[] = $test['tag']; - $mismatch = true; - } - $ret &= $this->_processAttribs($test, $tag, $root); - continue; - } - } - if (!$mismatch && count($optionaltags)) { - // don't error out on any optional tags - $unfoundtags = array_diff($unfoundtags, $optionaltags); - } - if (count($unfoundtags)) { - $this->_invalidTagOrder($unfoundtags, $key, $root); - } elseif ($key) { - // unknown tags - $this->_invalidTagOrder('*no tags allowed here*', $key, $root); - while ($key = next($keys)) { - $this->_invalidTagOrder('*no tags allowed here*', $key, $root); - } - } - return $ret; - } - - function _processAttribs($choice, $tag, $context) - { - if (isset($choice['attribs'])) { - if (!is_array($tag)) { - $tag = array($tag); - } - $tags = $tag; - if (!isset($tags[0])) { - $tags = array($tags); - } - $ret = true; - foreach ($tags as $i => $tag) { - if (!is_array($tag) || !isset($tag['attribs'])) { - foreach ($choice['attribs'] as $attrib) { - if ($attrib{0} != '?') { - $ret &= $this->_tagHasNoAttribs($choice['tag'], - $context); - continue 2; - } - } - } - foreach ($choice['attribs'] as $attrib) { - if ($attrib{0} != '?') { - if (!isset($tag['attribs'][$attrib])) { - $ret &= $this->_tagMissingAttribute($choice['tag'], - $attrib, $context); - } - } - } - } - return $ret; - } - return true; - } - - function _processStructure($key) - { - $ret = array(); - if (count($pieces = explode('|', $key)) > 1) { - $ret['choices'] = array(); - foreach ($pieces as $piece) { - $ret['choices'][] = $this->_processStructure($piece); - } - return $ret; - } - $multi = $key{0}; - if ($multi == '+' || $multi == '*') { - $ret['multiple'] = $key{0}; - $key = substr($key, 1); - } - if (count($attrs = explode('->', $key)) > 1) { - $ret['tag'] = array_shift($attrs); - $ret['attribs'] = $attrs; - } else { - $ret['tag'] = $key; - } - return $ret; - } - - function _validateStabilityVersion() - { - $structure = array('release', 'api'); - $a = $this->_stupidSchemaValidate($structure, $this->_packageInfo['version'], '<version>'); - $a &= $this->_stupidSchemaValidate($structure, $this->_packageInfo['stability'], '<stability>'); - if ($a) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $this->_packageInfo['version']['release'])) { - $this->_invalidVersion('release', $this->_packageInfo['version']['release']); - } - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $this->_packageInfo['version']['api'])) { - $this->_invalidVersion('api', $this->_packageInfo['version']['api']); - } - if (!in_array($this->_packageInfo['stability']['release'], - array('snapshot', 'devel', 'alpha', 'beta', 'stable'))) { - $this->_invalidState('release', $this->_packageInfo['stability']['release']); - } - if (!in_array($this->_packageInfo['stability']['api'], - array('devel', 'alpha', 'beta', 'stable'))) { - $this->_invalidState('api', $this->_packageInfo['stability']['api']); - } - } - } - - function _validateMaintainers() - { - $structure = - array( - 'name', - 'user', - 'email', - 'active', - ); - foreach (array('lead', 'developer', 'contributor', 'helper') as $type) { - if (!isset($this->_packageInfo[$type])) { - continue; - } - if (isset($this->_packageInfo[$type][0])) { - foreach ($this->_packageInfo[$type] as $lead) { - $this->_stupidSchemaValidate($structure, $lead, '<' . $type . '>'); - } - } else { - $this->_stupidSchemaValidate($structure, $this->_packageInfo[$type], - '<' . $type . '>'); - } - } - } - - function _validatePhpDep($dep, $installcondition = false) - { - $structure = array( - 'min', - '*max', - '*exclude', - ); - $type = $installcondition ? '<installcondition><php>' : '<dependencies><required><php>'; - $this->_stupidSchemaValidate($structure, $dep, $type); - if (isset($dep['min'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?\\z/', - $dep['min'])) { - $this->_invalidVersion($type . '<min>', $dep['min']); - } - } - if (isset($dep['max'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?\\z/', - $dep['max'])) { - $this->_invalidVersion($type . '<max>', $dep['max']); - } - } - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - foreach ($dep['exclude'] as $exclude) { - if (!preg_match( - '/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?(?:-[a-zA-Z0-9]+)?\\z/', - $exclude)) { - $this->_invalidVersion($type . '<exclude>', $exclude); - } - } - } - } - - function _validatePearinstallerDep($dep) - { - $structure = array( - 'min', - '*max', - '*recommended', - '*exclude', - ); - $this->_stupidSchemaValidate($structure, $dep, '<dependencies><required><pearinstaller>'); - if (isset($dep['min'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['min'])) { - $this->_invalidVersion('<dependencies><required><pearinstaller><min>', - $dep['min']); - } - } - if (isset($dep['max'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['max'])) { - $this->_invalidVersion('<dependencies><required><pearinstaller><max>', - $dep['max']); - } - } - if (isset($dep['recommended'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['recommended'])) { - $this->_invalidVersion('<dependencies><required><pearinstaller><recommended>', - $dep['recommended']); - } - } - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - foreach ($dep['exclude'] as $exclude) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $exclude)) { - $this->_invalidVersion('<dependencies><required><pearinstaller><exclude>', - $exclude); - } - } - } - } - - function _validatePackageDep($dep, $group, $type = '<package>') - { - if (isset($dep['uri'])) { - if (isset($dep['conflicts'])) { - $structure = array( - 'name', - 'uri', - 'conflicts', - '*providesextension', - ); - } else { - $structure = array( - 'name', - 'uri', - '*providesextension', - ); - } - } else { - if (isset($dep['conflicts'])) { - $structure = array( - 'name', - 'channel', - '*min', - '*max', - '*exclude', - 'conflicts', - '*providesextension', - ); - } else { - $structure = array( - 'name', - 'channel', - '*min', - '*max', - '*recommended', - '*exclude', - '*nodefault', - '*providesextension', - ); - } - } - if (isset($dep['name'])) { - $type .= '<name>' . $dep['name'] . '</name>'; - } - $this->_stupidSchemaValidate($structure, $dep, '<dependencies>' . $group . $type); - if (isset($dep['uri']) && (isset($dep['min']) || isset($dep['max']) || - isset($dep['recommended']) || isset($dep['exclude']))) { - $this->_uriDepsCannotHaveVersioning('<dependencies>' . $group . $type); - } - if (isset($dep['channel']) && strtolower($dep['channel']) == '__uri') { - $this->_DepchannelCannotBeUri('<dependencies>' . $group . $type); - } - if (isset($dep['min'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['min'])) { - $this->_invalidVersion('<dependencies>' . $group . $type . '<min>', $dep['min']); - } - } - if (isset($dep['max'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['max'])) { - $this->_invalidVersion('<dependencies>' . $group . $type . '<max>', $dep['max']); - } - } - if (isset($dep['recommended'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['recommended'])) { - $this->_invalidVersion('<dependencies>' . $group . $type . '<recommended>', - $dep['recommended']); - } - } - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - foreach ($dep['exclude'] as $exclude) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $exclude)) { - $this->_invalidVersion('<dependencies>' . $group . $type . '<exclude>', - $exclude); - } - } - } - } - - function _validateSubpackageDep($dep, $group) - { - $this->_validatePackageDep($dep, $group, '<subpackage>'); - if (isset($dep['providesextension'])) { - $this->_subpackageCannotProvideExtension(isset($dep['name']) ? $dep['name'] : ''); - } - if (isset($dep['conflicts'])) { - $this->_subpackagesCannotConflict(isset($dep['name']) ? $dep['name'] : ''); - } - } - - function _validateExtensionDep($dep, $group = false, $installcondition = false) - { - if (isset($dep['conflicts'])) { - $structure = array( - 'name', - '*min', - '*max', - '*exclude', - 'conflicts', - ); - } else { - $structure = array( - 'name', - '*min', - '*max', - '*recommended', - '*exclude', - ); - } - if ($installcondition) { - $type = '<installcondition><extension>'; - } else { - $type = '<dependencies>' . $group . '<extension>'; - } - if (isset($dep['name'])) { - $type .= '<name>' . $dep['name'] . '</name>'; - } - $this->_stupidSchemaValidate($structure, $dep, $type); - if (isset($dep['min'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['min'])) { - $this->_invalidVersion(substr($type, 1) . '<min', $dep['min']); - } - } - if (isset($dep['max'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['max'])) { - $this->_invalidVersion(substr($type, 1) . '<max', $dep['max']); - } - } - if (isset($dep['recommended'])) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $dep['recommended'])) { - $this->_invalidVersion(substr($type, 1) . '<recommended', $dep['recommended']); - } - } - if (isset($dep['exclude'])) { - if (!is_array($dep['exclude'])) { - $dep['exclude'] = array($dep['exclude']); - } - foreach ($dep['exclude'] as $exclude) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $exclude)) { - $this->_invalidVersion(substr($type, 1) . '<exclude', $exclude); - } - } - } - } - - function _validateOsDep($dep, $installcondition = false) - { - $structure = array( - 'name', - '*conflicts', - ); - $type = $installcondition ? '<installcondition><os>' : '<dependencies><required><os>'; - if ($this->_stupidSchemaValidate($structure, $dep, $type)) { - if ($dep['name'] == '*') { - if (array_key_exists('conflicts', $dep)) { - $this->_cannotConflictWithAllOs($type); - } - } - } - } - - function _validateArchDep($dep, $installcondition = false) - { - $structure = array( - 'pattern', - '*conflicts', - ); - $type = $installcondition ? '<installcondition><arch>' : '<dependencies><required><arch>'; - $this->_stupidSchemaValidate($structure, $dep, $type); - } - - function _validateInstallConditions($cond, $release) - { - $structure = array( - '*php', - '*extension', - '*os', - '*arch', - ); - if (!$this->_stupidSchemaValidate($structure, - $cond, $release)) { - return false; - } - foreach (array('php', 'extension', 'os', 'arch') as $type) { - if (isset($cond[$type])) { - $iter = $cond[$type]; - if (!is_array($iter) || !isset($iter[0])) { - $iter = array($iter); - } - foreach ($iter as $package) { - if ($type == 'extension') { - $this->{"_validate{$type}Dep"}($package, false, true); - } else { - $this->{"_validate{$type}Dep"}($package, true); - } - } - } - } - } - - function _validateDependencies() - { - $structure = array( - 'required', - '*optional', - '*group->name->hint' - ); - if (!$this->_stupidSchemaValidate($structure, - $this->_packageInfo['dependencies'], '<dependencies>')) { - return false; - } - foreach (array('required', 'optional') as $simpledep) { - if (isset($this->_packageInfo['dependencies'][$simpledep])) { - if ($simpledep == 'optional') { - $structure = array( - '*package', - '*subpackage', - '*extension', - ); - } else { - $structure = array( - 'php', - 'pearinstaller', - '*package', - '*subpackage', - '*extension', - '*os', - '*arch', - ); - } - if ($this->_stupidSchemaValidate($structure, - $this->_packageInfo['dependencies'][$simpledep], - "<dependencies><$simpledep>")) { - foreach (array('package', 'subpackage', 'extension') as $type) { - if (isset($this->_packageInfo['dependencies'][$simpledep][$type])) { - $iter = $this->_packageInfo['dependencies'][$simpledep][$type]; - if (!isset($iter[0])) { - $iter = array($iter); - } - foreach ($iter as $package) { - if ($type != 'extension') { - if (isset($package['uri'])) { - if (isset($package['channel'])) { - $this->_UrlOrChannel($type, - $package['name']); - } - } else { - if (!isset($package['channel'])) { - $this->_NoChannel($type, $package['name']); - } - } - } - $this->{"_validate{$type}Dep"}($package, "<$simpledep>"); - } - } - } - if ($simpledep == 'optional') { - continue; - } - foreach (array('php', 'pearinstaller', 'os', 'arch') as $type) { - if (isset($this->_packageInfo['dependencies'][$simpledep][$type])) { - $iter = $this->_packageInfo['dependencies'][$simpledep][$type]; - if (!isset($iter[0])) { - $iter = array($iter); - } - foreach ($iter as $package) { - $this->{"_validate{$type}Dep"}($package); - } - } - } - } - } - } - if (isset($this->_packageInfo['dependencies']['group'])) { - $groups = $this->_packageInfo['dependencies']['group']; - if (!isset($groups[0])) { - $groups = array($groups); - } - $structure = array( - '*package', - '*subpackage', - '*extension', - ); - foreach ($groups as $group) { - if ($this->_stupidSchemaValidate($structure, $group, '<group>')) { - if (!PEAR_Validate::validGroupName($group['attribs']['name'])) { - $this->_invalidDepGroupName($group['attribs']['name']); - } - foreach (array('package', 'subpackage', 'extension') as $type) { - if (isset($group[$type])) { - $iter = $group[$type]; - if (!isset($iter[0])) { - $iter = array($iter); - } - foreach ($iter as $package) { - if ($type != 'extension') { - if (isset($package['uri'])) { - if (isset($package['channel'])) { - $this->_UrlOrChannelGroup($type, - $package['name'], - $group['name']); - } - } else { - if (!isset($package['channel'])) { - $this->_NoChannelGroup($type, - $package['name'], - $group['name']); - } - } - } - $this->{"_validate{$type}Dep"}($package, '<group name="' . - $group['attribs']['name'] . '">'); - } - } - } - } - } - } - } - - function _validateCompatible() - { - $compat = $this->_packageInfo['compatible']; - if (!isset($compat[0])) { - $compat = array($compat); - } - $required = array('name', 'channel', 'min', 'max', '*exclude'); - foreach ($compat as $package) { - $type = '<compatible>'; - if (is_array($package) && array_key_exists('name', $package)) { - $type .= '<name>' . $package['name'] . '</name>'; - } - $this->_stupidSchemaValidate($required, $package, $type); - if (is_array($package) && array_key_exists('min', $package)) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $package['min'])) { - $this->_invalidVersion(substr($type, 1) . '<min', $package['min']); - } - } - if (is_array($package) && array_key_exists('max', $package)) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $package['max'])) { - $this->_invalidVersion(substr($type, 1) . '<max', $package['max']); - } - } - if (is_array($package) && array_key_exists('exclude', $package)) { - if (!is_array($package['exclude'])) { - $package['exclude'] = array($package['exclude']); - } - foreach ($package['exclude'] as $exclude) { - if (!preg_match('/^\d+(?:\.\d+)*(?:[a-zA-Z]+\d*)?\\z/', - $exclude)) { - $this->_invalidVersion(substr($type, 1) . '<exclude', $exclude); - } - } - } - } - } - - function _validateBundle($list) - { - if (!is_array($list) || !isset($list['bundledpackage'])) { - return $this->_NoBundledPackages(); - } - if (!is_array($list['bundledpackage']) || !isset($list['bundledpackage'][0])) { - return $this->_AtLeast2BundledPackages(); - } - foreach ($list['bundledpackage'] as $package) { - if (!is_string($package)) { - $this->_bundledPackagesMustBeFilename(); - } - } - } - - function _validateFilelist($list = false, $allowignore = false, $dirs = '') - { - $iscontents = false; - if (!$list) { - $iscontents = true; - $list = $this->_packageInfo['contents']; - if (isset($this->_packageInfo['bundle'])) { - return $this->_validateBundle($list); - } - } - if ($allowignore) { - $struc = array( - '*install->name->as', - '*ignore->name' - ); - } else { - $struc = array( - '*dir->name->?baseinstalldir', - '*file->name->role->?baseinstalldir->?md5sum' - ); - if (isset($list['dir']) && isset($list['file'])) { - // stave off validation errors without requiring a set order. - $_old = $list; - if (isset($list['attribs'])) { - $list = array('attribs' => $_old['attribs']); - } - $list['dir'] = $_old['dir']; - $list['file'] = $_old['file']; - } - } - if (!isset($list['attribs']) || !isset($list['attribs']['name'])) { - $unknown = $allowignore ? '<filelist>' : '<dir name="*unknown*">'; - $dirname = $iscontents ? '<contents>' : $unknown; - } else { - $dirname = '<dir name="' . $list['attribs']['name'] . '">'; - if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $list['attribs']['name']))) { - // file contains .. parent directory or . cur directory - $this->_invalidDirName($list['attribs']['name']); - } - } - $res = $this->_stupidSchemaValidate($struc, $list, $dirname); - if ($allowignore && $res) { - $ignored_or_installed = array(); - $this->_pf->getFilelist(); - $fcontents = $this->_pf->getContents(); - $filelist = array(); - if (!isset($fcontents['dir']['file'][0])) { - $fcontents['dir']['file'] = array($fcontents['dir']['file']); - } - foreach ($fcontents['dir']['file'] as $file) { - $filelist[$file['attribs']['name']] = true; - } - if (isset($list['install'])) { - if (!isset($list['install'][0])) { - $list['install'] = array($list['install']); - } - foreach ($list['install'] as $file) { - if (!isset($filelist[$file['attribs']['name']])) { - $this->_notInContents($file['attribs']['name'], 'install'); - continue; - } - if (array_key_exists($file['attribs']['name'], $ignored_or_installed)) { - $this->_multipleInstallAs($file['attribs']['name']); - } - if (!isset($ignored_or_installed[$file['attribs']['name']])) { - $ignored_or_installed[$file['attribs']['name']] = array(); - } - $ignored_or_installed[$file['attribs']['name']][] = 1; - if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $file['attribs']['as']))) { - // file contains .. parent directory or . cur directory references - $this->_invalidFileInstallAs($file['attribs']['name'], - $file['attribs']['as']); - } - } - } - if (isset($list['ignore'])) { - if (!isset($list['ignore'][0])) { - $list['ignore'] = array($list['ignore']); - } - foreach ($list['ignore'] as $file) { - if (!isset($filelist[$file['attribs']['name']])) { - $this->_notInContents($file['attribs']['name'], 'ignore'); - continue; - } - if (array_key_exists($file['attribs']['name'], $ignored_or_installed)) { - $this->_ignoreAndInstallAs($file['attribs']['name']); - } - } - } - } - if (!$allowignore && isset($list['file'])) { - if (is_string($list['file'])) { - $this->_oldStyleFileNotAllowed(); - return false; - } - if (!isset($list['file'][0])) { - // single file - $list['file'] = array($list['file']); - } - foreach ($list['file'] as $i => $file) - { - if (isset($file['attribs']) && isset($file['attribs']['name'])) { - if ($file['attribs']['name']{0} == '.' && - $file['attribs']['name']{1} == '/') { - // name is something like "./doc/whatever.txt" - $this->_invalidFileName($file['attribs']['name'], $dirname); - } - if (preg_match('~/\.\.?(/|\\z)|^\.\.?/~', - str_replace('\\', '/', $file['attribs']['name']))) { - // file contains .. parent directory or . cur directory - $this->_invalidFileName($file['attribs']['name'], $dirname); - } - } - if (isset($file['attribs']) && isset($file['attribs']['role'])) { - if (!$this->_validateRole($file['attribs']['role'])) { - if (isset($this->_packageInfo['usesrole'])) { - $roles = $this->_packageInfo['usesrole']; - if (!isset($roles[0])) { - $roles = array($roles); - } - foreach ($roles as $role) { - if ($role['role'] = $file['attribs']['role']) { - $msg = 'This package contains role "%role%" and requires ' . - 'package "%package%" to be used'; - if (isset($role['uri'])) { - $params = array('role' => $role['role'], - 'package' => $role['uri']); - } else { - $params = array('role' => $role['role'], - 'package' => $this->_pf->_registry-> - parsedPackageNameToString(array('package' => - $role['package'], 'channel' => $role['channel']), - true)); - } - $this->_stack->push('_mustInstallRole', 'error', $params, $msg); - } - } - } - $this->_invalidFileRole($file['attribs']['name'], - $dirname, $file['attribs']['role']); - } - } - if (!isset($file['attribs'])) { - continue; - } - $save = $file['attribs']; - if ($dirs) { - $save['name'] = $dirs . '/' . $save['name']; - } - unset($file['attribs']); - if (count($file) && $this->_curState != PEAR_VALIDATE_DOWNLOADING) { // has tasks - foreach ($file as $task => $value) { - if ($tagClass = $this->_pf->getTask($task)) { - if (!is_array($value) || !isset($value[0])) { - $value = array($value); - } - foreach ($value as $v) { - $ret = call_user_func(array($tagClass, 'validateXml'), - $this->_pf, $v, $this->_pf->_config, $save); - if (is_array($ret)) { - $this->_invalidTask($task, $ret, isset($save['name']) ? - $save['name'] : ''); - } - } - } else { - if (isset($this->_packageInfo['usestask'])) { - $roles = $this->_packageInfo['usestask']; - if (!isset($roles[0])) { - $roles = array($roles); - } - foreach ($roles as $role) { - if ($role['task'] = $task) { - $msg = 'This package contains task "%task%" and requires ' . - 'package "%package%" to be used'; - if (isset($role['uri'])) { - $params = array('task' => $role['task'], - 'package' => $role['uri']); - } else { - $params = array('task' => $role['task'], - 'package' => $this->_pf->_registry-> - parsedPackageNameToString(array('package' => - $role['package'], 'channel' => $role['channel']), - true)); - } - $this->_stack->push('_mustInstallTask', 'error', - $params, $msg); - } - } - } - $this->_unknownTask($task, $save['name']); - } - } - } - } - } - if (isset($list['ignore'])) { - if (!$allowignore) { - $this->_ignoreNotAllowed('ignore'); - } - } - if (isset($list['install'])) { - if (!$allowignore) { - $this->_ignoreNotAllowed('install'); - } - } - if (isset($list['file'])) { - if ($allowignore) { - $this->_fileNotAllowed('file'); - } - } - if (isset($list['dir'])) { - if ($allowignore) { - $this->_fileNotAllowed('dir'); - } else { - if (!isset($list['dir'][0])) { - $list['dir'] = array($list['dir']); - } - foreach ($list['dir'] as $dir) { - if (isset($dir['attribs']) && isset($dir['attribs']['name'])) { - if ($dir['attribs']['name'] == '/' || - !isset($this->_packageInfo['contents']['dir']['dir'])) { - // always use nothing if the filelist has already been flattened - $newdirs = ''; - } elseif ($dirs == '') { - $newdirs = $dir['attribs']['name']; - } else { - $newdirs = $dirs . '/' . $dir['attribs']['name']; - } - } else { - $newdirs = $dirs; - } - $this->_validateFilelist($dir, $allowignore, $newdirs); - } - } - } - } - - function _validateRelease() - { - if (isset($this->_packageInfo['phprelease'])) { - $release = 'phprelease'; - if (isset($this->_packageInfo['providesextension'])) { - $this->_cannotProvideExtension($release); - } - if (isset($this->_packageInfo['srcpackage']) || isset($this->_packageInfo['srcuri'])) { - $this->_cannotHaveSrcpackage($release); - } - $releases = $this->_packageInfo['phprelease']; - if (!is_array($releases)) { - return true; - } - if (!isset($releases[0])) { - $releases = array($releases); - } - foreach ($releases as $rel) { - $this->_stupidSchemaValidate(array( - '*installconditions', - '*filelist', - ), $rel, '<phprelease>'); - } - } - foreach (array('', 'zend') as $prefix) { - $releasetype = $prefix . 'extsrcrelease'; - if (isset($this->_packageInfo[$releasetype])) { - $release = $releasetype; - if (!isset($this->_packageInfo['providesextension'])) { - $this->_mustProvideExtension($release); - } - if (isset($this->_packageInfo['srcpackage']) || isset($this->_packageInfo['srcuri'])) { - $this->_cannotHaveSrcpackage($release); - } - $releases = $this->_packageInfo[$releasetype]; - if (!is_array($releases)) { - return true; - } - if (!isset($releases[0])) { - $releases = array($releases); - } - foreach ($releases as $rel) { - $this->_stupidSchemaValidate(array( - '*installconditions', - '*configureoption->name->prompt->?default', - '*binarypackage', - '*filelist', - ), $rel, '<' . $releasetype . '>'); - if (isset($rel['binarypackage'])) { - if (!is_array($rel['binarypackage']) || !isset($rel['binarypackage'][0])) { - $rel['binarypackage'] = array($rel['binarypackage']); - } - foreach ($rel['binarypackage'] as $bin) { - if (!is_string($bin)) { - $this->_binaryPackageMustBePackagename(); - } - } - } - } - } - $releasetype = 'extbinrelease'; - if (isset($this->_packageInfo[$releasetype])) { - $release = $releasetype; - if (!isset($this->_packageInfo['providesextension'])) { - $this->_mustProvideExtension($release); - } - if (isset($this->_packageInfo['channel']) && - !isset($this->_packageInfo['srcpackage'])) { - $this->_mustSrcPackage($release); - } - if (isset($this->_packageInfo['uri']) && !isset($this->_packageInfo['srcuri'])) { - $this->_mustSrcuri($release); - } - $releases = $this->_packageInfo[$releasetype]; - if (!is_array($releases)) { - return true; - } - if (!isset($releases[0])) { - $releases = array($releases); - } - foreach ($releases as $rel) { - $this->_stupidSchemaValidate(array( - '*installconditions', - '*filelist', - ), $rel, '<' . $releasetype . '>'); - } - } - } - if (isset($this->_packageInfo['bundle'])) { - $release = 'bundle'; - if (isset($this->_packageInfo['providesextension'])) { - $this->_cannotProvideExtension($release); - } - if (isset($this->_packageInfo['srcpackage']) || isset($this->_packageInfo['srcuri'])) { - $this->_cannotHaveSrcpackage($release); - } - $releases = $this->_packageInfo['bundle']; - if (!is_array($releases) || !isset($releases[0])) { - $releases = array($releases); - } - foreach ($releases as $rel) { - $this->_stupidSchemaValidate(array( - '*installconditions', - '*filelist', - ), $rel, '<bundle>'); - } - } - foreach ($releases as $rel) { - if (is_array($rel) && array_key_exists('installconditions', $rel)) { - $this->_validateInstallConditions($rel['installconditions'], - "<$release><installconditions>"); - } - if (is_array($rel) && array_key_exists('filelist', $rel)) { - if ($rel['filelist']) { - - $this->_validateFilelist($rel['filelist'], true); - } - } - } - } - - /** - * This is here to allow role extension through plugins - * @param string - */ - function _validateRole($role) - { - return in_array($role, PEAR_Installer_Role::getValidRoles($this->_pf->getPackageType())); - } - - function _pearVersionTooLow($version) - { - $this->_stack->push(__FUNCTION__, 'error', - array('version' => $version), - 'This package.xml requires PEAR version %version% to parse properly, we are ' . - 'version 1.7.2'); - } - - function _invalidTagOrder($oktags, $actual, $root) - { - $this->_stack->push(__FUNCTION__, 'error', - array('oktags' => $oktags, 'actual' => $actual, 'root' => $root), - 'Invalid tag order in %root%, found <%actual%> expected one of "%oktags%"'); - } - - function _ignoreNotAllowed($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '<%type%> is not allowed inside global <contents>, only inside ' . - '<phprelease>/<extbinrelease>/<zendextbinrelease>, use <dir> and <file> only'); - } - - function _fileNotAllowed($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '<%type%> is not allowed inside release <filelist>, only inside ' . - '<contents>, use <ignore> and <install> only'); - } - - function _oldStyleFileNotAllowed() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'Old-style <file>name</file> is not allowed. Use' . - '<file name="name" role="role"/>'); - } - - function _tagMissingAttribute($tag, $attr, $context) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag, - 'attribute' => $attr, 'context' => $context), - 'tag <%tag%> in context "%context%" has no attribute "%attribute%"'); - } - - function _tagHasNoAttribs($tag, $context) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag, - 'context' => $context), - 'tag <%tag%> has no attributes in context "%context%"'); - } - - function _invalidInternalStructure() - { - $this->_stack->push(__FUNCTION__, 'exception', array(), - 'internal array was not generated by compatible parser, or extreme parser error, cannot continue'); - } - - function _invalidFileRole($file, $dir, $role) - { - $this->_stack->push(__FUNCTION__, 'error', array( - 'file' => $file, 'dir' => $dir, 'role' => $role, - 'roles' => PEAR_Installer_Role::getValidRoles($this->_pf->getPackageType())), - 'File "%file%" in directory "%dir%" has invalid role "%role%", should be one of %roles%'); - } - - function _invalidFileName($file, $dir) - { - $this->_stack->push(__FUNCTION__, 'error', array( - 'file' => $file), - 'File "%file%" in directory "%dir%" cannot begin with "./" or contain ".."'); - } - - function _invalidFileInstallAs($file, $as) - { - $this->_stack->push(__FUNCTION__, 'error', array( - 'file' => $file, 'as' => $as), - 'File "%file%" <install as="%as%"/> cannot contain "./" or contain ".."'); - } - - function _invalidDirName($dir) - { - $this->_stack->push(__FUNCTION__, 'error', array( - 'dir' => $file), - 'Directory "%dir%" cannot begin with "./" or contain ".."'); - } - - function _filelistCannotContainFile($filelist) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $filelist), - '<%tag%> can only contain <dir>, contains <file>. Use ' . - '<dir name="/"> as the first dir element'); - } - - function _filelistMustContainDir($filelist) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $filelist), - '<%tag%> must contain <dir>. Use <dir name="/"> as the ' . - 'first dir element'); - } - - function _tagCannotBeEmpty($tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag), - '<%tag%> cannot be empty (<%tag%/>)'); - } - - function _UrlOrChannel($type, $name) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, - 'name' => $name), - 'Required dependency <%type%> "%name%" can have either url OR ' . - 'channel attributes, and not both'); - } - - function _NoChannel($type, $name) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, - 'name' => $name), - 'Required dependency <%type%> "%name%" must have either url OR ' . - 'channel attributes'); - } - - function _UrlOrChannelGroup($type, $name, $group) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, - 'name' => $name, 'group' => $group), - 'Group "%group%" dependency <%type%> "%name%" can have either url OR ' . - 'channel attributes, and not both'); - } - - function _NoChannelGroup($type, $name, $group) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, - 'name' => $name, 'group' => $group), - 'Group "%group%" dependency <%type%> "%name%" must have either url OR ' . - 'channel attributes'); - } - - function _unknownChannel($channel) - { - $this->_stack->push(__FUNCTION__, 'error', array('channel' => $channel), - 'Unknown channel "%channel%"'); - } - - function _noPackageVersion() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'package.xml <package> tag has no version attribute, or version is not 2.0'); - } - - function _NoBundledPackages() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'No <bundledpackage> tag was found in <contents>, required for bundle packages'); - } - - function _AtLeast2BundledPackages() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'At least 2 packages must be bundled in a bundle package'); - } - - function _ChannelOrUri($name) - { - $this->_stack->push(__FUNCTION__, 'error', array('name' => $name), - 'Bundled package "%name%" can have either a uri or a channel, not both'); - } - - function _noChildTag($child, $tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('child' => $child, 'tag' => $tag), - 'Tag <%tag%> is missing child tag <%child%>'); - } - - function _invalidVersion($type, $value) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, 'value' => $value), - 'Version type <%type%> is not a valid version (%value%)'); - } - - function _invalidState($type, $value) - { - $states = array('stable', 'beta', 'alpha', 'devel'); - if ($type != 'api') { - $states[] = 'snapshot'; - } - if (strtolower($value) == 'rc') { - $this->_stack->push(__FUNCTION__, 'error', - array('version' => $this->_packageInfo['version']['release']), - 'RC is not a state, it is a version postfix, try %version%RC1, stability beta'); - } - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, 'value' => $value, - 'types' => $states), - 'Stability type <%type%> is not a valid stability (%value%), must be one of ' . - '%types%'); - } - - function _invalidTask($task, $ret, $file) - { - switch ($ret[0]) { - case PEAR_TASK_ERROR_MISSING_ATTRIB : - $info = array('attrib' => $ret[1], 'task' => $task, 'file' => $file); - $msg = 'task <%task%> is missing attribute "%attrib%" in file %file%'; - break; - case PEAR_TASK_ERROR_NOATTRIBS : - $info = array('task' => $task, 'file' => $file); - $msg = 'task <%task%> has no attributes in file %file%'; - break; - case PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE : - $info = array('attrib' => $ret[1], 'values' => $ret[3], - 'was' => $ret[2], 'task' => $task, 'file' => $file); - $msg = 'task <%task%> attribute "%attrib%" has the wrong value "%was%" '. - 'in file %file%, expecting one of "%values%"'; - break; - case PEAR_TASK_ERROR_INVALID : - $info = array('reason' => $ret[1], 'task' => $task, 'file' => $file); - $msg = 'task <%task%> in file %file% is invalid because of "%reason%"'; - break; - } - $this->_stack->push(__FUNCTION__, 'error', $info, $msg); - } - - function _unknownTask($task, $file) - { - $this->_stack->push(__FUNCTION__, 'error', array('task' => $task, 'file' => $file), - 'Unknown task "%task%" passed in file <file name="%file%">'); - } - - function _subpackageCannotProvideExtension($name) - { - $this->_stack->push(__FUNCTION__, 'error', array('name' => $name), - 'Subpackage dependency "%name%" cannot use <providesextension>, ' . - 'only package dependencies can use this tag'); - } - - function _subpackagesCannotConflict($name) - { - $this->_stack->push(__FUNCTION__, 'error', array('name' => $name), - 'Subpackage dependency "%name%" cannot use <conflicts/>, ' . - 'only package dependencies can use this tag'); - } - - function _cannotProvideExtension($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '<%release%> packages cannot use <providesextension>, only extbinrelease, extsrcrelease, zendextsrcrelease, and zendextbinrelease can provide a PHP extension'); - } - - function _mustProvideExtension($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '<%release%> packages must use <providesextension> to indicate which PHP extension is provided'); - } - - function _cannotHaveSrcpackage($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '<%release%> packages cannot specify a source code package, only extension binaries may use the <srcpackage> tag'); - } - - function _mustSrcPackage($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '<extbinrelease>/<zendextbinrelease> packages must specify a source code package with <srcpackage>'); - } - - function _mustSrcuri($release) - { - $this->_stack->push(__FUNCTION__, 'error', array('release' => $release), - '<extbinrelease>/<zendextbinrelease> packages must specify a source code package with <srcuri>'); - } - - function _uriDepsCannotHaveVersioning($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '%type%: dependencies with a <uri> tag cannot have any versioning information'); - } - - function _conflictingDepsCannotHaveVersioning($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '%type%: conflicting dependencies cannot have versioning info, use <exclude> to ' . - 'exclude specific versions of a dependency'); - } - - function _DepchannelCannotBeUri($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('type' => $type), - '%type%: channel cannot be __uri, this is a pseudo-channel reserved for uri ' . - 'dependencies only'); - } - - function _bundledPackagesMustBeFilename() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - '<bundledpackage> tags must contain only the filename of a package release ' . - 'in the bundle'); - } - - function _binaryPackageMustBePackagename() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - '<binarypackage> tags must contain the name of a package that is ' . - 'a compiled version of this extsrc/zendextsrc package'); - } - - function _fileNotFound($file) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'File "%file%" in package.xml does not exist'); - } - - function _notInContents($file, $tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file, 'tag' => $tag), - '<%tag% name="%file%"> is invalid, file is not in <contents>'); - } - - function _cannotValidateNoPathSet() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'Cannot validate files, no path to package file is set (use setPackageFile())'); - } - - function _usesroletaskMustHaveChannelOrUri($role, $tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('role' => $role, 'tag' => $tag), - '<%tag%> for role "%role%" must contain either <uri>, or <channel> and <package>'); - } - - function _usesroletaskMustHavePackage($role, $tag) - { - $this->_stack->push(__FUNCTION__, 'error', array('role' => $role, 'tag' => $tag), - '<%tag%> for role "%role%" must contain <package>'); - } - - function _usesroletaskMustHaveRoleTask($tag, $type) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag, 'type' => $type), - '<%tag%> must contain <%type%> defining the %type% to be used'); - } - - function _cannotConflictWithAllOs($type) - { - $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag), - '%tag% cannot conflict with all OSes'); - } - - function _invalidDepGroupName($name) - { - $this->_stack->push(__FUNCTION__, 'error', array('name' => $name), - 'Invalid dependency group name "%name%"'); - } - - function _multipleToplevelDirNotAllowed() - { - $this->_stack->push(__FUNCTION__, 'error', array(), - 'Multiple top-level <dir> tags are not allowed. Enclose them ' . - 'in a <dir name="/">'); - } - - function _multipleInstallAs($file) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'Only one <install> tag is allowed for file "%file%"'); - } - - function _ignoreAndInstallAs($file) - { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'Cannot have both <ignore> and <install> tags for file "%file%"'); - } - - function _analyzeBundledPackages() - { - if (!$this->_isValid) { - return false; - } - if (!$this->_pf->getPackageType() == 'bundle') { - return false; - } - if (!isset($this->_pf->_packageFile)) { - return false; - } - $dir_prefix = dirname($this->_pf->_packageFile); - $common = new PEAR_Common; - $log = isset($this->_pf->_logger) ? array(&$this->_pf->_logger, 'log') : - array($common, 'log'); - $info = $this->_pf->getContents(); - $info = $info['bundledpackage']; - if (!is_array($info)) { - $info = array($info); - } - $pkg = &new PEAR_PackageFile($this->_pf->_config); - foreach ($info as $package) { - if (!file_exists($dir_prefix . DIRECTORY_SEPARATOR . $package)) { - $this->_fileNotFound($dir_prefix . DIRECTORY_SEPARATOR . $package); - $this->_isValid = 0; - continue; - } - call_user_func_array($log, array(1, "Analyzing bundled package $package")); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $ret = $pkg->fromAnyFile($dir_prefix . DIRECTORY_SEPARATOR . $package, - PEAR_VALIDATE_NORMAL); - PEAR::popErrorHandling(); - if (PEAR::isError($ret)) { - call_user_func_array($log, array(0, "ERROR: package $package is not a valid " . - 'package')); - $inf = $ret->getUserInfo(); - if (is_array($inf)) { - foreach ($inf as $err) { - call_user_func_array($log, array(1, $err['message'])); - } - } - return false; - } - } - return true; - } - - function _analyzePhpFiles() - { - if (!$this->_isValid) { - return false; - } - if (!isset($this->_pf->_packageFile)) { - $this->_cannotValidateNoPathSet(); - return false; - } - $dir_prefix = dirname($this->_pf->_packageFile); - $common = new PEAR_Common; - $log = isset($this->_pf->_logger) ? array(&$this->_pf->_logger, 'log') : - array(&$common, 'log'); - $info = $this->_pf->getContents(); - if (!$info || !isset($info['dir']['file'])) { - $this->_tagCannotBeEmpty('contents><dir'); - return false; - } - $info = $info['dir']['file']; - if (isset($info['attribs'])) { - $info = array($info); - } - $provides = array(); - foreach ($info as $fa) { - $fa = $fa['attribs']; - $file = $fa['name']; - if (!file_exists($dir_prefix . DIRECTORY_SEPARATOR . $file)) { - $this->_fileNotFound($dir_prefix . DIRECTORY_SEPARATOR . $file); - $this->_isValid = 0; - continue; - } - if (in_array($fa['role'], PEAR_Installer_Role::getPhpRoles()) && $dir_prefix) { - call_user_func_array($log, array(1, "Analyzing $file")); - $srcinfo = $this->analyzeSourceCode($dir_prefix . DIRECTORY_SEPARATOR . $file); - if ($srcinfo) { - $provides = array_merge($provides, $this->_buildProvidesArray($srcinfo)); - } - } - } - $this->_packageName = $pn = $this->_pf->getPackage(); - $pnl = strlen($pn); - foreach ($provides as $key => $what) { - if (isset($what['explicit']) || !$what) { - // skip conformance checks if the provides entry is - // specified in the package.xml file - continue; - } - extract($what); - if ($type == 'class') { - if (!strncasecmp($name, $pn, $pnl)) { - continue; - } - $this->_stack->push(__FUNCTION__, 'warning', - array('file' => $file, 'type' => $type, 'name' => $name, 'package' => $pn), - 'in %file%: %type% "%name%" not prefixed with package name "%package%"'); - } elseif ($type == 'function') { - if (strstr($name, '::') || !strncasecmp($name, $pn, $pnl)) { - continue; - } - $this->_stack->push(__FUNCTION__, 'warning', - array('file' => $file, 'type' => $type, 'name' => $name, 'package' => $pn), - 'in %file%: %type% "%name%" not prefixed with package name "%package%"'); - } - } - return $this->_isValid; - } - - /** - * Analyze the source code of the given PHP file - * - * @param string Filename of the PHP file - * @param boolean whether to analyze $file as the file contents - * @return mixed - */ - function analyzeSourceCode($file, $string = false) - { - if (!function_exists("token_get_all")) { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'Parser error: token_get_all() function must exist to analyze source code, PHP may have been compiled with --disable-tokenizer'); - return false; - } - if (!defined('T_DOC_COMMENT')) { - define('T_DOC_COMMENT', T_COMMENT); - } - if (!defined('T_INTERFACE')) { - define('T_INTERFACE', -1); - } - if (!defined('T_IMPLEMENTS')) { - define('T_IMPLEMENTS', -1); - } - if ($string) { - $contents = $file; - } else { - if (!$fp = @fopen($file, "r")) { - return false; - } - fclose($fp); - $contents = file_get_contents($file); - } - - // Silence this function so we can catch PHP Warnings and show our own custom message - $tokens = @token_get_all($contents); - if (isset($php_errormsg)) { - $pn = $this->_pf->getPackage(); - $this->_stack->push(__FUNCTION__, 'warning', - array('file' => $file, 'package' => $pn), - 'in %file%: Could not process file for unkown reasons,' . - ' possibly a PHP parse error in %file% from %package%'); - - } -/* - for ($i = 0; $i < sizeof($tokens); $i++) { - @list($token, $data) = $tokens[$i]; - if (is_string($token)) { - var_dump($token); - } else { - print token_name($token) . ' '; - var_dump(rtrim($data)); - } - } -*/ - $look_for = 0; - $paren_level = 0; - $bracket_level = 0; - $brace_level = 0; - $lastphpdoc = ''; - $current_class = ''; - $current_interface = ''; - $current_class_level = -1; - $current_function = ''; - $current_function_level = -1; - $declared_classes = array(); - $declared_interfaces = array(); - $declared_functions = array(); - $declared_methods = array(); - $used_classes = array(); - $used_functions = array(); - $extends = array(); - $implements = array(); - $nodeps = array(); - $inquote = false; - $interface = false; - for ($i = 0; $i < sizeof($tokens); $i++) { - if (is_array($tokens[$i])) { - list($token, $data) = $tokens[$i]; - } else { - $token = $tokens[$i]; - $data = ''; - } - if ($inquote) { - if ($token != '"' && $token != T_END_HEREDOC) { - continue; - } else { - $inquote = false; - continue; - } - } - switch ($token) { - case T_WHITESPACE : - continue; - case ';': - if ($interface) { - $current_function = ''; - $current_function_level = -1; - } - break; - case '"': - case T_START_HEREDOC: - $inquote = true; - break; - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case '{': $brace_level++; continue 2; - case '}': - $brace_level--; - if ($current_class_level == $brace_level) { - $current_class = ''; - $current_class_level = -1; - } - if ($current_function_level == $brace_level) { - $current_function = ''; - $current_function_level = -1; - } - continue 2; - case '[': $bracket_level++; continue 2; - case ']': $bracket_level--; continue 2; - case '(': $paren_level++; continue 2; - case ')': $paren_level--; continue 2; - case T_INTERFACE: - $interface = true; - case T_CLASS: - if (($current_class_level != -1) || ($current_function_level != -1)) { - $this->_stack->push(__FUNCTION__, 'error', array('file' => $file), - 'Parser error: invalid PHP found in file "%file%"'); - return false; - } - case T_FUNCTION: - case T_NEW: - case T_EXTENDS: - case T_IMPLEMENTS: - $look_for = $token; - continue 2; - case T_STRING: - if (version_compare(zend_version(), '2.0', '<')) { - if (in_array(strtolower($data), - array('public', 'private', 'protected', 'abstract', - 'interface', 'implements', 'throw') - )) { - $this->_stack->push(__FUNCTION__, 'warning', array( - 'file' => $file), - 'Error, PHP5 token encountered in %file%,' . - ' analysis should be in PHP5'); - } - } - if ($look_for == T_CLASS) { - $current_class = $data; - $current_class_level = $brace_level; - $declared_classes[] = $current_class; - } elseif ($look_for == T_INTERFACE) { - $current_interface = $data; - $current_class_level = $brace_level; - $declared_interfaces[] = $current_interface; - } elseif ($look_for == T_IMPLEMENTS) { - $implements[$current_class] = $data; - } elseif ($look_for == T_EXTENDS) { - $extends[$current_class] = $data; - } elseif ($look_for == T_FUNCTION) { - if ($current_class) { - $current_function = "$current_class::$data"; - $declared_methods[$current_class][] = $data; - } elseif ($current_interface) { - $current_function = "$current_interface::$data"; - $declared_methods[$current_interface][] = $data; - } else { - $current_function = $data; - $declared_functions[] = $current_function; - } - $current_function_level = $brace_level; - $m = array(); - } elseif ($look_for == T_NEW) { - $used_classes[$data] = true; - } - $look_for = 0; - continue 2; - case T_VARIABLE: - $look_for = 0; - continue 2; - case T_DOC_COMMENT: - case T_COMMENT: - if (preg_match('!^/\*\*\s!', $data)) { - $lastphpdoc = $data; - if (preg_match_all('/@nodep\s+(\S+)/', $lastphpdoc, $m)) { - $nodeps = array_merge($nodeps, $m[1]); - } - } - continue 2; - case T_DOUBLE_COLON: - if (!($tokens[$i - 1][0] == T_WHITESPACE || $tokens[$i - 1][0] == T_STRING)) { - $this->_stack->push(__FUNCTION__, 'warning', array('file' => $file), - 'Parser error: invalid PHP found in file "%file%"'); - return false; - } - $class = $tokens[$i - 1][1]; - if (strtolower($class) != 'parent') { - $used_classes[$class] = true; - } - continue 2; - } - } - return array( - "source_file" => $file, - "declared_classes" => $declared_classes, - "declared_interfaces" => $declared_interfaces, - "declared_methods" => $declared_methods, - "declared_functions" => $declared_functions, - "used_classes" => array_diff(array_keys($used_classes), $nodeps), - "inheritance" => $extends, - "implements" => $implements, - ); - } - - /** - * Build a "provides" array from data returned by - * analyzeSourceCode(). The format of the built array is like - * this: - * - * array( - * 'class;MyClass' => 'array('type' => 'class', 'name' => 'MyClass'), - * ... - * ) - * - * - * @param array $srcinfo array with information about a source file - * as returned by the analyzeSourceCode() method. - * - * @return void - * - * @access private - * - */ - function _buildProvidesArray($srcinfo) - { - if (!$this->_isValid) { - return array(); - } - $providesret = array(); - $file = basename($srcinfo['source_file']); - $pn = $this->_pf->getPackage(); - $pnl = strlen($pn); - foreach ($srcinfo['declared_classes'] as $class) { - $key = "class;$class"; - if (isset($providesret[$key])) { - continue; - } - $providesret[$key] = - array('file'=> $file, 'type' => 'class', 'name' => $class); - if (isset($srcinfo['inheritance'][$class])) { - $providesret[$key]['extends'] = - $srcinfo['inheritance'][$class]; - } - } - foreach ($srcinfo['declared_methods'] as $class => $methods) { - foreach ($methods as $method) { - $function = "$class::$method"; - $key = "function;$function"; - if ($method{0} == '_' || !strcasecmp($method, $class) || - isset($providesret[$key])) { - continue; - } - $providesret[$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - } - - foreach ($srcinfo['declared_functions'] as $function) { - $key = "function;$function"; - if ($function{0} == '_' || isset($providesret[$key])) { - continue; - } - if (!strstr($function, '::') && strncasecmp($function, $pn, $pnl)) { - $warnings[] = "in1 " . $file . ": function \"$function\" not prefixed with package name \"$pn\""; - } - $providesret[$key] = - array('file'=> $file, 'type' => 'function', 'name' => $function); - } - return $providesret; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/PackageFile/v2/rw.php b/src/vitis/vas/rest/class/PEAR/PackageFile/v2/rw.php deleted file mode 100755 index 383042bd75db0edbcc6d5660a884ccf62eed3f89..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/PackageFile/v2/rw.php +++ /dev/null @@ -1,1603 +0,0 @@ -<?php -/** - * PEAR_PackageFile_v2, package.xml version 2.0, read/write version - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: rw.php,v 1.22 2008/01/18 22:47:49 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a8 - */ -/** - * For base class - */ -require_once 'PEAR/PackageFile/v2.php'; -/** - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a8 - */ -class PEAR_PackageFile_v2_rw extends PEAR_PackageFile_v2 -{ - /** - * @param string Extension name - * @return bool success of operation - */ - function setProvidesExtension($extension) - { - if (in_array($this->getPackageType(), - array('extsrc', 'extbin', 'zendextsrc', 'zendextbin'))) { - if (!isset($this->_packageInfo['providesextension'])) { - // ensure that the channel tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('usesrole', 'usestask', 'srcpackage', 'srcuri', 'phprelease', - 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), - $extension, 'providesextension'); - } - $this->_packageInfo['providesextension'] = $extension; - return true; - } - return false; - } - - function setPackage($package) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['attribs'])) { - $this->_packageInfo = array_merge(array('attribs' => array( - 'version' => '2.0', - 'xmlns' => 'http://pear.php.net/dtd/package-2.0', - 'xmlns:tasks' => 'http://pear.php.net/dtd/tasks-1.0', - 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:schemaLocation' => 'http://pear.php.net/dtd/tasks-1.0 - http://pear.php.net/dtd/tasks-1.0.xsd - http://pear.php.net/dtd/package-2.0 - http://pear.php.net/dtd/package-2.0.xsd', - )), $this->_packageInfo); - } - if (!isset($this->_packageInfo['name'])) { - return $this->_packageInfo = array_merge(array('name' => $package), - $this->_packageInfo); - } - $this->_packageInfo['name'] = $package; - } - - /** - * set this as a package.xml version 2.1 - * @access private - */ - function _setPackageVersion2_1() - { - $info = array( - 'version' => '2.1', - 'xmlns' => 'http://pear.php.net/dtd/package-2.1', - 'xmlns:tasks' => 'http://pear.php.net/dtd/tasks-1.0', - 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:schemaLocation' => 'http://pear.php.net/dtd/tasks-1.0 - http://pear.php.net/dtd/tasks-1.0.xsd - http://pear.php.net/dtd/package-2.1 - http://pear.php.net/dtd/package-2.1.xsd', - ); - if (!isset($this->_packageInfo['attribs'])) { - $this->_packageInfo = array_merge(array('attribs' => $info), $this->_packageInfo); - } else { - $this->_packageInfo['attribs'] = $info; - } - } - - function setUri($uri) - { - unset($this->_packageInfo['channel']); - $this->_isValid = 0; - if (!isset($this->_packageInfo['uri'])) { - // ensure that the uri tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('extends', 'summary', 'description', 'lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $uri, 'uri'); - } - $this->_packageInfo['uri'] = $uri; - } - - function setChannel($channel) - { - unset($this->_packageInfo['uri']); - $this->_isValid = 0; - if (!isset($this->_packageInfo['channel'])) { - // ensure that the channel tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('extends', 'summary', 'description', 'lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $channel, 'channel'); - } - $this->_packageInfo['channel'] = $channel; - } - - function setExtends($extends) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['extends'])) { - // ensure that the extends tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('summary', 'description', 'lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $extends, 'extends'); - } - $this->_packageInfo['extends'] = $extends; - } - - function setSummary($summary) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['summary'])) { - // ensure that the summary tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('description', 'lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $summary, 'summary'); - } - $this->_packageInfo['summary'] = $summary; - } - - function setDescription($desc) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['description'])) { - // ensure that the description tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $desc, 'description'); - } - $this->_packageInfo['description'] = $desc; - } - - /** - * Adds a new maintainer - no checking of duplicates is performed, use - * updatemaintainer for that purpose. - */ - function addMaintainer($role, $handle, $name, $email, $active = 'yes') - { - if (!in_array($role, array('lead', 'developer', 'contributor', 'helper'))) { - return false; - } - if (isset($this->_packageInfo[$role])) { - if (!isset($this->_packageInfo[$role][0])) { - $this->_packageInfo[$role] = array($this->_packageInfo[$role]); - } - $this->_packageInfo[$role][] = - array( - 'name' => $name, - 'user' => $handle, - 'email' => $email, - 'active' => $active, - ); - } else { - $testarr = array('lead', - 'developer', 'contributor', 'helper', 'date', 'time', 'version', - 'stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', - 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'); - foreach (array('lead', 'developer', 'contributor', 'helper') as $testrole) { - array_shift($testarr); - if ($role == $testrole) { - break; - } - } - if (!isset($this->_packageInfo[$role])) { - // ensure that the extends tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, $testarr, - array(), $role); - } - $this->_packageInfo[$role] = - array( - 'name' => $name, - 'user' => $handle, - 'email' => $email, - 'active' => $active, - ); - } - $this->_isValid = 0; - } - - function updateMaintainer($newrole, $handle, $name, $email, $active = 'yes') - { - $found = false; - foreach (array('lead', 'developer', 'contributor', 'helper') as $role) { - if (!isset($this->_packageInfo[$role])) { - continue; - } - $info = $this->_packageInfo[$role]; - if (!isset($info[0])) { - if ($info['user'] == $handle) { - $found = true; - break; - } - } - foreach ($info as $i => $maintainer) { - if ($maintainer['user'] == $handle) { - $found = $i; - break 2; - } - } - } - if ($found === false) { - return $this->addMaintainer($newrole, $handle, $name, $email, $active); - } - if ($found !== false) { - if ($found === true) { - unset($this->_packageInfo[$role]); - } else { - unset($this->_packageInfo[$role][$found]); - $this->_packageInfo[$role] = array_values($this->_packageInfo[$role]); - } - } - $this->addMaintainer($newrole, $handle, $name, $email, $active); - $this->_isValid = 0; - } - - function deleteMaintainer($handle) - { - $found = false; - foreach (array('lead', 'developer', 'contributor', 'helper') as $role) { - if (!isset($this->_packageInfo[$role])) { - continue; - } - if (!isset($this->_packageInfo[$role][0])) { - $this->_packageInfo[$role] = array($this->_packageInfo[$role]); - } - foreach ($this->_packageInfo[$role] as $i => $maintainer) { - if ($maintainer['user'] == $handle) { - $found = $i; - break; - } - } - if ($found !== false) { - unset($this->_packageInfo[$role][$found]); - if (!count($this->_packageInfo[$role]) && $role == 'lead') { - $this->_isValid = 0; - } - if (!count($this->_packageInfo[$role])) { - unset($this->_packageInfo[$role]); - return true; - } - $this->_packageInfo[$role] = - array_values($this->_packageInfo[$role]); - if (count($this->_packageInfo[$role]) == 1) { - $this->_packageInfo[$role] = $this->_packageInfo[$role][0]; - } - return true; - } - if (count($this->_packageInfo[$role]) == 1) { - $this->_packageInfo[$role] = $this->_packageInfo[$role][0]; - } - } - return false; - } - - function setReleaseVersion($version) - { - if (isset($this->_packageInfo['version']) && - isset($this->_packageInfo['version']['release'])) { - unset($this->_packageInfo['version']['release']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $version, array( - 'version' => array('stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), - 'release' => array('api'))); - $this->_isValid = 0; - } - - function setAPIVersion($version) - { - if (isset($this->_packageInfo['version']) && - isset($this->_packageInfo['version']['api'])) { - unset($this->_packageInfo['version']['api']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $version, array( - 'version' => array('stability', 'license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), - 'api' => array())); - $this->_isValid = 0; - } - - /** - * snapshot|devel|alpha|beta|stable - */ - function setReleaseStability($state) - { - if (isset($this->_packageInfo['stability']) && - isset($this->_packageInfo['stability']['release'])) { - unset($this->_packageInfo['stability']['release']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $state, array( - 'stability' => array('license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), - 'release' => array('api'))); - $this->_isValid = 0; - } - - /** - * @param devel|alpha|beta|stable - */ - function setAPIStability($state) - { - if (isset($this->_packageInfo['stability']) && - isset($this->_packageInfo['stability']['api'])) { - unset($this->_packageInfo['stability']['api']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $state, array( - 'stability' => array('license', 'notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), - 'api' => array())); - $this->_isValid = 0; - } - - function setLicense($license, $uri = false, $filesource = false) - { - if (!isset($this->_packageInfo['license'])) { - // ensure that the license tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('notes', 'contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), 0, 'license'); - } - if ($uri || $filesource) { - $attribs = array(); - if ($uri) { - $attribs['uri'] = $uri; - } - $uri = true; // for test below - if ($filesource) { - $attribs['filesource'] = $filesource; - } - } - $license = $uri ? array('attribs' => $attribs, '_content' => $license) : $license; - $this->_packageInfo['license'] = $license; - $this->_isValid = 0; - } - - function setNotes($notes) - { - $this->_isValid = 0; - if (!isset($this->_packageInfo['notes'])) { - // ensure that the notes tag is set up in the right location - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('contents', 'compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'extbinrelease', 'bundle', 'changelog'), $notes, 'notes'); - } - $this->_packageInfo['notes'] = $notes; - } - - /** - * This is only used at install-time, after all serialization - * is over. - * @param string file name - * @param string installed path - */ - function setInstalledAs($file, $path) - { - if ($path) { - return $this->_packageInfo['filelist'][$file]['installed_as'] = $path; - } - unset($this->_packageInfo['filelist'][$file]['installed_as']); - } - - /** - * This is only used at install-time, after all serialization - * is over. - */ - function installedFile($file, $atts) - { - if (isset($this->_packageInfo['filelist'][$file])) { - $this->_packageInfo['filelist'][$file] = - array_merge($this->_packageInfo['filelist'][$file], $atts['attribs']); - } else { - $this->_packageInfo['filelist'][$file] = $atts['attribs']; - } - } - - /** - * Reset the listing of package contents - * @param string base installation dir for the whole package, if any - */ - function clearContents($baseinstall = false) - { - $this->_filesValid = false; - $this->_isValid = 0; - if (!isset($this->_packageInfo['contents'])) { - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('compatible', - 'dependencies', 'providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', - 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), array(), 'contents'); - } - if ($this->getPackageType() != 'bundle') { - $this->_packageInfo['contents'] = - array('dir' => array('attribs' => array('name' => '/'))); - if ($baseinstall) { - $this->_packageInfo['contents']['dir']['attribs']['baseinstalldir'] = $baseinstall; - } - } else { - $this->_packageInfo['contents'] = array('bundledpackage' => array()); - } - } - - /** - * @param string relative path of the bundled package. - */ - function addBundledPackage($path) - { - if ($this->getPackageType() != 'bundle') { - return false; - } - $this->_filesValid = false; - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $path, array( - 'contents' => array('compatible', 'dependencies', 'providesextension', - 'usesrole', 'usestask', 'srcpackage', 'srcuri', 'phprelease', - 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), - 'bundledpackage' => array())); - } - - /** - * @param string file name - * @param PEAR_Task_Common a read/write task - */ - function addTaskToFile($filename, $task) - { - if (!method_exists($task, 'getXml')) { - return false; - } - if (!method_exists($task, 'getName')) { - return false; - } - if (!method_exists($task, 'validate')) { - return false; - } - if (!$task->validate()) { - return false; - } - if (!isset($this->_packageInfo['contents']['dir']['file'])) { - return false; - } - $this->getTasksNs(); // discover the tasks namespace if not done already - $files = $this->_packageInfo['contents']['dir']['file']; - if (!isset($files[0])) { - $files = array($files); - $ind = false; - } else { - $ind = true; - } - foreach ($files as $i => $file) { - if (isset($file['attribs'])) { - if ($file['attribs']['name'] == $filename) { - if ($ind) { - $t = isset($this->_packageInfo['contents']['dir']['file'][$i] - ['attribs'][$this->_tasksNs . - ':' . $task->getName()]) ? - $this->_packageInfo['contents']['dir']['file'][$i] - ['attribs'][$this->_tasksNs . - ':' . $task->getName()] : false; - if ($t && !isset($t[0])) { - $this->_packageInfo['contents']['dir']['file'][$i] - [$this->_tasksNs . ':' . $task->getName()] = array($t); - } - $this->_packageInfo['contents']['dir']['file'][$i][$this->_tasksNs . - ':' . $task->getName()][] = $task->getXml(); - } else { - $t = isset($this->_packageInfo['contents']['dir']['file'] - ['attribs'][$this->_tasksNs . - ':' . $task->getName()]) ? $this->_packageInfo['contents']['dir']['file'] - ['attribs'][$this->_tasksNs . - ':' . $task->getName()] : false; - if ($t && !isset($t[0])) { - $this->_packageInfo['contents']['dir']['file'] - [$this->_tasksNs . ':' . $task->getName()] = array($t); - } - $this->_packageInfo['contents']['dir']['file'][$this->_tasksNs . - ':' . $task->getName()][] = $task->getXml(); - } - return true; - } - } - } - return false; - } - - /** - * @param string path to the file - * @param string filename - * @param array extra attributes - */ - function addFile($dir, $file, $attrs) - { - if ($this->getPackageType() == 'bundle') { - return false; - } - $this->_filesValid = false; - $this->_isValid = 0; - $dir = preg_replace(array('!\\\\+!', '!/+!'), array('/', '/'), $dir); - if ($dir == '/' || $dir == '') { - $dir = ''; - } else { - $dir .= '/'; - } - $attrs['name'] = $dir . $file; - if (!isset($this->_packageInfo['contents'])) { - // ensure that the contents tag is set up - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, - array('compatible', 'dependencies', 'providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', - 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), array(), 'contents'); - } - if (isset($this->_packageInfo['contents']['dir']['file'])) { - if (!isset($this->_packageInfo['contents']['dir']['file'][0])) { - $this->_packageInfo['contents']['dir']['file'] = - array($this->_packageInfo['contents']['dir']['file']); - } - $this->_packageInfo['contents']['dir']['file'][]['attribs'] = $attrs; - } else { - $this->_packageInfo['contents']['dir']['file']['attribs'] = $attrs; - } - } - - /** - * @param string Dependent package name - * @param string Dependent package's channel name - * @param string minimum version of specified package that this release is guaranteed to be - * compatible with - * @param string maximum version of specified package that this release is guaranteed to be - * compatible with - * @param string versions of specified package that this release is not compatible with - */ - function addCompatiblePackage($name, $channel, $min, $max, $exclude = false) - { - $this->_isValid = 0; - $set = array( - 'name' => $name, - 'channel' => $channel, - 'min' => $min, - 'max' => $max, - ); - if ($exclude) { - $set['exclude'] = $exclude; - } - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $set, array( - 'compatible' => array('dependencies', 'providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog') - )); - } - - /** - * Removes the <usesrole> tag entirely - */ - function resetUsesrole() - { - if (isset($this->_packageInfo['usesrole'])) { - unset($this->_packageInfo['usesrole']); - } - } - - /** - * @param string - * @param string package name or uri - * @param string channel name if non-uri - */ - function addUsesrole($role, $packageOrUri, $channel = false) { - $set = array('role' => $role); - if ($channel) { - $set['package'] = $packageOrUri; - $set['channel'] = $channel; - } else { - $set['uri'] = $packageOrUri; - } - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $set, array( - 'usesrole' => array('usestask', 'srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog') - )); - } - - /** - * Removes the <usestask> tag entirely - */ - function resetUsestask() - { - if (isset($this->_packageInfo['usestask'])) { - unset($this->_packageInfo['usestask']); - } - } - - - /** - * @param string - * @param string package name or uri - * @param string channel name if non-uri - */ - function addUsestask($task, $packageOrUri, $channel = false) { - $set = array('task' => $task); - if ($channel) { - $set['package'] = $packageOrUri; - $set['channel'] = $channel; - } else { - $set['uri'] = $packageOrUri; - } - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $set, array( - 'usestask' => array('srcpackage', 'srcuri', - 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog') - )); - } - - /** - * Remove all compatible tags - */ - function clearCompatible() - { - unset($this->_packageInfo['compatible']); - } - - /** - * Reset dependencies prior to adding new ones - */ - function clearDeps() - { - if (!isset($this->_packageInfo['dependencies'])) { - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, array(), - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'))); - } - $this->_packageInfo['dependencies'] = array(); - } - - /** - * @param string minimum PHP version allowed - * @param string maximum PHP version allowed - * @param array $exclude incompatible PHP versions - */ - function setPhpDep($min, $max = false, $exclude = false) - { - $this->_isValid = 0; - $dep = - array( - 'min' => $min, - ); - if ($max) { - $dep['max'] = $max; - } - if ($exclude) { - if (count($exclude) == 1) { - $exclude = $exclude[0]; - } - $dep['exclude'] = $exclude; - } - if (isset($this->_packageInfo['dependencies']['required']['php'])) { - $this->_stack->push(__FUNCTION__, 'warning', array('dep' => - $this->_packageInfo['dependencies']['required']['php']), - 'warning: PHP dependency already exists, overwriting'); - unset($this->_packageInfo['dependencies']['required']['php']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'php' => array('pearinstaller', 'package', 'subpackage', 'extension', 'os', 'arch') - )); - return true; - } - - /** - * @param string minimum allowed PEAR installer version - * @param string maximum allowed PEAR installer version - * @param string recommended PEAR installer version - * @param array incompatible version of the PEAR installer - */ - function setPearinstallerDep($min, $max = false, $recommended = false, $exclude = false) - { - $this->_isValid = 0; - $dep = - array( - 'min' => $min, - ); - if ($max) { - $dep['max'] = $max; - } - if ($recommended) { - $dep['recommended'] = $recommended; - } - if ($exclude) { - if (count($exclude) == 1) { - $exclude = $exclude[0]; - } - $dep['exclude'] = $exclude; - } - if (isset($this->_packageInfo['dependencies']['required']['pearinstaller'])) { - $this->_stack->push(__FUNCTION__, 'warning', array('dep' => - $this->_packageInfo['dependencies']['required']['pearinstaller']), - 'warning: PEAR Installer dependency already exists, overwriting'); - unset($this->_packageInfo['dependencies']['required']['pearinstaller']); - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'pearinstaller' => array('package', 'subpackage', 'extension', 'os', 'arch') - )); - } - - /** - * Mark a package as conflicting with this package - * @param string package name - * @param string package channel - * @param string extension this package provides, if any - * @param string|false minimum version required - * @param string|false maximum version allowed - * @param array|false versions to exclude from installation - */ - function addConflictingPackageDepWithChannel($name, $channel, - $providesextension = false, $min = false, $max = false, $exclude = false) - { - $this->_isValid = 0; - $dep = $this->_constructDep($name, $channel, false, $min, $max, false, - $exclude, $providesextension, false, true); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'package' => array('subpackage', 'extension', 'os', 'arch') - )); - } - - /** - * Mark a package as conflicting with this package - * @param string package name - * @param string package channel - * @param string extension this package provides, if any - */ - function addConflictingPackageDepWithUri($name, $uri, $providesextension = false) - { - $this->_isValid = 0; - $dep = - array( - 'name' => $name, - 'uri' => $uri, - 'conflicts' => '', - ); - if ($providesextension) { - $dep['providesextension'] = $providesextension; - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'package' => array('subpackage', 'extension', 'os', 'arch') - )); - } - - function addDependencyGroup($name, $hint) - { - $this->_isValid = 0; - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, - array('attribs' => array('name' => $name, 'hint' => $hint)), - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'group' => array(), - )); - } - - /** - * @param string package name - * @param string|false channel name, false if this is a uri - * @param string|false uri name, false if this is a channel - * @param string|false minimum version required - * @param string|false maximum version allowed - * @param string|false recommended installation version - * @param array|false versions to exclude from installation - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - * @param bool if true, tells the installer to negate this dependency (conflicts) - * @return array - * @access private - */ - function _constructDep($name, $channel, $uri, $min, $max, $recommended, $exclude, - $providesextension = false, $nodefault = false, - $conflicts = false) - { - $dep = - array( - 'name' => $name, - ); - if ($channel) { - $dep['channel'] = $channel; - } elseif ($uri) { - $dep['uri'] = $uri; - } - if ($min) { - $dep['min'] = $min; - } - if ($max) { - $dep['max'] = $max; - } - if ($recommended) { - $dep['recommended'] = $recommended; - } - if ($exclude) { - if (is_array($exclude) && count($exclude) == 1) { - $exclude = $exclude[0]; - } - $dep['exclude'] = $exclude; - } - if ($conflicts) { - $dep['conflicts'] = ''; - } - if ($nodefault) { - $dep['nodefault'] = ''; - } - if ($providesextension) { - $dep['providesextension'] = $providesextension; - } - return $dep; - } - - /** - * @param package|subpackage - * @param string group name - * @param string package name - * @param string package channel - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param array|false optional excluded versions - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - * @return bool false if the dependency group has not been initialized with - * {@link addDependencyGroup()}, or a subpackage is added with - * a providesextension - */ - function addGroupPackageDepWithChannel($type, $groupname, $name, $channel, $min = false, - $max = false, $recommended = false, $exclude = false, - $providesextension = false, $nodefault = false) - { - if ($type == 'subpackage' && $providesextension) { - return false; // subpackages must be php packages - } - $dep = $this->_constructDep($name, $channel, false, $min, $max, $recommended, $exclude, - $providesextension, $nodefault); - return $this->_addGroupDependency($type, $dep, $groupname); - } - - /** - * @param package|subpackage - * @param string group name - * @param string package name - * @param string package uri - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - * @return bool false if the dependency group has not been initialized with - * {@link addDependencyGroup()} - */ - function addGroupPackageDepWithURI($type, $groupname, $name, $uri, $providesextension = false, - $nodefault = false) - { - if ($type == 'subpackage' && $providesextension) { - return false; // subpackages must be php packages - } - $dep = $this->_constructDep($name, false, $uri, false, false, false, false, - $providesextension, $nodefault); - return $this->_addGroupDependency($type, $dep, $groupname); - } - - /** - * @param string group name (must be pre-existing) - * @param string extension name - * @param string minimum version allowed - * @param string maximum version allowed - * @param string recommended version - * @param array incompatible versions - */ - function addGroupExtensionDep($groupname, $name, $min = false, $max = false, - $recommended = false, $exclude = false) - { - $this->_isValid = 0; - $dep = $this->_constructDep($name, false, false, $min, $max, $recommended, $exclude); - return $this->_addGroupDependency('extension', $dep, $groupname); - } - - /** - * @param package|subpackage|extension - * @param array dependency contents - * @param string name of the dependency group to add this to - * @return boolean - * @access private - */ - function _addGroupDependency($type, $dep, $groupname) - { - $arr = array('subpackage', 'extension'); - if ($type != 'package') { - array_shift($arr); - } - if ($type == 'extension') { - array_shift($arr); - } - if (!isset($this->_packageInfo['dependencies']['group'])) { - return false; - } else { - if (!isset($this->_packageInfo['dependencies']['group'][0])) { - if ($this->_packageInfo['dependencies']['group']['attribs']['name'] == $groupname) { - $this->_packageInfo['dependencies']['group'] = $this->_mergeTag( - $this->_packageInfo['dependencies']['group'], $dep, - array( - $type => $arr - )); - $this->_isValid = 0; - return true; - } else { - return false; - } - } else { - foreach ($this->_packageInfo['dependencies']['group'] as $i => $group) { - if ($group['attribs']['name'] == $groupname) { - $this->_packageInfo['dependencies']['group'][$i] = $this->_mergeTag( - $this->_packageInfo['dependencies']['group'][$i], $dep, - array( - $type => $arr - )); - $this->_isValid = 0; - return true; - } - } - return false; - } - } - } - - /** - * @param optional|required - * @param string package name - * @param string package channel - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - * @param array|false optional excluded versions - */ - function addPackageDepWithChannel($type, $name, $channel, $min = false, $max = false, - $recommended = false, $exclude = false, - $providesextension = false, $nodefault = false) - { - if (!in_array($type, array('optional', 'required'), true)) { - $type = 'required'; - } - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, $channel, false, $min, $max, $recommended, $exclude, - $providesextension, $nodefault); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'package' => array('subpackage', 'extension', 'os', 'arch') - )); - } - - /** - * @param optional|required - * @param string name of the package - * @param string uri of the package - * @param string extension this package provides, if any - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - */ - function addPackageDepWithUri($type, $name, $uri, $providesextension = false, - $nodefault = false) - { - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, false, $uri, false, false, false, false, - $providesextension, $nodefault); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'package' => array('subpackage', 'extension', 'os', 'arch') - )); - } - - /** - * @param optional|required optional, required - * @param string package name - * @param string package channel - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param array incompatible versions - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - */ - function addSubpackageDepWithChannel($type, $name, $channel, $min = false, $max = false, - $recommended = false, $exclude = false, - $nodefault = false) - { - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, $channel, false, $min, $max, $recommended, $exclude, - $nodefault); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'subpackage' => array('extension', 'os', 'arch') - )); - } - - /** - * @param optional|required optional, required - * @param string package name - * @param string package uri for download - * @param bool if true, tells the installer to ignore the default optional dependency group - * when installing this package - */ - function addSubpackageDepWithUri($type, $name, $uri, $nodefault = false) - { - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, false, $uri, false, false, false, false, $nodefault); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'subpackage' => array('extension', 'os', 'arch') - )); - } - - /** - * @param optional|required optional, required - * @param string extension name - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param array incompatible versions - */ - function addExtensionDep($type, $name, $min = false, $max = false, $recommended = false, - $exclude = false) - { - $this->_isValid = 0; - $arr = array('optional', 'group'); - if ($type != 'required') { - array_shift($arr); - } - $dep = $this->_constructDep($name, false, false, $min, $max, $recommended, $exclude); - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - $type => $arr, - 'extension' => array('os', 'arch') - )); - } - - /** - * @param string Operating system name - * @param boolean true if this package cannot be installed on this OS - */ - function addOsDep($name, $conflicts = false) - { - $this->_isValid = 0; - $dep = array('name' => $name); - if ($conflicts) { - $dep['conflicts'] = ''; - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'os' => array('arch') - )); - } - - /** - * @param string Architecture matching pattern - * @param boolean true if this package cannot be installed on this architecture - */ - function addArchDep($pattern, $conflicts = false) - { - $this->_isValid = 0; - $dep = array('pattern' => $pattern); - if ($conflicts) { - $dep['conflicts'] = ''; - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep, - array( - 'dependencies' => array('providesextension', 'usesrole', 'usestask', - 'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'), - 'required' => array('optional', 'group'), - 'arch' => array() - )); - } - - /** - * Set the kind of package, and erase all release tags - * - * - a php package is a PEAR-style package - * - an extbin package is a PECL-style extension binary - * - an extsrc package is a PECL-style source for a binary - * - an zendextbin package is a PECL-style zend extension binary - * - an zendextsrc package is a PECL-style source for a zend extension binary - * - a bundle package is a collection of other pre-packaged packages - * @param php|extbin|extsrc|zendextsrc|zendextbin|bundle - * @return bool success - */ - function setPackageType($type) - { - $this->_isValid = 0; - if (!in_array($type, array('php', 'extbin', 'extsrc', 'zendextsrc', - 'zendextbin', 'bundle'))) { - return false; - } - if (in_array($type, array('zendextsrc', 'zendextbin'))) { - $this->_setPackageVersion2_1(); - } - if ($type != 'bundle') { - $type .= 'release'; - } - foreach (array('phprelease', 'extbinrelease', 'extsrcrelease', - 'zendextsrcrelease', 'zendextbinrelease', 'bundle') as $test) { - unset($this->_packageInfo[$test]); - } - if (!isset($this->_packageInfo[$type])) { - // ensure that the release tag is set up - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, array('changelog'), - array(), $type); - } - $this->_packageInfo[$type] = array(); - return true; - } - - /** - * @return bool true if package type is set up - */ - function addRelease() - { - if ($type = $this->getPackageType()) { - if ($type != 'bundle') { - $type .= 'release'; - } - $this->_packageInfo = $this->_mergeTag($this->_packageInfo, array(), - array($type => array('changelog'))); - return true; - } - return false; - } - - /** - * Get the current release tag in order to add to it - * @param bool returns only releases that have installcondition if true - * @return array|null - */ - function &_getCurrentRelease($strict = true) - { - if ($p = $this->getPackageType()) { - if ($strict) { - if ($p == 'extsrc' || $p == 'zendextsrc') { - $a = null; - return $a; - } - } - if ($p != 'bundle') { - $p .= 'release'; - } - if (isset($this->_packageInfo[$p][0])) { - return $this->_packageInfo[$p][count($this->_packageInfo[$p]) - 1]; - } else { - return $this->_packageInfo[$p]; - } - } else { - $a = null; - return $a; - } - } - - /** - * Add a file to the current release that should be installed under a different name - * @param string <contents> path to file - * @param string name the file should be installed as - */ - function addInstallAs($path, $as) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - $r = $this->_mergeTag($r, array('attribs' => array('name' => $path, 'as' => $as)), - array( - 'filelist' => array(), - 'install' => array('ignore') - )); - } - - /** - * Add a file to the current release that should be ignored - * @param string <contents> path to file - * @return bool success of operation - */ - function addIgnore($path) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - $r = $this->_mergeTag($r, array('attribs' => array('name' => $path)), - array( - 'filelist' => array(), - 'ignore' => array() - )); - } - - /** - * Add an extension binary package for this extension source code release - * - * Note that the package must be from the same channel as the extension source package - * @param string - */ - function addBinarypackage($package) - { - if ($this->getPackageType() != 'extsrc' && $this->getPackageType() != 'zendextsrc') { - return false; - } - $r = &$this->_getCurrentRelease(false); - if ($r === null) { - return false; - } - $this->_isValid = 0; - $r = $this->_mergeTag($r, $package, - array( - 'binarypackage' => array('filelist'), - )); - } - - /** - * Add a configureoption to an extension source package - * @param string - * @param string - * @param string - */ - function addConfigureOption($name, $prompt, $default = null) - { - if ($this->getPackageType() != 'extsrc' && $this->getPackageType() != 'zendextsrc') { - return false; - } - $r = &$this->_getCurrentRelease(false); - if ($r === null) { - return false; - } - $opt = array('attribs' => array('name' => $name, 'prompt' => $prompt)); - if ($default !== null) { - $opt['attribs']['default'] = $default; - } - $this->_isValid = 0; - $r = $this->_mergeTag($r, $opt, - array( - 'configureoption' => array('binarypackage', 'filelist'), - )); - } - - /** - * Set an installation condition based on php version for the current release set - * @param string minimum version - * @param string maximum version - * @param false|array incompatible versions of PHP - */ - function setPhpInstallCondition($min, $max, $exclude = false) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - if (isset($r['installconditions']['php'])) { - unset($r['installconditions']['php']); - } - $dep = array('min' => $min, 'max' => $max); - if ($exclude) { - if (is_array($exclude) && count($exclude) == 1) { - $exclude = $exclude[0]; - } - $dep['exclude'] = $exclude; - } - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('configureoption', 'binarypackage', - 'filelist'), - 'php' => array('extension', 'os', 'arch') - )); - } else { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('filelist'), - 'php' => array('extension', 'os', 'arch') - )); - } - } - - /** - * @param optional|required optional, required - * @param string extension name - * @param string minimum version - * @param string maximum version - * @param string recommended version - * @param array incompatible versions - */ - function addExtensionInstallCondition($name, $min = false, $max = false, $recommended = false, - $exclude = false) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - $dep = $this->_constructDep($name, false, false, $min, $max, $recommended, $exclude); - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('configureoption', 'binarypackage', - 'filelist'), - 'extension' => array('os', 'arch') - )); - } else { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('filelist'), - 'extension' => array('os', 'arch') - )); - } - } - - /** - * Set an installation condition based on operating system for the current release set - * @param string OS name - * @param bool whether this OS is incompatible with the current release - */ - function setOsInstallCondition($name, $conflicts = false) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - if (isset($r['installconditions']['os'])) { - unset($r['installconditions']['os']); - } - $dep = array('name' => $name); - if ($conflicts) { - $dep['conflicts'] = ''; - } - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('configureoption', 'binarypackage', - 'filelist'), - 'os' => array('arch') - )); - } else { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('filelist'), - 'os' => array('arch') - )); - } - } - - /** - * Set an installation condition based on architecture for the current release set - * @param string architecture pattern - * @param bool whether this arch is incompatible with the current release - */ - function setArchInstallCondition($pattern, $conflicts = false) - { - $r = &$this->_getCurrentRelease(); - if ($r === null) { - return false; - } - $this->_isValid = 0; - if (isset($r['installconditions']['arch'])) { - unset($r['installconditions']['arch']); - } - $dep = array('pattern' => $pattern); - if ($conflicts) { - $dep['conflicts'] = ''; - } - if ($this->getPackageType() == 'extsrc' || $this->getPackageType() == 'zendextsrc') { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('configureoption', 'binarypackage', - 'filelist'), - 'arch' => array() - )); - } else { - $r = $this->_mergeTag($r, $dep, - array( - 'installconditions' => array('filelist'), - 'arch' => array() - )); - } - } - - /** - * For extension binary releases, this is used to specify either the - * static URI to a source package, or the package name and channel of the extsrc/zendextsrc - * package it is based on. - * @param string Package name, or full URI to source package (extsrc/zendextsrc type) - */ - function setSourcePackage($packageOrUri) - { - $this->_isValid = 0; - if (isset($this->_packageInfo['channel'])) { - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, array('phprelease', - 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), - $packageOrUri, 'srcpackage'); - } else { - $this->_packageInfo = $this->_insertBefore($this->_packageInfo, array('phprelease', - 'extsrcrelease', 'extbinrelease', 'zendextsrcrelease', 'zendextbinrelease', - 'bundle', 'changelog'), $packageOrUri, 'srcuri'); - } - } - - /** - * Generate a valid change log entry from the current package.xml - * @param string|false - */ - function generateChangeLogEntry($notes = false) - { - return array( - 'version' => - array( - 'release' => $this->getVersion('release'), - 'api' => $this->getVersion('api'), - ), - 'stability' => - $this->getStability(), - 'date' => $this->getDate(), - 'license' => $this->getLicense(true), - 'notes' => $notes ? $notes : $this->getNotes() - ); - } - - /** - * @param string release version to set change log notes for - * @param array output of {@link generateChangeLogEntry()} - */ - function setChangelogEntry($releaseversion, $contents) - { - if (!isset($this->_packageInfo['changelog'])) { - $this->_packageInfo['changelog']['release'] = $contents; - return; - } - if (!isset($this->_packageInfo['changelog']['release'][0])) { - if ($this->_packageInfo['changelog']['release']['version']['release'] == $releaseversion) { - $this->_packageInfo['changelog']['release'] = array( - $this->_packageInfo['changelog']['release']); - } else { - $this->_packageInfo['changelog']['release'] = array( - $this->_packageInfo['changelog']['release']); - return $this->_packageInfo['changelog']['release'][] = $contents; - } - } - foreach($this->_packageInfo['changelog']['release'] as $index => $changelog) { - if (isset($changelog['version']) && - strnatcasecmp($changelog['version']['release'], $releaseversion) == 0) { - $curlog = $index; - } - } - if (isset($curlog)) { - $this->_packageInfo['changelog']['release'][$curlog] = $contents; - } else { - $this->_packageInfo['changelog']['release'][] = $contents; - } - } - - /** - * Remove the changelog entirely - */ - function clearChangeLog() - { - unset($this->_packageInfo['changelog']); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Packager.php b/src/vitis/vas/rest/class/PEAR/Packager.php deleted file mode 100755 index bae9282311b788106b311e788d5ca82109494cc1..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Packager.php +++ /dev/null @@ -1,199 +0,0 @@ -<?php -/** - * PEAR_Packager for generating releases - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V. V. Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Packager.php,v 1.71 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * base class - */ -require_once 'PEAR/Common.php'; -require_once 'PEAR/PackageFile.php'; -require_once 'System.php'; - -/** - * Administration class used to make a PEAR release tarball. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Packager extends PEAR_Common -{ - /** - * @var PEAR_Registry - */ - var $_registry; - // {{{ package() - - function package($pkgfile = null, $compress = true, $pkg2 = null) - { - // {{{ validate supplied package.xml file - if (empty($pkgfile)) { - $pkgfile = 'package.xml'; - } - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pkg = &new PEAR_PackageFile($this->config, $this->debug); - $pf = &$pkg->fromPackageFile($pkgfile, PEAR_VALIDATE_NORMAL); - $main = &$pf; - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pf)) { - if (is_array($pf->getUserInfo())) { - foreach ($pf->getUserInfo() as $error) { - $this->log(0, 'Error: ' . $error['message']); - } - } - $this->log(0, $pf->getMessage()); - return $this->raiseError("Cannot package, errors in package file"); - } else { - foreach ($pf->getValidationWarnings() as $warning) { - $this->log(1, 'Warning: ' . $warning['message']); - } - } - - // }}} - if ($pkg2) { - $this->log(0, 'Attempting to process the second package file'); - PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); - $pf2 = &$pkg->fromPackageFile($pkg2, PEAR_VALIDATE_NORMAL); - PEAR::staticPopErrorHandling(); - if (PEAR::isError($pf2)) { - if (is_array($pf2->getUserInfo())) { - foreach ($pf2->getUserInfo() as $error) { - $this->log(0, 'Error: ' . $error['message']); - } - } - $this->log(0, $pf2->getMessage()); - return $this->raiseError("Cannot package, errors in second package file"); - } else { - foreach ($pf2->getValidationWarnings() as $warning) { - $this->log(1, 'Warning: ' . $warning['message']); - } - } - if ($pf2->getPackagexmlVersion() == '2.0' || - $pf2->getPackagexmlVersion() == '2.1') { - $main = &$pf2; - $other = &$pf; - } else { - $main = &$pf; - $other = &$pf2; - } - if ($main->getPackagexmlVersion() != '2.0' && - $main->getPackagexmlVersion() != '2.1') { - return PEAR::raiseError('Error: cannot package two package.xml version 1.0, can ' . - 'only package together a package.xml 1.0 and package.xml 2.0'); - } - if ($other->getPackagexmlVersion() != '1.0') { - return PEAR::raiseError('Error: cannot package two package.xml version 2.0, can ' . - 'only package together a package.xml 1.0 and package.xml 2.0'); - } - } - $main->setLogger($this); - if (!$main->validate(PEAR_VALIDATE_PACKAGING)) { - foreach ($main->getValidationWarnings() as $warning) { - $this->log(0, 'Error: ' . $warning['message']); - } - return $this->raiseError("Cannot package, errors in package"); - } else { - foreach ($main->getValidationWarnings() as $warning) { - $this->log(1, 'Warning: ' . $warning['message']); - } - } - if ($pkg2) { - $other->setLogger($this); - $a = false; - if (!$other->validate(PEAR_VALIDATE_NORMAL) || $a = !$main->isEquivalent($other)) { - foreach ($other->getValidationWarnings() as $warning) { - $this->log(0, 'Error: ' . $warning['message']); - } - foreach ($main->getValidationWarnings() as $warning) { - $this->log(0, 'Error: ' . $warning['message']); - } - if ($a) { - return $this->raiseError('The two package.xml files are not equivalent!'); - } - return $this->raiseError("Cannot package, errors in package"); - } else { - foreach ($other->getValidationWarnings() as $warning) { - $this->log(1, 'Warning: ' . $warning['message']); - } - } - $gen = &$main->getDefaultGenerator(); - $tgzfile = $gen->toTgz2($this, $other, $compress); - if (PEAR::isError($tgzfile)) { - return $tgzfile; - } - $dest_package = basename($tgzfile); - $pkgdir = dirname($pkgfile); - - // TAR the Package ------------------------------------------- - $this->log(1, "Package $dest_package done"); - if (file_exists("$pkgdir/CVS/Root")) { - $cvsversion = preg_replace('/[^a-z0-9]/i', '_', $pf->getVersion()); - $cvstag = "RELEASE_$cvsversion"; - $this->log(1, 'Tag the released code with "pear cvstag ' . - $main->getPackageFile() . '"'); - $this->log(1, "(or set the CVS tag $cvstag by hand)"); - } - } else { // this branch is executed for single packagefile packaging - $gen = &$pf->getDefaultGenerator(); - $tgzfile = $gen->toTgz($this, $compress); - if (PEAR::isError($tgzfile)) { - $this->log(0, $tgzfile->getMessage()); - return $this->raiseError("Cannot package, errors in package"); - } - $dest_package = basename($tgzfile); - $pkgdir = dirname($pkgfile); - - // TAR the Package ------------------------------------------- - $this->log(1, "Package $dest_package done"); - if (file_exists("$pkgdir/CVS/Root")) { - $cvsversion = preg_replace('/[^a-z0-9]/i', '_', $pf->getVersion()); - $cvstag = "RELEASE_$cvsversion"; - $this->log(1, "Tag the released code with `pear cvstag $pkgfile'"); - $this->log(1, "(or set the CVS tag $cvstag by hand)"); - } - } - return $dest_package; - } - - // }}} -} - -// {{{ md5_file() utility function -if (!function_exists('md5_file')) { - function md5_file($file) { - if (!$fd = @fopen($file, 'r')) { - return false; - } - fclose($fd); - $md5 = md5(file_get_contents($file)); - return $md5; - } -} -// }}} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/REST.php b/src/vitis/vas/rest/class/PEAR/REST.php deleted file mode 100755 index c32946c60f880065e0239009a991d82cf3d79a8d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/REST.php +++ /dev/null @@ -1,397 +0,0 @@ -<?php -/** - * PEAR_REST - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: REST.php,v 1.31 2008/05/13 18:03:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * For downloading xml files - */ -require_once 'PEAR.php'; -require_once 'PEAR/XMLParser.php'; - -/** - * Intelligently retrieve data, following hyperlinks if necessary, and re-directing - * as well - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_REST -{ - var $config; - var $_options; - function PEAR_REST(&$config, $options = array()) - { - $this->config = &$config; - $this->_options = $options; - } - - /** - * Retrieve REST data, but always retrieve the local cache if it is available. - * - * This is useful for elements that should never change, such as information on a particular - * release - * @param string full URL to this resource - * @param array|false contents of the accept-encoding header - * @param boolean if true, xml will be returned as a string, otherwise, xml will be - * parsed using PEAR_XMLParser - * @return string|array - */ - function retrieveCacheFirst($url, $accept = false, $forcestring = false, $channel = false) - { - $cachefile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cachefile'; - if (file_exists($cachefile)) { - return unserialize(implode('', file($cachefile))); - } - return $this->retrieveData($url, $accept, $forcestring, $channel); - } - - /** - * Retrieve a remote REST resource - * @param string full URL to this resource - * @param array|false contents of the accept-encoding header - * @param boolean if true, xml will be returned as a string, otherwise, xml will be - * parsed using PEAR_XMLParser - * @return string|array - */ - function retrieveData($url, $accept = false, $forcestring = false, $channel = false) - { - $cacheId = $this->getCacheId($url); - if ($ret = $this->useLocalCache($url, $cacheId)) { - return $ret; - } - if (!isset($this->_options['offline'])) { - $trieddownload = true; - $file = $this->downloadHttp($url, $cacheId ? $cacheId['lastChange'] : false, $accept, $channel); - } else { - $trieddownload = false; - $file = false; - } - if (PEAR::isError($file)) { - if ($file->getCode() == -9276) { - $trieddownload = false; - $file = false; // use local copy if available on socket connect error - } else { - return $file; - } - } - if (!$file) { - $ret = $this->getCache($url); - if (!PEAR::isError($ret) && $trieddownload) { - // reset the age of the cache if the server says it was unmodified - $this->saveCache($url, $ret, null, true, $cacheId); - } - return $ret; - } - if (is_array($file)) { - $headers = $file[2]; - $lastmodified = $file[1]; - $content = $file[0]; - } else { - $content = $file; - $lastmodified = false; - $headers = array(); - } - if ($forcestring) { - $this->saveCache($url, $content, $lastmodified, false, $cacheId); - return $content; - } - if (isset($headers['content-type'])) { - switch ($headers['content-type']) { - case 'text/xml' : - case 'application/xml' : - $parser = new PEAR_XMLParser; - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $err = $parser->parse($content); - PEAR::popErrorHandling(); - if (PEAR::isError($err)) { - return PEAR::raiseError('Invalid xml downloaded from "' . $url . '": ' . - $err->getMessage()); - } - $content = $parser->getData(); - case 'text/html' : - default : - // use it as a string - } - } else { - // assume XML - $parser = new PEAR_XMLParser; - $parser->parse($content); - $content = $parser->getData(); - } - $this->saveCache($url, $content, $lastmodified, false, $cacheId); - return $content; - } - - function useLocalCache($url, $cacheid = null) - { - if ($cacheid === null) { - $cacheidfile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cacheid'; - if (file_exists($cacheidfile)) { - $cacheid = unserialize(implode('', file($cacheidfile))); - } else { - return false; - } - } - $cachettl = $this->config->get('cache_ttl'); - // If cache is newer than $cachettl seconds, we use the cache! - if (time() - $cacheid['age'] < $cachettl) { - return $this->getCache($url); - } - return false; - } - - function getCacheId($url) - { - $cacheidfile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cacheid'; - if (file_exists($cacheidfile)) { - $ret = unserialize(implode('', file($cacheidfile))); - return $ret; - } else { - return false; - } - } - - function getCache($url) - { - $cachefile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cachefile'; - if (file_exists($cachefile)) { - return unserialize(implode('', file($cachefile))); - } else { - return PEAR::raiseError('No cached content available for "' . $url . '"'); - } - } - - /** - * @param string full URL to REST resource - * @param string original contents of the REST resource - * @param array HTTP Last-Modified and ETag headers - * @param bool if true, then the cache id file should be regenerated to - * trigger a new time-to-live value - */ - function saveCache($url, $contents, $lastmodified, $nochange = false, $cacheid = null) - { - $cacheidfile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cacheid'; - $cachefile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR . - md5($url) . 'rest.cachefile'; - if ($cacheid === null && $nochange) { - $cacheid = unserialize(implode('', file($cacheidfile))); - } - - $fp = @fopen($cacheidfile, 'wb'); - if (!$fp) { - $cache_dir = $this->config->get('cache_dir'); - if (!is_dir($cache_dir)) { - System::mkdir(array('-p', $cache_dir)); - $fp = @fopen($cacheidfile, 'wb'); - if (!$fp) { - return false; - } - } else { - return false; - } - } - - if ($nochange) { - fwrite($fp, serialize(array( - 'age' => time(), - 'lastChange' => $cacheid['lastChange'], - ))); - fclose($fp); - return true; - } else { - fwrite($fp, serialize(array( - 'age' => time(), - 'lastChange' => $lastmodified, - ))); - } - fclose($fp); - $fp = @fopen($cachefile, 'wb'); - if (!$fp) { - if (file_exists($cacheidfile)) { - @unlink($cacheidfile); - } - return false; - } - fwrite($fp, serialize($contents)); - fclose($fp); - return true; - } - - /** - * Efficiently Download a file through HTTP. Returns downloaded file as a string in-memory - * This is best used for small files - * - * If an HTTP proxy has been configured (http_proxy PEAR_Config - * setting), the proxy will be used. - * - * @param string $url the URL to download - * @param string $save_dir directory to save file in - * @param false|string|array $lastmodified header values to check against for caching - * use false to return the header values from this download - * @param false|array $accept Accept headers to send - * @return string|array Returns the contents of the downloaded file or a PEAR - * error on failure. If the error is caused by - * socket-related errors, the error object will - * have the fsockopen error code available through - * getCode(). If caching is requested, then return the header - * values. - * - * @access public - */ - function downloadHttp($url, $lastmodified = null, $accept = false, $channel = false) - { - $info = parse_url($url); - if (!isset($info['scheme']) || !in_array($info['scheme'], array('http', 'https'))) { - return PEAR::raiseError('Cannot download non-http URL "' . $url . '"'); - } - if (!isset($info['host'])) { - return PEAR::raiseError('Cannot download from non-URL "' . $url . '"'); - } else { - $host = $info['host']; - if (!array_key_exists('port', $info)) { - $info['port'] = null; - } - if (!array_key_exists('path', $info)) { - $info['path'] = null; - } - $port = $info['port']; - $path = $info['path']; - } - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - if ($this->config->get('http_proxy')&& - $proxy = parse_url($this->config->get('http_proxy'))) { - $proxy_host = isset($proxy['host']) ? $proxy['host'] : null; - if (isset($proxy['scheme']) && $proxy['scheme'] == 'https') { - $proxy_host = 'ssl://' . $proxy_host; - } - $proxy_port = isset($proxy['port']) ? $proxy['port'] : 8080; - $proxy_user = isset($proxy['user']) ? urldecode($proxy['user']) : null; - $proxy_pass = isset($proxy['pass']) ? urldecode($proxy['pass']) : null; - } - if (empty($port)) { - if (isset($info['scheme']) && $info['scheme'] == 'https') { - $port = 443; - } else { - $port = 80; - } - } - If (isset($proxy['host'])) { - $request = "GET $url HTTP/1.1\r\n"; - } else { - $request = "GET $path HTTP/1.1\r\n"; - } - $request .= "Host: $host:$port\r\n"; - - $ifmodifiedsince = ''; - if (is_array($lastmodified)) { - if (isset($lastmodified['Last-Modified'])) { - $ifmodifiedsince = 'If-Modified-Since: ' . $lastmodified['Last-Modified'] . "\r\n"; - } - if (isset($lastmodified['ETag'])) { - $ifmodifiedsince .= "If-None-Match: $lastmodified[ETag]\r\n"; - } - } else { - $ifmodifiedsince = ($lastmodified ? "If-Modified-Since: $lastmodified\r\n" : ''); - } - $request .= $ifmodifiedsince . - "User-Agent: PEAR/1.7.2/PHP/" . PHP_VERSION . "\r\n"; - $username = $this->config->get('username', null, $channel); - $password = $this->config->get('password', null, $channel); - if ($username && $password) { - $tmp = base64_encode("$username:$password"); - $request .= "Authorization: Basic $tmp\r\n"; - } - if ($proxy_host != '' && $proxy_user != '') { - $request .= 'Proxy-Authorization: Basic ' . - base64_encode($proxy_user . ':' . $proxy_pass) . "\r\n"; - } - if ($accept) { - $request .= 'Accept: ' . implode(', ', $accept) . "\r\n"; - } - $request .= "Accept-Encoding:\r\n"; - $request .= "Connection: close\r\n"; - $request .= "\r\n"; - if ($proxy_host != '') { - $fp = @fsockopen($proxy_host, $proxy_port, $errno, $errstr, 15); - if (!$fp) { - return PEAR::raiseError("Connection to `$proxy_host:$proxy_port' failed: $errstr", - -9276); - } - } else { - if (isset($info['scheme']) && $info['scheme'] == 'https') { - $host = 'ssl://' . $host; - } - $fp = @fsockopen($host, $port, $errno, $errstr); - if (!$fp) { - return PEAR::raiseError("Connection to `$host:$port' failed: $errstr", $errno); - } - } - fwrite($fp, $request); - $headers = array(); - while (trim($line = fgets($fp, 1024))) { - if (preg_match('/^([^:]+):\s+(.*)\s*\\z/', $line, $matches)) { - $headers[strtolower($matches[1])] = trim($matches[2]); - } elseif (preg_match('|^HTTP/1.[01] ([0-9]{3}) |', $line, $matches)) { - if ($matches[1] == 304 && ($lastmodified || ($lastmodified === false))) { - return false; - } - if ($matches[1] != 200) { - return PEAR::raiseError("File http://$host:$port$path not valid (received: $line)", (int) $matches[1]); - } - } - } - if (isset($headers['content-length'])) { - $length = $headers['content-length']; - } else { - $length = -1; - } - $data = ''; - while ($chunk = @fread($fp, 8192)) { - $data .= $chunk; - } - fclose($fp); - if ($lastmodified === false || $lastmodified) { - if (isset($headers['etag'])) { - $lastmodified = array('ETag' => $headers['etag']); - } - if (isset($headers['last-modified'])) { - if (is_array($lastmodified)) { - $lastmodified['Last-Modified'] = $headers['last-modified']; - } else { - $lastmodified = $headers['last-modified']; - } - } - return array($data, $lastmodified, $headers); - } - return $data; - } -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/REST/10.php b/src/vitis/vas/rest/class/PEAR/REST/10.php deleted file mode 100755 index d2f44fe93098da9afc5f8942c311e59456be619a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/REST/10.php +++ /dev/null @@ -1,797 +0,0 @@ -<?php -/** - * PEAR_REST_10 - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: 10.php,v 1.53 2008/04/11 01:16:40 dufuz Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a12 - */ - -/** - * For downloading REST xml/txt files - */ -require_once 'PEAR/REST.php'; - -/** - * Implement REST 1.0 - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a12 - */ -class PEAR_REST_10 -{ - /** - * @var PEAR_REST - */ - var $_rest; - function PEAR_REST_10($config, $options = array()) - { - $this->_rest = &new PEAR_REST($config, $options); - } - - /** - * Retrieve information about a remote package to be downloaded from a REST server - * - * @param string $base The uri to prepend to all REST calls - * @param array $packageinfo an array of format: - * <pre> - * array( - * 'package' => 'packagename', - * 'channel' => 'channelname', - * ['state' => 'alpha' (or valid state),] - * -or- - * ['version' => '1.whatever'] - * </pre> - * @param string $prefstate Current preferred_state config variable value - * @param bool $installed the installed version of this package to compare against - * @return array|false|PEAR_Error see {@link _returnDownloadURL()} - */ - function getDownloadURL($base, $packageinfo, $prefstate, $installed, $channel = false) - { - $channel = $packageinfo['channel']; - $package = $packageinfo['package']; - $states = $this->betterStates($prefstate, true); - if (!$states) { - return PEAR::raiseError('"' . $prefstate . '" is not a valid state'); - } - $state = isset($packageinfo['state']) ? $packageinfo['state'] : null; - $version = isset($packageinfo['version']) ? $packageinfo['version'] : null; - $info = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . '/allreleases.xml', false, false, $channel); - if (PEAR::isError($info)) { - return PEAR::raiseError('No releases available for package "' . - $channel . '/' . $package . '"'); - } - if (!isset($info['r'])) { - return false; - } - $release = $found = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - foreach ($info['r'] as $release) { - if (!isset($this->_rest->_options['force']) && ($installed && - version_compare($release['v'], $installed, '<'))) { - continue; - } - if (isset($state)) { - // try our preferred state first - if ($release['s'] == $state) { - $found = true; - break; - } - // see if there is something newer and more stable - // bug #7221 - if (in_array($release['s'], $this->betterStates($state), true)) { - $found = true; - break; - } - } elseif (isset($version)) { - if ($release['v'] == $version) { - $found = true; - break; - } - } else { - if (in_array($release['s'], $states)) { - $found = true; - break; - } - } - } - return $this->_returnDownloadURL($base, $package, $release, $info, $found, false, $channel); - } - - function getDepDownloadURL($base, $xsdversion, $dependency, $deppackage, - $prefstate = 'stable', $installed = false, $channel = false) - { - $channel = $dependency['channel']; - $package = $dependency['name']; - $states = $this->betterStates($prefstate, true); - if (!$states) { - return PEAR::raiseError('"' . $prefstate . '" is not a valid state'); - } - $state = isset($dependency['state']) ? $dependency['state'] : null; - $version = isset($dependency['version']) ? $dependency['version'] : null; - $info = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . '/allreleases.xml', false, false, $channel); - if (PEAR::isError($info)) { - return PEAR::raiseError('Package "' . $deppackage['channel'] . '/' . $deppackage['package'] - . '" dependency "' . $channel . '/' . $package . '" has no releases'); - } - if (!is_array($info) || !isset($info['r'])) { - return false; - } - $exclude = array(); - $min = $max = $recommended = false; - if ($xsdversion == '1.0') { - switch ($dependency['rel']) { - case 'ge' : - $min = $dependency['version']; - break; - case 'gt' : - $min = $dependency['version']; - $exclude = array($dependency['version']); - break; - case 'eq' : - $recommended = $dependency['version']; - break; - case 'lt' : - $max = $dependency['version']; - $exclude = array($dependency['version']); - break; - case 'le' : - $max = $dependency['version']; - break; - case 'ne' : - $exclude = array($dependency['version']); - break; - } - } else { - $min = isset($dependency['min']) ? $dependency['min'] : false; - $max = isset($dependency['max']) ? $dependency['max'] : false; - $recommended = isset($dependency['recommended']) ? - $dependency['recommended'] : false; - if (isset($dependency['exclude'])) { - if (!isset($dependency['exclude'][0])) { - $exclude = array($dependency['exclude']); - } - } - } - $release = $found = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - foreach ($info['r'] as $release) { - if (!isset($this->_rest->_options['force']) && ($installed && - version_compare($release['v'], $installed, '<'))) { - continue; - } - if (in_array($release['v'], $exclude)) { // skip excluded versions - continue; - } - // allow newer releases to say "I'm OK with the dependent package" - if ($xsdversion == '2.0' && isset($release['co'])) { - if (!is_array($release['co']) || !isset($release['co'][0])) { - $release['co'] = array($release['co']); - } - foreach ($release['co'] as $entry) { - if (isset($entry['x']) && !is_array($entry['x'])) { - $entry['x'] = array($entry['x']); - } elseif (!isset($entry['x'])) { - $entry['x'] = array(); - } - if ($entry['c'] == $deppackage['channel'] && - strtolower($entry['p']) == strtolower($deppackage['package']) && - version_compare($deppackage['version'], $entry['min'], '>=') && - version_compare($deppackage['version'], $entry['max'], '<=') && - !in_array($release['v'], $entry['x'])) { - $recommended = $release['v']; - break; - } - } - } - if ($recommended) { - if ($release['v'] != $recommended) { // if we want a specific - // version, then skip all others - continue; - } else { - if (!in_array($release['s'], $states)) { - // the stability is too low, but we must return the - // recommended version if possible - return $this->_returnDownloadURL($base, $package, $release, $info, true, false, $channel); - } - } - } - if ($min && version_compare($release['v'], $min, 'lt')) { // skip too old versions - continue; - } - if ($max && version_compare($release['v'], $max, 'gt')) { // skip too new versions - continue; - } - if ($installed && version_compare($release['v'], $installed, '<')) { - continue; - } - if (in_array($release['s'], $states)) { // if in the preferred state... - $found = true; // ... then use it - break; - } - } - return $this->_returnDownloadURL($base, $package, $release, $info, $found, false, $channel); - } - - /** - * Take raw data and return the array needed for processing a download URL - * - * @param string $base REST base uri - * @param string $package Package name - * @param array $release an array of format array('v' => version, 's' => state) - * describing the release to download - * @param array $info list of all releases as defined by allreleases.xml - * @param bool|null $found determines whether the release was found or this is the next - * best alternative. If null, then versions were skipped because - * of PHP dependency - * @return array|PEAR_Error - * @access private - */ - function _returnDownloadURL($base, $package, $release, $info, $found, $phpversion = false, $channel = false) - { - if (!$found) { - $release = $info['r'][0]; - } - $pinfo = $this->_rest->retrieveCacheFirst($base . 'p/' . strtolower($package) . '/' . - 'info.xml', false, false, $channel); - if (PEAR::isError($pinfo)) { - return PEAR::raiseError('Package "' . $package . - '" does not have REST info xml available'); - } - $releaseinfo = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/' . - $release['v'] . '.xml', false, false, $channel); - if (PEAR::isError($releaseinfo)) { - return PEAR::raiseError('Package "' . $package . '" Version "' . $release['v'] . - '" does not have REST xml available'); - } - $packagexml = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/' . - 'deps.' . $release['v'] . '.txt', false, true, $channel); - if (PEAR::isError($packagexml)) { - return PEAR::raiseError('Package "' . $package . '" Version "' . $release['v'] . - '" does not have REST dependency information available'); - } - $packagexml = unserialize($packagexml); - if (!$packagexml) { - $packagexml = array(); - } - $allinfo = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/allreleases.xml', false, false, $channel); - if (!is_array($allinfo['r']) || !isset($allinfo['r'][0])) { - $allinfo['r'] = array($allinfo['r']); - } - $compatible = false; - foreach ($allinfo['r'] as $release) { - if ($release['v'] != $releaseinfo['v']) { - continue; - } - if (!isset($release['co'])) { - break; - } - $compatible = array(); - if (!is_array($release['co']) || !isset($release['co'][0])) { - $release['co'] = array($release['co']); - } - foreach ($release['co'] as $entry) { - $comp = array(); - $comp['name'] = $entry['p']; - $comp['channel'] = $entry['c']; - $comp['min'] = $entry['min']; - $comp['max'] = $entry['max']; - if (isset($entry['x']) && !is_array($entry['x'])) { - $comp['exclude'] = $entry['x']; - } - $compatible[] = $comp; - } - if (count($compatible) == 1) { - $compatible = $compatible[0]; - } - break; - } - if (isset($pinfo['dc']) && isset($pinfo['dp'])) { - if (is_array($pinfo['dp'])) { - $deprecated = array('channel' => (string) $pinfo['dc'], - 'package' => trim($pinfo['dp']['_content'])); - } else { - $deprecated = array('channel' => (string) $pinfo['dc'], - 'package' => trim($pinfo['dp'])); - } - } else { - $deprecated = false; - } - if ($found) { - return - array('version' => $releaseinfo['v'], - 'info' => $packagexml, - 'package' => $releaseinfo['p']['_content'], - 'stability' => $releaseinfo['st'], - 'url' => $releaseinfo['g'], - 'compatible' => $compatible, - 'deprecated' => $deprecated, - ); - } else { - return - array('version' => $releaseinfo['v'], - 'package' => $releaseinfo['p']['_content'], - 'stability' => $releaseinfo['st'], - 'info' => $packagexml, - 'compatible' => $compatible, - 'deprecated' => $deprecated, - 'php' => $phpversion - ); - } - } - - function listPackages($base, $channel = false) - { - $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - if (!is_array($packagelist) || !isset($packagelist['p'])) { - return array(); - } - if (!is_array($packagelist['p'])) { - $packagelist['p'] = array($packagelist['p']); - } - return $packagelist['p']; - } - - /** - * List all categories of a REST server - * - * @param string $base base URL of the server - * @return array of categorynames - */ - function listCategories($base, $channel = false) - { - $categories = array(); - - // c/categories.xml does not exist; - // check for every package its category manually - // This is SLOOOWWWW : /// - $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - if (!is_array($packagelist) || !isset($packagelist['p'])) { - $ret = array(); - return $ret; - } - if (!is_array($packagelist['p'])) { - $packagelist['p'] = array($packagelist['p']); - } - - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - foreach ($packagelist['p'] as $package) { - $inf = $this->_rest->retrieveData($base . 'p/' . strtolower($package) . '/info.xml', false, false, $channel); - if (PEAR::isError($inf)) { - PEAR::popErrorHandling(); - return $inf; - } - $cat = $inf['ca']['_content']; - if (!isset($categories[$cat])) { - $categories[$cat] = $inf['ca']; - } - } - return array_values($categories); - } - - /** - * List a category of a REST server - * - * @param string $base base URL of the server - * @param string $category name of the category - * @param boolean $info also download full package info - * @return array of packagenames - */ - function listCategory($base, $category, $info = false, $channel = false) - { - // gives '404 Not Found' error when category doesn't exist - $packagelist = $this->_rest->retrieveData($base.'c/'.urlencode($category).'/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - if (!is_array($packagelist) || !isset($packagelist['p'])) { - return array(); - } - if (!is_array($packagelist['p']) || - !isset($packagelist['p'][0])) { // only 1 pkg - $packagelist = array($packagelist['p']); - } else { - $packagelist = $packagelist['p']; - } - - if ($info == true) { - // get individual package info - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - foreach ($packagelist as $i => $packageitem) { - $url = sprintf('%s'.'r/%s/latest.txt', - $base, - strtolower($packageitem['_content'])); - $version = $this->_rest->retrieveData($url, false, false, $channel); - if (PEAR::isError($version)) { - break; // skipit - } - $url = sprintf('%s'.'r/%s/%s.xml', - $base, - strtolower($packageitem['_content']), - $version); - $info = $this->_rest->retrieveData($url, false, false, $channel); - if (PEAR::isError($info)) { - break; // skipit - } - $packagelist[$i]['info'] = $info; - } - PEAR::popErrorHandling(); - } - - return $packagelist; - } - - - function listAll($base, $dostable, $basic = true, $searchpackage = false, $searchsummary = false, $channel = false) - { - $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - if ($this->_rest->config->get('verbose') > 0) { - $ui = &PEAR_Frontend::singleton(); - $ui->log('Retrieving data...0%', false); - } - $ret = array(); - if (!is_array($packagelist) || !isset($packagelist['p'])) { - return $ret; - } - if (!is_array($packagelist['p'])) { - $packagelist['p'] = array($packagelist['p']); - } - - // only search-packagename = quicksearch ! - if ($searchpackage && (!$searchsummary || empty($searchpackage))) { - $newpackagelist = array(); - foreach ($packagelist['p'] as $package) { - if (!empty($searchpackage) && stristr($package, $searchpackage) !== false) { - $newpackagelist[] = $package; - } - } - $packagelist['p'] = $newpackagelist; - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $next = .1; - foreach ($packagelist['p'] as $progress => $package) { - if ($this->_rest->config->get('verbose') > 0) { - if ($progress / count($packagelist['p']) >= $next) { - if ($next == .5) { - $ui->log('50%', false); - } else { - $ui->log('.', false); - } - $next += .1; - } - } - if ($basic) { // remote-list command - if ($dostable) { - $latest = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/stable.txt', false, false, $channel); - } else { - $latest = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/latest.txt', false, false, $channel); - } - if (PEAR::isError($latest)) { - $latest = false; - } - $info = array('stable' => $latest); - } else { // list-all command - $inf = $this->_rest->retrieveData($base . 'p/' . strtolower($package) . '/info.xml', false, false, $channel); - if (PEAR::isError($inf)) { - PEAR::popErrorHandling(); - return $inf; - } - if ($searchpackage) { - $found = (!empty($searchpackage) && stristr($package, $searchpackage) !== false); - if (!$found && !(isset($searchsummary) && !empty($searchsummary) - && (stristr($inf['s'], $searchsummary) !== false - || stristr($inf['d'], $searchsummary) !== false))) - { - continue; - }; - } - $releases = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/allreleases.xml', false, false, $channel); - if (PEAR::isError($releases)) { - continue; - } - if (!isset($releases['r'][0])) { - $releases['r'] = array($releases['r']); - } - unset($latest); - unset($unstable); - unset($stable); - unset($state); - foreach ($releases['r'] as $release) { - if (!isset($latest)) { - if ($dostable && $release['s'] == 'stable') { - $latest = $release['v']; - $state = 'stable'; - } - if (!$dostable) { - $latest = $release['v']; - $state = $release['s']; - } - } - if (!isset($stable) && $release['s'] == 'stable') { - $stable = $release['v']; - if (!isset($unstable)) { - $unstable = $stable; - } - } - if (!isset($unstable) && $release['s'] != 'stable') { - $latest = $unstable = $release['v']; - $state = $release['s']; - } - if (isset($latest) && !isset($state)) { - $state = $release['s']; - } - if (isset($latest) && isset($stable) && isset($unstable)) { - break; - } - } - $deps = array(); - if (!isset($unstable)) { - $unstable = false; - $state = 'stable'; - if (isset($stable)) { - $latest = $unstable = $stable; - } - } else { - $latest = $unstable; - } - if (!isset($latest)) { - $latest = false; - } - if ($latest) { - $d = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/deps.' . - $latest . '.txt', false, false, $channel); - if (!PEAR::isError($d)) { - $d = unserialize($d); - if ($d) { - if (isset($d['required'])) { - if (!class_exists('PEAR_PackageFile_v2')) { - require_once 'PEAR/PackageFile/v2.php'; - } - if (!isset($pf)) { - $pf = new PEAR_PackageFile_v2; - } - $pf->setDeps($d); - $tdeps = $pf->getDeps(); - } else { - $tdeps = $d; - } - foreach ($tdeps as $dep) { - if ($dep['type'] !== 'pkg') { - continue; - } - $deps[] = $dep; - } - } - } - } - if (!isset($stable)) { - $stable = '-n/a-'; - } - if (!$searchpackage) { - $info = array('stable' => $latest, 'summary' => $inf['s'], 'description' => - $inf['d'], 'deps' => $deps, 'category' => $inf['ca']['_content'], - 'unstable' => $unstable, 'state' => $state); - } else { - $info = array('stable' => $stable, 'summary' => $inf['s'], 'description' => - $inf['d'], 'deps' => $deps, 'category' => $inf['ca']['_content'], - 'unstable' => $unstable, 'state' => $state); - } - } - $ret[$package] = $info; - } - PEAR::popErrorHandling(); - return $ret; - } - - function listLatestUpgrades($base, $pref_state, $installed, $channel, &$reg) - { - $packagelist = $this->_rest->retrieveData($base . 'p/packages.xml', false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - $ret = array(); - if (!is_array($packagelist) || !isset($packagelist['p'])) { - return $ret; - } - if (!is_array($packagelist['p'])) { - $packagelist['p'] = array($packagelist['p']); - } - foreach ($packagelist['p'] as $package) { - if (!isset($installed[strtolower($package)])) { - continue; - } - $inst_version = $reg->packageInfo($package, 'version', $channel); - $inst_state = $reg->packageInfo($package, 'release_state', $channel); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $info = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/allreleases.xml', false, false, $channel); - PEAR::popErrorHandling(); - if (PEAR::isError($info)) { - continue; // no remote releases - } - if (!isset($info['r'])) { - continue; - } - $found = false; - $release = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - // $info['r'] is sorted by version number - foreach ($info['r'] as $release) { - if ($inst_version && version_compare($release['v'], $inst_version, '<=')) { - // not newer than the one installed - break; - } - - // new version > installed version - if (!$pref_state) { - // every state is a good state - $found = true; - break; - } else { - $new_state = $release['s']; - // if new state >= installed state: go - if (in_array($new_state, $this->betterStates($inst_state, true))) { - $found = true; - break; - } else { - // only allow to lower the state of package, - // if new state >= preferred state: go - if (in_array($new_state, $this->betterStates($pref_state, true))) { - $found = true; - break; - } - } - } - } - if (!$found) { - continue; - } - $relinfo = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/' . - $release['v'] . '.xml', false, false, $channel); - if (PEAR::isError($relinfo)) { - return $relinfo; - } - $ret[$package] = array( - 'version' => $release['v'], - 'state' => $release['s'], - 'filesize' => $relinfo['f'], - ); - } - return $ret; - } - - function packageInfo($base, $package, $channel = false) - { - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $pinfo = $this->_rest->retrieveData($base . 'p/' . strtolower($package) . '/info.xml', false, false, $channel); - if (PEAR::isError($pinfo)) { - PEAR::popErrorHandling(); - return PEAR::raiseError('Unknown package: "' . $package . '" (Debug: ' . - $pinfo->getMessage() . ')'); - } - $releases = array(); - $allreleases = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/allreleases.xml', false, false, $channel); - if (!PEAR::isError($allreleases)) { - if (!class_exists('PEAR_PackageFile_v2')) { - require_once 'PEAR/PackageFile/v2.php'; - } - if (!is_array($allreleases['r']) || !isset($allreleases['r'][0])) { - $allreleases['r'] = array($allreleases['r']); - } - $pf = new PEAR_PackageFile_v2; - foreach ($allreleases['r'] as $release) { - $ds = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) . '/deps.' . - $release['v'] . '.txt', false, false, $channel); - if (PEAR::isError($ds)) { - continue; - } - if (!isset($latest)) { - $latest = $release['v']; - } - $pf->setDeps(unserialize($ds)); - $ds = $pf->getDeps(); - $info = $this->_rest->retrieveCacheFirst($base . 'r/' . strtolower($package) - . '/' . $release['v'] . '.xml', false, false, $channel); - if (PEAR::isError($info)) { - continue; - } - $releases[$release['v']] = array( - 'doneby' => $info['m'], - 'license' => $info['l'], - 'summary' => $info['s'], - 'description' => $info['d'], - 'releasedate' => $info['da'], - 'releasenotes' => $info['n'], - 'state' => $release['s'], - 'deps' => $ds ? $ds : array(), - ); - } - } else { - $latest = ''; - } - PEAR::popErrorHandling(); - if (isset($pinfo['dc']) && isset($pinfo['dp'])) { - if (is_array($pinfo['dp'])) { - $deprecated = array('channel' => (string) $pinfo['dc'], - 'package' => trim($pinfo['dp']['_content'])); - } else { - $deprecated = array('channel' => (string) $pinfo['dc'], - 'package' => trim($pinfo['dp'])); - } - } else { - $deprecated = false; - } - return array( - 'name' => $pinfo['n'], - 'channel' => $pinfo['c'], - 'category' => $pinfo['ca']['_content'], - 'stable' => $latest, - 'license' => $pinfo['l'], - 'summary' => $pinfo['s'], - 'description' => $pinfo['d'], - 'releases' => $releases, - 'deprecated' => $deprecated, - ); - } - - /** - * Return an array containing all of the states that are more stable than - * or equal to the passed in state - * - * @param string Release state - * @param boolean Determines whether to include $state in the list - * @return false|array False if $state is not a valid release state - */ - function betterStates($state, $include = false) - { - static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable'); - $i = array_search($state, $states); - if ($i === false) { - return false; - } - if ($include) { - $i--; - } - return array_slice($states, $i + 1); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/REST/11.php b/src/vitis/vas/rest/class/PEAR/REST/11.php deleted file mode 100755 index effa68904f26e5601ef7b42f0b2db49345237070..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/REST/11.php +++ /dev/null @@ -1,317 +0,0 @@ -<?php -/** - * PEAR_REST_11 - implement faster list-all/remote-list command - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: 11.php,v 1.14 2008/04/11 01:16:40 dufuz Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.3 - */ - -/** - * For downloading REST xml/txt files - */ -require_once 'PEAR/REST.php'; - -/** - * Implement REST 1.1 - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.3 - */ -class PEAR_REST_11 -{ - /** - * @var PEAR_REST - */ - var $_rest; - - function PEAR_REST_11($config, $options = array()) - { - $this->_rest = &new PEAR_REST($config, $options); - } - - function listAll($base, $dostable, $basic = true, $searchpackage = false, $searchsummary = false, $channel = false) - { - $categorylist = $this->_rest->retrieveData($base . 'c/categories.xml', false, false, $channel); - if (PEAR::isError($categorylist)) { - return $categorylist; - } - $ret = array(); - if (!is_array($categorylist['c']) || !isset($categorylist['c'][0])) { - $categorylist['c'] = array($categorylist['c']); - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - - foreach ($categorylist['c'] as $progress => $category) { - $category = $category['_content']; - $packagesinfo = $this->_rest->retrieveData($base . - 'c/' . urlencode($category) . '/packagesinfo.xml', false, false, $channel); - - if (PEAR::isError($packagesinfo)) { - continue; - } - - if (!is_array($packagesinfo) || !isset($packagesinfo['pi'])) { - continue; - } - - if (!is_array($packagesinfo['pi']) || !isset($packagesinfo['pi'][0])) { - $packagesinfo['pi'] = array($packagesinfo['pi']); - } - - foreach ($packagesinfo['pi'] as $packageinfo) { - $info = $packageinfo['p']; - $package = $info['n']; - $releases = isset($packageinfo['a']) ? $packageinfo['a'] : false; - unset($latest); - unset($unstable); - unset($stable); - unset($state); - - if ($releases) { - if (!isset($releases['r'][0])) { - $releases['r'] = array($releases['r']); - } - foreach ($releases['r'] as $release) { - if (!isset($latest)) { - if ($dostable && $release['s'] == 'stable') { - $latest = $release['v']; - $state = 'stable'; - } - if (!$dostable) { - $latest = $release['v']; - $state = $release['s']; - } - } - if (!isset($stable) && $release['s'] == 'stable') { - $stable = $release['v']; - if (!isset($unstable)) { - $unstable = $stable; - } - } - if (!isset($unstable) && $release['s'] != 'stable') { - $unstable = $release['v']; - $state = $release['s']; - } - if (isset($latest) && !isset($state)) { - $state = $release['s']; - } - if (isset($latest) && isset($stable) && isset($unstable)) { - break; - } - } - } - - if ($basic) { // remote-list command - if (!isset($latest)) { - $latest = false; - } - if ($dostable) { - // $state is not set if there are no releases - if (isset($state) && $state == 'stable') { - $ret[$package] = array('stable' => $latest); - } else { - $ret[$package] = array('stable' => '-n/a-'); - } - } else { - $ret[$package] = array('stable' => $latest); - } - continue; - } - - // list-all command - $deps = array(); - if (!isset($unstable)) { - $unstable = false; - $state = 'stable'; - if (isset($stable)) { - $latest = $unstable = $stable; - } - } else { - $latest = $unstable; - } - - if (!isset($latest)) { - $latest = false; - } - - if ($latest && isset($packageinfo['deps'])) { - if (!is_array($packageinfo['deps']) || - !isset($packageinfo['deps'][0])) { - $packageinfo['deps'] = array($packageinfo['deps']); - } - $d = false; - foreach ($packageinfo['deps'] as $dep) { - if ($dep['v'] == $latest) { - $d = unserialize($dep['d']); - } - } - if ($d) { - if (isset($d['required'])) { - if (!class_exists('PEAR_PackageFile_v2')) { - require_once 'PEAR/PackageFile/v2.php'; - } - if (!isset($pf)) { - $pf = new PEAR_PackageFile_v2; - } - $pf->setDeps($d); - $tdeps = $pf->getDeps(); - } else { - $tdeps = $d; - } - foreach ($tdeps as $dep) { - if ($dep['type'] !== 'pkg') { - continue; - } - $deps[] = $dep; - } - } - } - - $info = array('stable' => $latest, 'summary' => $info['s'], - 'description' => - $info['d'], 'deps' => $deps, 'category' => $info['ca']['_content'], - 'unstable' => $unstable, 'state' => $state); - $ret[$package] = $info; - } - } - PEAR::popErrorHandling(); - return $ret; - } - - /** - * List all categories of a REST server - * - * @param string $base base URL of the server - * @return array of categorynames - */ - function listCategories($base, $channel = false) - { - $categorylist = $this->_rest->retrieveData($base . 'c/categories.xml', false, false, $channel); - if (PEAR::isError($categorylist)) { - return $categorylist; - } - if (!is_array($categorylist) || !isset($categorylist['c'])) { - return array(); - } - if (isset($categorylist['c']['_content'])) { - // only 1 category - $categorylist['c'] = array($categorylist['c']); - } - return $categorylist['c']; - } - - /** - * List packages in a category of a REST server - * - * @param string $base base URL of the server - * @param string $category name of the category - * @param boolean $info also download full package info - * @return array of packagenames - */ - function listCategory($base, $category, $info = false, $channel = false) - { - if ($info == false) { - $url = '%s'.'c/%s/packages.xml'; - } else { - $url = '%s'.'c/%s/packagesinfo.xml'; - } - $url = sprintf($url, - $base, - urlencode($category)); - - // gives '404 Not Found' error when category doesn't exist - $packagelist = $this->_rest->retrieveData($url, false, false, $channel); - if (PEAR::isError($packagelist)) { - return $packagelist; - } - if (!is_array($packagelist)) { - return array(); - } - - if ($info == false) { - if (!isset($packagelist['p'])) { - return array(); - } - if (!is_array($packagelist['p']) || - !isset($packagelist['p'][0])) { // only 1 pkg - $packagelist = array($packagelist['p']); - } else { - $packagelist = $packagelist['p']; - } - return $packagelist; - } else { - // info == true - if (!isset($packagelist['pi'])) { - return array(); - } - if (!is_array($packagelist['pi']) || - !isset($packagelist['pi'][0])) { // only 1 pkg - $packagelist_pre = array($packagelist['pi']); - } else { - $packagelist_pre = $packagelist['pi']; - } - - $packagelist = array(); - foreach ($packagelist_pre as $i => $item) { - // compatibility with r/<latest.txt>.xml - if (isset($item['a']['r'][0])) { - // multiple releases - $item['p']['v'] = $item['a']['r'][0]['v']; - $item['p']['st'] = $item['a']['r'][0]['s']; - } elseif (isset($item['a'])) { - // first and only release - $item['p']['v'] = $item['a']['r']['v']; - $item['p']['st'] = $item['a']['r']['s']; - } - - $packagelist[$i] = array('attribs' => $item['p']['r'], - '_content' => $item['p']['n'], - 'info' => $item['p']); - } - } - - return $packagelist; - } - - /** - * Return an array containing all of the states that are more stable than - * or equal to the passed in state - * - * @param string Release state - * @param boolean Determines whether to include $state in the list - * @return false|array False if $state is not a valid release state - */ - function betterStates($state, $include = false) - { - static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable'); - $i = array_search($state, $states); - if ($i === false) { - return false; - } - if ($include) { - $i--; - } - return array_slice($states, $i + 1); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/REST/13.php b/src/vitis/vas/rest/class/PEAR/REST/13.php deleted file mode 100755 index 875fd390715d5203db6a017c6f2b997b433f8051..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/REST/13.php +++ /dev/null @@ -1,280 +0,0 @@ -<?php -/** - * PEAR_REST_13 - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: 13.php,v 1.6 2008/04/11 01:16:40 dufuz Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a12 - */ - -/** - * For downloading REST xml/txt files - */ -require_once 'PEAR/REST.php'; -require_once 'PEAR/REST/10.php'; - -/** - * Implement REST 1.3 - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a12 - */ -class PEAR_REST_13 extends PEAR_REST_10 -{ - /** - * Retrieve information about a remote package to be downloaded from a REST server - * - * This is smart enough to resolve the minimum PHP version dependency prior to download - * @param string $base The uri to prepend to all REST calls - * @param array $packageinfo an array of format: - * <pre> - * array( - * 'package' => 'packagename', - * 'channel' => 'channelname', - * ['state' => 'alpha' (or valid state),] - * -or- - * ['version' => '1.whatever'] - * </pre> - * @param string $prefstate Current preferred_state config variable value - * @param bool $installed the installed version of this package to compare against - * @return array|false|PEAR_Error see {@link _returnDownloadURL()} - */ - function getDownloadURL($base, $packageinfo, $prefstate, $installed, $channel = false) - { - $channel = $packageinfo['channel']; - $package = $packageinfo['package']; - $states = $this->betterStates($prefstate, true); - if (!$states) { - return PEAR::raiseError('"' . $prefstate . '" is not a valid state'); - } - $state = isset($packageinfo['state']) ? $packageinfo['state'] : null; - $version = isset($packageinfo['version']) ? $packageinfo['version'] : null; - $info = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/allreleases2.xml'); - if (PEAR::isError($info)) { - return PEAR::raiseError('No releases available for package "' . - $channel . '/' . $package . '"'); - } - if (!isset($info['r'])) { - return false; - } - $release = $found = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - $skippedphp = false; - foreach ($info['r'] as $release) { - if (!isset($this->_rest->_options['force']) && ($installed && - version_compare($release['v'], $installed, '<'))) { - continue; - } - if (isset($state)) { - // try our preferred state first - if ($release['s'] == $state) { - if (!isset($version) && version_compare($release['m'], phpversion(), '>')) { - // skip releases that require a PHP version newer than our PHP version - $skippedphp = $release; - continue; - } - $found = true; - break; - } - // see if there is something newer and more stable - // bug #7221 - if (in_array($release['s'], $this->betterStates($state), true)) { - if (!isset($version) && version_compare($release['m'], phpversion(), '>')) { - // skip releases that require a PHP version newer than our PHP version - $skippedphp = $release; - continue; - } - $found = true; - break; - } - } elseif (isset($version)) { - if ($release['v'] == $version) { - if (!isset($this->_rest->_options['force']) && - !isset($version) && - version_compare($release['m'], phpversion(), '>')) { - // skip releases that require a PHP version newer than our PHP version - $skippedphp = $release; - continue; - } - $found = true; - break; - } - } else { - if (in_array($release['s'], $states)) { - if (version_compare($release['m'], phpversion(), '>')) { - // skip releases that require a PHP version newer than our PHP version - $skippedphp = $release; - continue; - } - $found = true; - break; - } - } - } - if (!$found && $skippedphp) { - $found = null; - } - return $this->_returnDownloadURL($base, $package, $release, $info, $found, $skippedphp, $channel); - } - - function getDepDownloadURL($base, $xsdversion, $dependency, $deppackage, - $prefstate = 'stable', $installed = false, $channel = false) - { - $channel = $dependency['channel']; - $package = $dependency['name']; - $states = $this->betterStates($prefstate, true); - if (!$states) { - return PEAR::raiseError('"' . $prefstate . '" is not a valid state'); - } - $state = isset($dependency['state']) ? $dependency['state'] : null; - $version = isset($dependency['version']) ? $dependency['version'] : null; - $info = $this->_rest->retrieveData($base . 'r/' . strtolower($package) . - '/allreleases2.xml'); - if (PEAR::isError($info)) { - return PEAR::raiseError('Package "' . $deppackage['channel'] . '/' . $deppackage['package'] - . '" dependency "' . $channel . '/' . $package . '" has no releases'); - } - if (!is_array($info) || !isset($info['r'])) { - return false; - } - $exclude = array(); - $min = $max = $recommended = false; - if ($xsdversion == '1.0') { - $pinfo['package'] = $dependency['name']; - $pinfo['channel'] = 'pear.php.net'; // this is always true - don't change this - switch ($dependency['rel']) { - case 'ge' : - $min = $dependency['version']; - break; - case 'gt' : - $min = $dependency['version']; - $exclude = array($dependency['version']); - break; - case 'eq' : - $recommended = $dependency['version']; - break; - case 'lt' : - $max = $dependency['version']; - $exclude = array($dependency['version']); - break; - case 'le' : - $max = $dependency['version']; - break; - case 'ne' : - $exclude = array($dependency['version']); - break; - } - } else { - $pinfo['package'] = $dependency['name']; - $min = isset($dependency['min']) ? $dependency['min'] : false; - $max = isset($dependency['max']) ? $dependency['max'] : false; - $recommended = isset($dependency['recommended']) ? - $dependency['recommended'] : false; - if (isset($dependency['exclude'])) { - if (!isset($dependency['exclude'][0])) { - $exclude = array($dependency['exclude']); - } - } - } - $found = false; - $release = false; - $skippedphp = false; - if (!is_array($info['r']) || !isset($info['r'][0])) { - $info['r'] = array($info['r']); - } - foreach ($info['r'] as $release) { - if (!isset($this->_rest->_options['force']) && ($installed && - version_compare($release['v'], $installed, '<'))) { - continue; - } - if (in_array($release['v'], $exclude)) { // skip excluded versions - continue; - } - // allow newer releases to say "I'm OK with the dependent package" - if ($xsdversion == '2.0' && isset($release['co'])) { - if (!is_array($release['co']) || !isset($release['co'][0])) { - $release['co'] = array($release['co']); - } - foreach ($release['co'] as $entry) { - if (isset($entry['x']) && !is_array($entry['x'])) { - $entry['x'] = array($entry['x']); - } elseif (!isset($entry['x'])) { - $entry['x'] = array(); - } - if ($entry['c'] == $deppackage['channel'] && - strtolower($entry['p']) == strtolower($deppackage['package']) && - version_compare($deppackage['version'], $entry['min'], '>=') && - version_compare($deppackage['version'], $entry['max'], '<=') && - !in_array($release['v'], $entry['x'])) { - if (version_compare($release['m'], phpversion(), '>')) { - // skip dependency releases that require a PHP version - // newer than our PHP version - $skippedphp = $release; - continue; - } - $recommended = $release['v']; - break; - } - } - } - if ($recommended) { - if ($release['v'] != $recommended) { // if we want a specific - // version, then skip all others - continue; - } else { - if (!in_array($release['s'], $states)) { - // the stability is too low, but we must return the - // recommended version if possible - return $this->_returnDownloadURL($base, $package, $release, $info, true, false, $channel); - } - } - } - if ($min && version_compare($release['v'], $min, 'lt')) { // skip too old versions - continue; - } - if ($max && version_compare($release['v'], $max, 'gt')) { // skip too new versions - continue; - } - if ($installed && version_compare($release['v'], $installed, '<')) { - continue; - } - if (in_array($release['s'], $states)) { // if in the preferred state... - if (version_compare($release['m'], phpversion(), '>')) { - // skip dependency releases that require a PHP version - // newer than our PHP version - $skippedphp = $release; - continue; - } - $found = true; // ... then use it - break; - } - } - if (!$found && $skippedphp) { - $found = null; - } - return $this->_returnDownloadURL($base, $package, $release, $info, $found, $skippedphp, $channel); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Registry.php b/src/vitis/vas/rest/class/PEAR/Registry.php deleted file mode 100755 index 556366d307321c1a2d7ef90ba663eb78b64ca11c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Registry.php +++ /dev/null @@ -1,2236 +0,0 @@ -<?php -/** - * PEAR_Registry - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V. V. Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Registry.php,v 1.171 2008/05/14 04:16:08 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * for PEAR_Error - */ -require_once 'PEAR.php'; -require_once 'PEAR/DependencyDB.php'; - -define('PEAR_REGISTRY_ERROR_LOCK', -2); -define('PEAR_REGISTRY_ERROR_FORMAT', -3); -define('PEAR_REGISTRY_ERROR_FILE', -4); -define('PEAR_REGISTRY_ERROR_CONFLICT', -5); -define('PEAR_REGISTRY_ERROR_CHANNEL_FILE', -6); - -/** - * Administration class used to maintain the installed package database. - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Tomas V. V. Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Registry extends PEAR -{ - // {{{ properties - - /** - * File containing all channel information. - * @var string - */ - var $channels = ''; - - /** Directory where registry files are stored. - * @var string - */ - var $statedir = ''; - - /** File where the file map is stored - * @var string - */ - var $filemap = ''; - - /** Directory where registry files for channels are stored. - * @var string - */ - var $channelsdir = ''; - - /** Name of file used for locking the registry - * @var string - */ - var $lockfile = ''; - - /** File descriptor used during locking - * @var resource - */ - var $lock_fp = null; - - /** Mode used during locking - * @var int - */ - var $lock_mode = 0; // XXX UNUSED - - /** Cache of package information. Structure: - * array( - * 'package' => array('id' => ... ), - * ... ) - * @var array - */ - var $pkginfo_cache = array(); - - /** Cache of file map. Structure: - * array( '/path/to/file' => 'package', ... ) - * @var array - */ - var $filemap_cache = array(); - - /** - * @var false|PEAR_ChannelFile - */ - var $_pearChannel; - - /** - * @var false|PEAR_ChannelFile - */ - var $_peclChannel; - - /** - * @var PEAR_DependencyDB - */ - var $_dependencyDB; - - /** - * @var PEAR_Config - */ - var $_config; - // }}} - - // {{{ constructor - - /** - * PEAR_Registry constructor. - * - * @param string (optional) PEAR install directory (for .php files) - * @param PEAR_ChannelFile PEAR_ChannelFile object representing the PEAR channel, if - * default values are not desired. Only used the very first time a PEAR - * repository is initialized - * @param PEAR_ChannelFile PEAR_ChannelFile object representing the PECL channel, if - * default values are not desired. Only used the very first time a PEAR - * repository is initialized - * - * @access public - */ - function PEAR_Registry($pear_install_dir = PEAR_INSTALL_DIR, $pear_channel = false, - $pecl_channel = false) - { - parent::PEAR(); - $this->setInstallDir($pear_install_dir); - $this->_pearChannel = $pear_channel; - $this->_peclChannel = $pecl_channel; - $this->_config = false; - } - - function setInstallDir($pear_install_dir = PEAR_INSTALL_DIR) - { - $ds = DIRECTORY_SEPARATOR; - $this->install_dir = $pear_install_dir; - $this->channelsdir = $pear_install_dir.$ds.'.channels'; - $this->statedir = $pear_install_dir.$ds.'.registry'; - $this->filemap = $pear_install_dir.$ds.'.filemap'; - $this->lockfile = $pear_install_dir.$ds.'.lock'; - } - - function hasWriteAccess() - { - if (!file_exists($this->install_dir)) { - $dir = $this->install_dir; - while ($dir && $dir != '.') { - $olddir = $dir; - $dir = dirname($dir); // cd .. - if ($dir != '.' && file_exists($dir)) { - if (is_writeable($dir)) { - return true; - } else { - return false; - } - } - if ($dir == $olddir) { // this can happen in safe mode - return @is_writable($dir); - } - } - return false; - } - return is_writeable($this->install_dir); - } - - function setConfig(&$config, $resetInstallDir = true) - { - $this->_config = &$config; - if ($resetInstallDir) { - $this->setInstallDir($config->get('php_dir')); - } - } - - function _initializeChannelDirs() - { - static $running = false; - if (!$running) { - $running = true; - $ds = DIRECTORY_SEPARATOR; - if (!is_dir($this->channelsdir) || - !file_exists($this->channelsdir . $ds . 'pear.php.net.reg') || - !file_exists($this->channelsdir . $ds . 'pecl.php.net.reg') || - !file_exists($this->channelsdir . $ds . '__uri.reg')) { - if (!file_exists($this->channelsdir . $ds . 'pear.php.net.reg')) { - $pear_channel = $this->_pearChannel; - if (!is_a($pear_channel, 'PEAR_ChannelFile') || !$pear_channel->validate()) { - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $pear_channel = new PEAR_ChannelFile; - $pear_channel->setName('pear.php.net'); - $pear_channel->setAlias('pear'); - $pear_channel->setServer('pear.php.net'); - $pear_channel->setSummary('PHP Extension and Application Repository'); - $pear_channel->setDefaultPEARProtocols(); - $pear_channel->setBaseURL('REST1.0', 'http://pear.php.net/rest/'); - $pear_channel->setBaseURL('REST1.1', 'http://pear.php.net/rest/'); - } else { - $pear_channel->setName('pear.php.net'); - $pear_channel->setAlias('pear'); - } - $pear_channel->validate(); - $this->_addChannel($pear_channel); - } - if (!file_exists($this->channelsdir . $ds . 'pecl.php.net.reg')) { - $pecl_channel = $this->_peclChannel; - if (!is_a($pecl_channel, 'PEAR_ChannelFile') || !$pecl_channel->validate()) { - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $pecl_channel = new PEAR_ChannelFile; - $pecl_channel->setName('pecl.php.net'); - $pecl_channel->setAlias('pecl'); - $pecl_channel->setServer('pecl.php.net'); - $pecl_channel->setSummary('PHP Extension Community Library'); - $pecl_channel->setDefaultPEARProtocols(); - $pecl_channel->setBaseURL('REST1.0', 'http://pecl.php.net/rest/'); - $pecl_channel->setBaseURL('REST1.1', 'http://pecl.php.net/rest/'); - $pecl_channel->setValidationPackage('PEAR_Validator_PECL', '1.0'); - } else { - $pecl_channel->setName('pecl.php.net'); - $pecl_channel->setAlias('pecl'); - } - $pecl_channel->validate(); - $this->_addChannel($pecl_channel); - } - if (!file_exists($this->channelsdir . $ds . '__uri.reg')) { - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $private = new PEAR_ChannelFile; - $private->setName('__uri'); - $private->addFunction('xmlrpc', '1.0', '****'); - $private->setSummary('Pseudo-channel for static packages'); - $this->_addChannel($private); - } - $this->_rebuildFileMap(); - } - $running = false; - } - } - - function _initializeDirs() - { - $ds = DIRECTORY_SEPARATOR; - // XXX Compatibility code should be removed in the future - // rename all registry files if any to lowercase - if (!OS_WINDOWS && file_exists($this->statedir) && is_dir($this->statedir) && - $handle = opendir($this->statedir)) { - $dest = $this->statedir . $ds; - while (false !== ($file = readdir($handle))) { - if (preg_match('/^.*[A-Z].*\.reg\\z/', $file)) { - rename($dest . $file, $dest . strtolower($file)); - } - } - closedir($handle); - } - $this->_initializeChannelDirs(); - if (!file_exists($this->filemap)) { - $this->_rebuildFileMap(); - } - $this->_initializeDepDB(); - } - - function _initializeDepDB() - { - if (!isset($this->_dependencyDB)) { - static $initializing = false; - if (!$initializing) { - $initializing = true; - if (!$this->_config) { // never used? - if (OS_WINDOWS) { - $file = 'pear.ini'; - } else { - $file = '.pearrc'; - } - $this->_config = &new PEAR_Config($this->statedir . DIRECTORY_SEPARATOR . - $file); - $this->_config->setRegistry($this); - $this->_config->set('php_dir', $this->install_dir); - } - $this->_dependencyDB = &PEAR_DependencyDB::singleton($this->_config); - if (PEAR::isError($this->_dependencyDB)) { - // attempt to recover by removing the dep db - if (file_exists($this->_config->get('php_dir', null, 'pear.php.net') . - DIRECTORY_SEPARATOR . '.depdb')) { - @unlink($this->_config->get('php_dir', null, 'pear.php.net') . - DIRECTORY_SEPARATOR . '.depdb'); - } - $this->_dependencyDB = &PEAR_DependencyDB::singleton($this->_config); - if (PEAR::isError($this->_dependencyDB)) { - echo $this->_dependencyDB->getMessage(); - echo 'Unrecoverable error'; - exit(1); - } - } - $initializing = false; - } - } - } - // }}} - // {{{ destructor - - /** - * PEAR_Registry destructor. Makes sure no locks are forgotten. - * - * @access private - */ - function _PEAR_Registry() - { - parent::_PEAR(); - if (is_resource($this->lock_fp)) { - $this->_unlock(); - } - } - - // }}} - - // {{{ _assertStateDir() - - /** - * Make sure the directory where we keep registry files exists. - * - * @return bool TRUE if directory exists, FALSE if it could not be - * created - * - * @access private - */ - function _assertStateDir($channel = false) - { - if ($channel && $this->_getChannelFromAlias($channel) != 'pear.php.net') { - return $this->_assertChannelStateDir($channel); - } - static $init = false; - if (!file_exists($this->statedir)) { - if (!$this->hasWriteAccess()) { - return false; - } - require_once 'System.php'; - if (!System::mkdir(array('-p', $this->statedir))) { - return $this->raiseError("could not create directory '{$this->statedir}'"); - } - $init = true; - } elseif (!is_dir($this->statedir)) { - return $this->raiseError('Cannot create directory ' . $this->statedir . ', ' . - 'it already exists and is not a directory'); - } - $ds = DIRECTORY_SEPARATOR; - if (!file_exists($this->channelsdir)) { - if (!file_exists($this->channelsdir . $ds . 'pear.php.net.reg') || - !file_exists($this->channelsdir . $ds . 'pecl.php.net.reg') || - !file_exists($this->channelsdir . $ds . '__uri.reg')) { - $init = true; - } - } elseif (!is_dir($this->channelsdir)) { - return $this->raiseError('Cannot create directory ' . $this->channelsdir . ', ' . - 'it already exists and is not a directory'); - } - if ($init) { - static $running = false; - if (!$running) { - $running = true; - $this->_initializeDirs(); - $running = false; - $init = false; - } - } else { - $this->_initializeDepDB(); - } - return true; - } - - // }}} - // {{{ _assertChannelStateDir() - - /** - * Make sure the directory where we keep registry files exists for a non-standard channel. - * - * @param string channel name - * @return bool TRUE if directory exists, FALSE if it could not be - * created - * - * @access private - */ - function _assertChannelStateDir($channel) - { - $ds = DIRECTORY_SEPARATOR; - if (!$channel || $this->_getChannelFromAlias($channel) == 'pear.php.net') { - if (!file_exists($this->channelsdir . $ds . 'pear.php.net.reg')) { - $this->_initializeChannelDirs(); - } - return $this->_assertStateDir($channel); - } - $channelDir = $this->_channelDirectoryName($channel); - if (!is_dir($this->channelsdir) || - !file_exists($this->channelsdir . $ds . 'pear.php.net.reg')) { - $this->_initializeChannelDirs(); - } - if (!file_exists($channelDir)) { - if (!$this->hasWriteAccess()) { - return false; - } - require_once 'System.php'; - if (!System::mkdir(array('-p', $channelDir))) { - return $this->raiseError("could not create directory '" . $channelDir . - "'"); - } - } elseif (!is_dir($channelDir)) { - return $this->raiseError("could not create directory '" . $channelDir . - "', already exists and is not a directory"); - } - return true; - } - - // }}} - // {{{ _assertChannelDir() - - /** - * Make sure the directory where we keep registry files for channels exists - * - * @return bool TRUE if directory exists, FALSE if it could not be - * created - * - * @access private - */ - function _assertChannelDir() - { - if (!file_exists($this->channelsdir)) { - if (!$this->hasWriteAccess()) { - return false; - } - require_once 'System.php'; - if (!System::mkdir(array('-p', $this->channelsdir))) { - return $this->raiseError("could not create directory '{$this->channelsdir}'"); - } - } elseif (!is_dir($this->channelsdir)) { - return $this->raiseError("could not create directory '{$this->channelsdir}" . - "', it already exists and is not a directory"); - - } - if (!file_exists($this->channelsdir . DIRECTORY_SEPARATOR . '.alias')) { - if (!$this->hasWriteAccess()) { - return false; - } - require_once 'System.php'; - if (!System::mkdir(array('-p', $this->channelsdir . DIRECTORY_SEPARATOR . '.alias'))) { - return $this->raiseError("could not create directory '{$this->channelsdir}/.alias'"); - } - } elseif (!is_dir($this->channelsdir . DIRECTORY_SEPARATOR . '.alias')) { - return $this->raiseError("could not create directory '{$this->channelsdir}" . - "/.alias', it already exists and is not a directory"); - - } - return true; - } - - // }}} - // {{{ _packageFileName() - - /** - * Get the name of the file where data for a given package is stored. - * - * @param string channel name, or false if this is a PEAR package - * @param string package name - * - * @return string registry file name - * - * @access public - */ - function _packageFileName($package, $channel = false) - { - if ($channel && $this->_getChannelFromAlias($channel) != 'pear.php.net') { - return $this->_channelDirectoryName($channel) . DIRECTORY_SEPARATOR . - strtolower($package) . '.reg'; - } - return $this->statedir . DIRECTORY_SEPARATOR . strtolower($package) . '.reg'; - } - - // }}} - // {{{ _channelFileName() - - /** - * Get the name of the file where data for a given channel is stored. - * @param string channel name - * @return string registry file name - */ - function _channelFileName($channel, $noaliases = false) - { - if (!$noaliases) { - if (file_exists($this->_getChannelAliasFileName($channel))) { - $channel = implode('', file($this->_getChannelAliasFileName($channel))); - } - } - return $this->channelsdir . DIRECTORY_SEPARATOR . str_replace('/', '_', - strtolower($channel)) . '.reg'; - } - - // }}} - // {{{ getChannelAliasFileName() - - /** - * @param string - * @return string - */ - function _getChannelAliasFileName($alias) - { - return $this->channelsdir . DIRECTORY_SEPARATOR . '.alias' . - DIRECTORY_SEPARATOR . str_replace('/', '_', strtolower($alias)) . '.txt'; - } - - // }}} - // {{{ _getChannelFromAlias() - - /** - * Get the name of a channel from its alias - */ - function _getChannelFromAlias($channel) - { - if (!$this->_channelExists($channel)) { - if ($channel == 'pear.php.net') { - return 'pear.php.net'; - } - if ($channel == 'pecl.php.net') { - return 'pecl.php.net'; - } - if ($channel == '__uri') { - return '__uri'; - } - return false; - } - $channel = strtolower($channel); - if (file_exists($this->_getChannelAliasFileName($channel))) { - // translate an alias to an actual channel - return implode('', file($this->_getChannelAliasFileName($channel))); - } else { - return $channel; - } - } - // }}} - // {{{ _getChannelFromAlias() - - /** - * Get the alias of a channel from its alias or its name - */ - function _getAlias($channel) - { - if (!$this->_channelExists($channel)) { - if ($channel == 'pear.php.net') { - return 'pear'; - } - if ($channel == 'pecl.php.net') { - return 'pecl'; - } - return false; - } - $channel = $this->_getChannel($channel); - if (PEAR::isError($channel)) { - return $channel; - } - return $channel->getAlias(); - } - // }}} - // {{{ _channelDirectoryName() - - /** - * Get the name of the file where data for a given package is stored. - * - * @param string channel name, or false if this is a PEAR package - * @param string package name - * - * @return string registry file name - * - * @access public - */ - function _channelDirectoryName($channel) - { - if (!$channel || $this->_getChannelFromAlias($channel) == 'pear.php.net') { - return $this->statedir; - } else { - $ch = $this->_getChannelFromAlias($channel); - if (!$ch) { - $ch = $channel; - } - return $this->statedir . DIRECTORY_SEPARATOR . strtolower('.channel.' . - str_replace('/', '_', $ch)); - } - } - - // }}} - // {{{ _openPackageFile() - - function _openPackageFile($package, $mode, $channel = false) - { - if (!$this->_assertStateDir($channel)) { - return null; - } - if (!in_array($mode, array('r', 'rb')) && !$this->hasWriteAccess()) { - return null; - } - $file = $this->_packageFileName($package, $channel); - if (!file_exists($file) && $mode == 'r' || $mode == 'rb') { - return null; - } - $fp = @fopen($file, $mode); - if (!$fp) { - return null; - } - return $fp; - } - - // }}} - // {{{ _closePackageFile() - - function _closePackageFile($fp) - { - fclose($fp); - } - - // }}} - // {{{ _openChannelFile() - - function _openChannelFile($channel, $mode) - { - if (!$this->_assertChannelDir()) { - return null; - } - if (!in_array($mode, array('r', 'rb')) && !$this->hasWriteAccess()) { - return null; - } - $file = $this->_channelFileName($channel); - if (!file_exists($file) && $mode == 'r' || $mode == 'rb') { - return null; - } - $fp = @fopen($file, $mode); - if (!$fp) { - return null; - } - return $fp; - } - - // }}} - // {{{ _closePackageFile() - - function _closeChannelFile($fp) - { - fclose($fp); - } - - // }}} - // {{{ _rebuildFileMap() - - function _rebuildFileMap() - { - if (!class_exists('PEAR_Installer_Role')) { - require_once 'PEAR/Installer/Role.php'; - } - $channels = $this->_listAllPackages(); - $files = array(); - foreach ($channels as $channel => $packages) { - foreach ($packages as $package) { - $version = $this->_packageInfo($package, 'version', $channel); - $filelist = $this->_packageInfo($package, 'filelist', $channel); - if (!is_array($filelist)) { - continue; - } - foreach ($filelist as $name => $attrs) { - if (isset($attrs['attribs'])) { - $attrs = $attrs['attribs']; - } - // it is possible for conflicting packages in different channels to - // conflict with data files/doc files - if ($name == 'dirtree') { - continue; - } - if (isset($attrs['role']) && !in_array($attrs['role'], - PEAR_Installer_Role::getInstallableRoles())) { - // these are not installed - continue; - } - if (isset($attrs['role']) && !in_array($attrs['role'], - PEAR_Installer_Role::getBaseinstallRoles())) { - $attrs['baseinstalldir'] = $package; - } - if (isset($attrs['baseinstalldir'])) { - $file = $attrs['baseinstalldir'].DIRECTORY_SEPARATOR.$name; - } else { - $file = $name; - } - $file = preg_replace(',^/+,', '', $file); - if ($channel != 'pear.php.net') { - if (!isset($files[$attrs['role']])) { - $files[$attrs['role']] = array(); - } - $files[$attrs['role']][$file] = array(strtolower($channel), - strtolower($package)); - } else { - if (!isset($files[$attrs['role']])) { - $files[$attrs['role']] = array(); - } - $files[$attrs['role']][$file] = strtolower($package); - } - } - } - } - $this->_assertStateDir(); - if (!$this->hasWriteAccess()) { - return false; - } - $fp = @fopen($this->filemap, 'wb'); - if (!$fp) { - return false; - } - $this->filemap_cache = $files; - fwrite($fp, serialize($files)); - fclose($fp); - return true; - } - - // }}} - // {{{ _readFileMap() - - function _readFileMap() - { - if (!file_exists($this->filemap)) { - return array(); - } - $fp = @fopen($this->filemap, 'r'); - if (!$fp) { - return $this->raiseError('PEAR_Registry: could not open filemap "' . $this->filemap . '"', PEAR_REGISTRY_ERROR_FILE, null, null, $php_errormsg); - } - clearstatcache(); - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - $fsize = filesize($this->filemap); - fclose($fp); - $data = file_get_contents($this->filemap); - set_magic_quotes_runtime($rt); - $tmp = unserialize($data); - if (!$tmp && $fsize > 7) { - return $this->raiseError('PEAR_Registry: invalid filemap data', PEAR_REGISTRY_ERROR_FORMAT, null, null, $data); - } - $this->filemap_cache = $tmp; - return true; - } - - // }}} - // {{{ _lock() - - /** - * Lock the registry. - * - * @param integer lock mode, one of LOCK_EX, LOCK_SH or LOCK_UN. - * See flock manual for more information. - * - * @return bool TRUE on success, FALSE if locking failed, or a - * PEAR error if some other error occurs (such as the - * lock file not being writable). - * - * @access private - */ - function _lock($mode = LOCK_EX) - { - if (!eregi('Windows 9', php_uname())) { - if ($mode != LOCK_UN && is_resource($this->lock_fp)) { - // XXX does not check type of lock (LOCK_SH/LOCK_EX) - return true; - } - if (!$this->_assertStateDir()) { - if ($mode == LOCK_EX) { - return $this->raiseError('Registry directory is not writeable by the current user'); - } else { - return true; - } - } - $open_mode = 'w'; - // XXX People reported problems with LOCK_SH and 'w' - if ($mode === LOCK_SH || $mode === LOCK_UN) { - if (!file_exists($this->lockfile)) { - touch($this->lockfile); - } - $open_mode = 'r'; - } - - if (!is_resource($this->lock_fp)) { - $this->lock_fp = @fopen($this->lockfile, $open_mode); - } - - if (!is_resource($this->lock_fp)) { - $this->lock_fp = null; - return $this->raiseError("could not create lock file" . - (isset($php_errormsg) ? ": " . $php_errormsg : "")); - } - if (!(int)flock($this->lock_fp, $mode)) { - switch ($mode) { - case LOCK_SH: $str = 'shared'; break; - case LOCK_EX: $str = 'exclusive'; break; - case LOCK_UN: $str = 'unlock'; break; - default: $str = 'unknown'; break; - } - //is resource at this point, close it on error. - fclose($this->lock_fp); - $this->lock_fp = null; - return $this->raiseError("could not acquire $str lock ($this->lockfile)", - PEAR_REGISTRY_ERROR_LOCK); - } - } - return true; - } - - // }}} - // {{{ _unlock() - - function _unlock() - { - $ret = $this->_lock(LOCK_UN); - if (is_resource($this->lock_fp)) { - fclose($this->lock_fp); - } - $this->lock_fp = null; - return $ret; - } - - // }}} - // {{{ _packageExists() - - function _packageExists($package, $channel = false) - { - return file_exists($this->_packageFileName($package, $channel)); - } - - // }}} - // {{{ _channelExists() - - /** - * Determine whether a channel exists in the registry - * @param string Channel name - * @param bool if true, then aliases will be ignored - * @return boolean - */ - function _channelExists($channel, $noaliases = false) - { - $a = file_exists($this->_channelFileName($channel, $noaliases)); - if (!$a && $channel == 'pear.php.net') { - return true; - } - if (!$a && $channel == 'pecl.php.net') { - return true; - } - return $a; - } - - // }}} - // {{{ _addChannel() - - /** - * @param PEAR_ChannelFile Channel object - * @param donotuse - * @param string Last-Modified HTTP tag from remote request - * @return boolean|PEAR_Error True on creation, false if it already exists - */ - function _addChannel($channel, $update = false, $lastmodified = false) - { - if (!is_a($channel, 'PEAR_ChannelFile')) { - return false; - } - if (!$channel->validate()) { - return false; - } - if (file_exists($this->_channelFileName($channel->getName()))) { - if (!$update) { - return false; - } - $checker = $this->_getChannel($channel->getName()); - if (PEAR::isError($checker)) { - return $checker; - } - if ($channel->getAlias() != $checker->getAlias()) { - if (file_exists($this->_getChannelAliasFileName($checker->getAlias()))) { - @unlink($this->_getChannelAliasFileName($checker->getAlias())); - } - } - } else { - if ($update && !in_array($channel->getName(), array('pear.php.net', 'pecl.php.net'))) { - return false; - } - } - $ret = $this->_assertChannelDir(); - if (PEAR::isError($ret)) { - return $ret; - } - $ret = $this->_assertChannelStateDir($channel->getName()); - if (PEAR::isError($ret)) { - return $ret; - } - if ($channel->getAlias() != $channel->getName()) { - if (file_exists($this->_getChannelAliasFileName($channel->getAlias())) && - $this->_getChannelFromAlias($channel->getAlias()) != $channel->getName()) { - $channel->setAlias($channel->getName()); - } - if (!$this->hasWriteAccess()) { - return false; - } - $fp = @fopen($this->_getChannelAliasFileName($channel->getAlias()), 'w'); - if (!$fp) { - return false; - } - fwrite($fp, $channel->getName()); - fclose($fp); - } - if (!$this->hasWriteAccess()) { - return false; - } - $fp = @fopen($this->_channelFileName($channel->getName()), 'wb'); - if (!$fp) { - return false; - } - $info = $channel->toArray(); - if ($lastmodified) { - $info['_lastmodified'] = $lastmodified; - } else { - $info['_lastmodified'] = date('r'); - } - fwrite($fp, serialize($info)); - fclose($fp); - return true; - } - - // }}} - // {{{ _deleteChannel() - - /** - * Deletion fails if there are any packages installed from the channel - * @param string|PEAR_ChannelFile channel name - * @return boolean|PEAR_Error True on deletion, false if it doesn't exist - */ - function _deleteChannel($channel) - { - if (!is_string($channel)) { - if (is_a($channel, 'PEAR_ChannelFile')) { - if (!$channel->validate()) { - return false; - } - $channel = $channel->getName(); - } else { - return false; - } - } - if ($this->_getChannelFromAlias($channel) == '__uri') { - return false; - } - if ($this->_getChannelFromAlias($channel) == 'pecl.php.net') { - return false; - } - if (!$this->_channelExists($channel)) { - return false; - } - if (!$channel || $this->_getChannelFromAlias($channel) == 'pear.php.net') { - return false; - } - $channel = $this->_getChannelFromAlias($channel); - if ($channel == 'pear.php.net') { - return false; - } - $test = $this->_listChannelPackages($channel); - if (count($test)) { - return false; - } - $test = @rmdir($this->_channelDirectoryName($channel)); - if (!$test) { - return false; - } - $file = $this->_getChannelAliasFileName($this->_getAlias($channel)); - if (file_exists($file)) { - $test = @unlink($file); - if (!$test) { - return false; - } - } - $file = $this->_channelFileName($channel); - $ret = true; - if (file_exists($file)) { - $ret = @unlink($file); - } - return $ret; - } - - // }}} - // {{{ _isChannelAlias() - - /** - * Determine whether a channel exists in the registry - * @param string Channel Alias - * @return boolean - */ - function _isChannelAlias($alias) - { - return file_exists($this->_getChannelAliasFileName($alias)); - } - - // }}} - // {{{ _packageInfo() - - /** - * @param string|null - * @param string|null - * @param string|null - * @return array|null - * @access private - */ - function _packageInfo($package = null, $key = null, $channel = 'pear.php.net') - { - if ($package === null) { - if ($channel === null) { - $channels = $this->_listChannels(); - $ret = array(); - foreach ($channels as $channel) { - $channel = strtolower($channel); - $ret[$channel] = array(); - $packages = $this->_listPackages($channel); - foreach ($packages as $package) { - $ret[$channel][] = $this->_packageInfo($package, null, $channel); - } - } - return $ret; - } - $ps = $this->_listPackages($channel); - if (!count($ps)) { - return array(); - } - return array_map(array(&$this, '_packageInfo'), - $ps, array_fill(0, count($ps), null), - array_fill(0, count($ps), $channel)); - } - $fp = $this->_openPackageFile($package, 'r', $channel); - if ($fp === null) { - return null; - } - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - clearstatcache(); - $this->_closePackageFile($fp); - $data = file_get_contents($this->_packageFileName($package, $channel)); - set_magic_quotes_runtime($rt); - $data = unserialize($data); - if ($key === null) { - return $data; - } - // compatibility for package.xml version 2.0 - if (isset($data['old'][$key])) { - return $data['old'][$key]; - } - if (isset($data[$key])) { - return $data[$key]; - } - return null; - } - - // }}} - // {{{ _channelInfo() - - /** - * @param string Channel name - * @param bool whether to strictly retrieve info of channels, not just aliases - * @return array|null - */ - function _channelInfo($channel, $noaliases = false) - { - if (!$this->_channelExists($channel, $noaliases)) { - return null; - } - $fp = $this->_openChannelFile($channel, 'r'); - if ($fp === null) { - return null; - } - $rt = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - clearstatcache(); - $this->_closeChannelFile($fp); - $data = file_get_contents($this->_channelFileName($channel)); - set_magic_quotes_runtime($rt); - $data = unserialize($data); - return $data; - } - - // }}} - // {{{ _listChannels() - - function _listChannels() - { - $channellist = array(); - if (!file_exists($this->channelsdir) || !is_dir($this->channelsdir)) { - return array('pear.php.net', 'pecl.php.net', '__uri'); - } - $dp = opendir($this->channelsdir); - while ($ent = readdir($dp)) { - if ($ent{0} == '.' || substr($ent, -4) != '.reg') { - continue; - } - if ($ent == '__uri.reg') { - $channellist[] = '__uri'; - continue; - } - $channellist[] = str_replace('_', '/', substr($ent, 0, -4)); - } - closedir($dp); - if (!in_array('pear.php.net', $channellist)) { - $channellist[] = 'pear.php.net'; - } - if (!in_array('pecl.php.net', $channellist)) { - $channellist[] = 'pecl.php.net'; - } - if (!in_array('__uri', $channellist)) { - $channellist[] = '__uri'; - } - - natsort($channellist); - return $channellist; - } - - // }}} - // {{{ _listPackages() - - function _listPackages($channel = false) - { - if ($channel && $this->_getChannelFromAlias($channel) != 'pear.php.net') { - return $this->_listChannelPackages($channel); - } - if (!file_exists($this->statedir) || !is_dir($this->statedir)) { - return array(); - } - $pkglist = array(); - $dp = opendir($this->statedir); - if (!$dp) { - return $pkglist; - } - while ($ent = readdir($dp)) { - if ($ent{0} == '.' || substr($ent, -4) != '.reg') { - continue; - } - $pkglist[] = substr($ent, 0, -4); - } - closedir($dp); - return $pkglist; - } - - // }}} - // {{{ _listChannelPackages() - - function _listChannelPackages($channel) - { - $pkglist = array(); - if (!file_exists($this->_channelDirectoryName($channel)) || - !is_dir($this->_channelDirectoryName($channel))) { - return array(); - } - $dp = opendir($this->_channelDirectoryName($channel)); - if (!$dp) { - return $pkglist; - } - while ($ent = readdir($dp)) { - if ($ent{0} == '.' || substr($ent, -4) != '.reg') { - continue; - } - $pkglist[] = substr($ent, 0, -4); - } - closedir($dp); - return $pkglist; - } - - // }}} - - function _listAllPackages() - { - $ret = array(); - foreach ($this->_listChannels() as $channel) { - $ret[$channel] = $this->_listPackages($channel); - } - return $ret; - } - - /** - * Add an installed package to the registry - * @param string package name - * @param array package info (parsed by PEAR_Common::infoFrom*() methods) - * @return bool success of saving - * @access private - */ - function _addPackage($package, $info) - { - if ($this->_packageExists($package)) { - return false; - } - $fp = $this->_openPackageFile($package, 'wb'); - if ($fp === null) { - return false; - } - $info['_lastmodified'] = time(); - fwrite($fp, serialize($info)); - $this->_closePackageFile($fp); - if (isset($info['filelist'])) { - $this->_rebuildFileMap(); - } - return true; - } - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @return bool - * @access private - */ - function _addPackage2($info) - { - if (!is_a($info, 'PEAR_PackageFile_v1') && !is_a($info, 'PEAR_PackageFile_v2')) { - return false; - } - - if (!$info->validate()) { - if (class_exists('PEAR_Common')) { - $ui = PEAR_Frontend::singleton(); - if ($ui) { - foreach ($info->getValidationWarnings() as $err) { - $ui->log($err['message'], true); - } - } - } - return false; - } - $channel = $info->getChannel(); - $package = $info->getPackage(); - $save = $info; - if ($this->_packageExists($package, $channel)) { - return false; - } - if (!$this->_channelExists($channel, true)) { - return false; - } - $info = $info->toArray(true); - if (!$info) { - return false; - } - $fp = $this->_openPackageFile($package, 'wb', $channel); - if ($fp === null) { - return false; - } - $info['_lastmodified'] = time(); - fwrite($fp, serialize($info)); - $this->_closePackageFile($fp); - $this->_rebuildFileMap(); - return true; - } - - /** - * @param string Package name - * @param array parsed package.xml 1.0 - * @param bool this parameter is only here for BC. Don't use it. - * @access private - */ - function _updatePackage($package, $info, $merge = true) - { - $oldinfo = $this->_packageInfo($package); - if (empty($oldinfo)) { - return false; - } - $fp = $this->_openPackageFile($package, 'w'); - if ($fp === null) { - return false; - } - if (is_object($info)) { - $info = $info->toArray(); - } - $info['_lastmodified'] = time(); - $newinfo = $info; - if ($merge) { - $info = array_merge($oldinfo, $info); - } else { - $diff = $info; - } - fwrite($fp, serialize($info)); - $this->_closePackageFile($fp); - if (isset($newinfo['filelist'])) { - $this->_rebuildFileMap(); - } - return true; - } - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @return bool - * @access private - */ - function _updatePackage2($info) - { - if (!$this->_packageExists($info->getPackage(), $info->getChannel())) { - return false; - } - $fp = $this->_openPackageFile($info->getPackage(), 'w', $info->getChannel()); - if ($fp === null) { - return false; - } - $save = $info; - $info = $save->getArray(true); - $info['_lastmodified'] = time(); - fwrite($fp, serialize($info)); - $this->_closePackageFile($fp); - $this->_rebuildFileMap(); - return true; - } - - /** - * @param string Package name - * @param string Channel name - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2|null - * @access private - */ - function &_getPackage($package, $channel = 'pear.php.net') - { - $info = $this->_packageInfo($package, null, $channel); - if ($info === null) { - return $info; - } - $a = $this->_config; - if (!$a) { - $this->_config = &new PEAR_Config; - $this->_config->set('php_dir', $this->statedir); - } - if (!class_exists('PEAR_PackageFile')) { - require_once 'PEAR/PackageFile.php'; - } - $pkg = &new PEAR_PackageFile($this->_config); - $pf = &$pkg->fromArray($info); - return $pf; - } - - /** - * @param string channel name - * @param bool whether to strictly retrieve channel names - * @return PEAR_ChannelFile|PEAR_Error - * @access private - */ - function &_getChannel($channel, $noaliases = false) - { - $ch = false; - if ($this->_channelExists($channel, $noaliases)) { - $chinfo = $this->_channelInfo($channel, $noaliases); - if ($chinfo) { - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $ch = &PEAR_ChannelFile::fromArrayWithErrors($chinfo); - } - } - if ($ch) { - if ($ch->validate()) { - return $ch; - } - foreach ($ch->getErrors(true) as $err) { - $message = $err['message'] . "\n"; - } - $ch = PEAR::raiseError($message); - return $ch; - } - if ($this->_getChannelFromAlias($channel) == 'pear.php.net') { - // the registry is not properly set up, so use defaults - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $pear_channel = new PEAR_ChannelFile; - $pear_channel->setName('pear.php.net'); - $pear_channel->setAlias('pear'); - $pear_channel->setSummary('PHP Extension and Application Repository'); - $pear_channel->setDefaultPEARProtocols(); - $pear_channel->setBaseURL('REST1.0', 'http://pear.php.net/rest/'); - $pear_channel->setBaseURL('REST1.1', 'http://pear.php.net/rest/'); - return $pear_channel; - } - if ($this->_getChannelFromAlias($channel) == 'pecl.php.net') { - // the registry is not properly set up, so use defaults - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $pear_channel = new PEAR_ChannelFile; - $pear_channel->setName('pecl.php.net'); - $pear_channel->setAlias('pecl'); - $pear_channel->setSummary('PHP Extension Community Library'); - $pear_channel->setDefaultPEARProtocols(); - $pear_channel->setBaseURL('REST1.0', 'http://pecl.php.net/rest/'); - $pear_channel->setBaseURL('REST1.1', 'http://pecl.php.net/rest/'); - $pear_channel->setValidationPackage('PEAR_Validator_PECL', '1.0'); - return $pear_channel; - } - if ($this->_getChannelFromAlias($channel) == '__uri') { - // the registry is not properly set up, so use defaults - if (!class_exists('PEAR_ChannelFile')) { - require_once 'PEAR/ChannelFile.php'; - } - $private = new PEAR_ChannelFile; - $private->setName('__uri'); - $private->addFunction('xmlrpc', '1.0', '****'); - $private->setSummary('Pseudo-channel for static packages'); - return $private; - } - return $ch; - } - - // {{{ packageExists() - - /** - * @param string Package name - * @param string Channel name - * @return bool - */ - function packageExists($package, $channel = 'pear.php.net') - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_packageExists($package, $channel); - $this->_unlock(); - return $ret; - } - - // }}} - - // {{{ channelExists() - - /** - * @param string channel name - * @param bool if true, then aliases will be ignored - * @return bool - */ - function channelExists($channel, $noaliases = false) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_channelExists($channel, $noaliases); - $this->_unlock(); - return $ret; - } - - // }}} - - // {{{ isAlias() - - /** - * Determines whether the parameter is an alias of a channel - * @param string - * @return bool - */ - function isAlias($alias) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_isChannelAlias($alias); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ packageInfo() - - /** - * @param string|null - * @param string|null - * @param string - * @return array|null - */ - function packageInfo($package = null, $key = null, $channel = 'pear.php.net') - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_packageInfo($package, $key, $channel); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ channelInfo() - - /** - * Retrieve a raw array of channel data. - * - * Do not use this, instead use {@link getChannel()} for normal - * operations. Array structure is undefined in this method - * @param string channel name - * @param bool whether to strictly retrieve information only on non-aliases - * @return array|null|PEAR_Error - */ - function channelInfo($channel = null, $noaliases = false) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_channelInfo($channel, $noaliases); - $this->_unlock(); - return $ret; - } - - // }}} - - /** - * @param string - */ - function channelName($channel) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_getChannelFromAlias($channel); - $this->_unlock(); - return $ret; - } - - /** - * @param string - */ - function channelAlias($channel) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_getAlias($channel); - $this->_unlock(); - return $ret; - } - // {{{ listPackages() - - function listPackages($channel = false) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_listPackages($channel); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ listAllPackages() - - function listAllPackages() - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_listAllPackages(); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ listChannel() - - function listChannels() - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = $this->_listChannels(); - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ addPackage() - - /** - * Add an installed package to the registry - * @param string|PEAR_PackageFile_v1|PEAR_PackageFile_v2 package name or object - * that will be passed to {@link addPackage2()} - * @param array package info (parsed by PEAR_Common::infoFrom*() methods) - * @return bool success of saving - */ - function addPackage($package, $info) - { - if (is_object($info)) { - return $this->addPackage2($info); - } - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $ret = $this->_addPackage($package, $info); - $this->_unlock(); - if ($ret) { - if (!class_exists('PEAR_PackageFile_v1')) { - require_once 'PEAR/PackageFile/v1.php'; - } - $pf = new PEAR_PackageFile_v1; - $pf->setConfig($this->_config); - $pf->fromArray($info); - $this->_dependencyDB->uninstallPackage($pf); - $this->_dependencyDB->installPackage($pf); - } - return $ret; - } - - // }}} - // {{{ addPackage2() - - function addPackage2($info) - { - if (!is_object($info)) { - return $this->addPackage($info['package'], $info); - } - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $ret = $this->_addPackage2($info); - $this->_unlock(); - if ($ret) { - $this->_dependencyDB->uninstallPackage($info); - $this->_dependencyDB->installPackage($info); - } - return $ret; - } - - // }}} - // {{{ updateChannel() - - /** - * For future expandibility purposes, separate this - * @param PEAR_ChannelFile - */ - function updateChannel($channel, $lastmodified = null) - { - if ($channel->getName() == '__uri') { - return false; - } - return $this->addChannel($channel, $lastmodified, true); - } - - // }}} - // {{{ deleteChannel() - - /** - * Deletion fails if there are any packages installed from the channel - * @param string|PEAR_ChannelFile channel name - * @return boolean|PEAR_Error True on deletion, false if it doesn't exist - */ - function deleteChannel($channel) - { - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $ret = $this->_deleteChannel($channel); - $this->_unlock(); - if ($ret && is_a($this->_config, 'PEAR_Config')) { - $this->_config->setChannels($this->listChannels()); - } - return $ret; - } - - // }}} - // {{{ addChannel() - - /** - * @param PEAR_ChannelFile Channel object - * @param string Last-Modified header from HTTP for caching - * @return boolean|PEAR_Error True on creation, false if it already exists - */ - function addChannel($channel, $lastmodified = false, $update = false) - { - if (!is_a($channel, 'PEAR_ChannelFile')) { - return false; - } - if (!$channel->validate()) { - return false; - } - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $ret = $this->_addChannel($channel, $update, $lastmodified); - $this->_unlock(); - if (!$update && $ret && is_a($this->_config, 'PEAR_Config')) { - $this->_config->setChannels($this->listChannels()); - } - return $ret; - } - - // }}} - // {{{ deletePackage() - - function deletePackage($package, $channel = 'pear.php.net') - { - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $file = $this->_packageFileName($package, $channel); - if (file_exists($file)) { - $ret = @unlink($file); - } else { - $ret = false; - } - $this->_rebuildFileMap(); - $this->_unlock(); - $p = array('channel' => $channel, 'package' => $package); - $this->_dependencyDB->uninstallPackage($p); - return $ret; - } - - // }}} - // {{{ updatePackage() - - function updatePackage($package, $info, $merge = true) - { - if (is_object($info)) { - return $this->updatePackage2($info, $merge); - } - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $ret = $this->_updatePackage($package, $info, $merge); - $this->_unlock(); - if ($ret) { - if (!class_exists('PEAR_PackageFile_v1')) { - require_once 'PEAR/PackageFile/v1.php'; - } - $pf = new PEAR_PackageFile_v1; - $pf->setConfig($this->_config); - $pf->fromArray($this->packageInfo($package)); - $this->_dependencyDB->uninstallPackage($pf); - $this->_dependencyDB->installPackage($pf); - } - return $ret; - } - - // }}} - // {{{ updatePackage2() - - function updatePackage2($info) - { - if (!is_object($info)) { - return $this->updatePackage($info['package'], $info, $merge); - } - if (!$info->validate(PEAR_VALIDATE_DOWNLOADING)) { - return false; - } - if (PEAR::isError($e = $this->_lock(LOCK_EX))) { - return $e; - } - $ret = $this->_updatePackage2($info); - $this->_unlock(); - if ($ret) { - $this->_dependencyDB->uninstallPackage($info); - $this->_dependencyDB->installPackage($info); - } - return $ret; - } - - // }}} - // {{{ getChannel() - /** - * @param string channel name - * @param bool whether to strictly return raw channels (no aliases) - * @return PEAR_ChannelFile|PEAR_Error - */ - function &getChannel($channel, $noaliases = false) - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $ret = &$this->_getChannel($channel, $noaliases); - $this->_unlock(); - if (!$ret) { - return PEAR::raiseError('Unknown channel: ' . $channel); - } - return $ret; - } - - // }}} - // {{{ getPackage() - /** - * @param string package name - * @param string channel name - * @return PEAR_PackageFile_v1|PEAR_PackageFile_v2|null - */ - function &getPackage($package, $channel = 'pear.php.net') - { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $pf = &$this->_getPackage($package, $channel); - $this->_unlock(); - return $pf; - } - - // }}} - - /** - * Get PEAR_PackageFile_v[1/2] objects representing the contents of - * a dependency group that are installed. - * - * This is used at uninstall-time - * @param array - * @return array|false - */ - function getInstalledGroup($group) - { - $ret = array(); - if (isset($group['package'])) { - if (!isset($group['package'][0])) { - $group['package'] = array($group['package']); - } - foreach ($group['package'] as $package) { - $depchannel = isset($package['channel']) ? $package['channel'] : '__uri'; - $p = &$this->getPackage($package['name'], $depchannel); - if ($p) { - $save = &$p; - $ret[] = &$save; - } - } - } - if (isset($group['subpackage'])) { - if (!isset($group['subpackage'][0])) { - $group['subpackage'] = array($group['subpackage']); - } - foreach ($group['subpackage'] as $package) { - $depchannel = isset($package['channel']) ? $package['channel'] : '__uri'; - $p = &$this->getPackage($package['name'], $depchannel); - if ($p) { - $save = &$p; - $ret[] = &$save; - } - } - } - if (!count($ret)) { - return false; - } - return $ret; - } - - // {{{ getChannelValidator() - /** - * @param string channel name - * @return PEAR_Validate|false - */ - function &getChannelValidator($channel) - { - $chan = $this->getChannel($channel); - if (PEAR::isError($chan)) { - return $chan; - } - $val = $chan->getValidationObject(); - return $val; - } - // }}} - // {{{ getChannels() - /** - * @param string channel name - * @return array an array of PEAR_ChannelFile objects representing every installed channel - */ - function &getChannels() - { - $ret = array(); - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - foreach ($this->_listChannels() as $channel) { - $e = &$this->_getChannel($channel); - if (!$e || PEAR::isError($e)) { - continue; - } - $ret[] = $e; - } - $this->_unlock(); - return $ret; - } - - // }}} - // {{{ checkFileMap() - - /** - * Test whether a file or set of files belongs to a package. - * - * If an array is passed in - * @param string|array file path, absolute or relative to the pear - * install dir - * @param string|array name of PEAR package or array('package' => name, 'channel' => - * channel) of a package that will be ignored - * @param string API version - 1.1 will exclude any files belonging to a package - * @param array private recursion variable - * @return array|false which package and channel the file belongs to, or an empty - * string if the file does not belong to an installed package, - * or belongs to the second parameter's package - */ - function checkFileMap($path, $package = false, $api = '1.0', $attrs = false) - { - if (is_array($path)) { - static $notempty; - if (empty($notempty)) { - if (!class_exists('PEAR_Installer_Role')) { - require_once 'PEAR/Installer/Role.php'; - } - $notempty = create_function('$a','return !empty($a);'); - } - $package = is_array($package) ? array(strtolower($package[0]), strtolower($package[1])) - : strtolower($package); - $pkgs = array(); - foreach ($path as $name => $attrs) { - if (is_array($attrs)) { - if (isset($attrs['install-as'])) { - $name = $attrs['install-as']; - } - if (!in_array($attrs['role'], PEAR_Installer_Role::getInstallableRoles())) { - // these are not installed - continue; - } - if (!in_array($attrs['role'], PEAR_Installer_Role::getBaseinstallRoles())) { - $attrs['baseinstalldir'] = is_array($package) ? $package[1] : $package; - } - if (isset($attrs['baseinstalldir'])) { - $name = $attrs['baseinstalldir'] . DIRECTORY_SEPARATOR . $name; - } - } - $pkgs[$name] = $this->checkFileMap($name, $package, $api, $attrs); - if (PEAR::isError($pkgs[$name])) { - return $pkgs[$name]; - } - } - return array_filter($pkgs, $notempty); - } - if (empty($this->filemap_cache)) { - if (PEAR::isError($e = $this->_lock(LOCK_SH))) { - return $e; - } - $err = $this->_readFileMap(); - $this->_unlock(); - if (PEAR::isError($err)) { - return $err; - } - } - if (!$attrs) { - $attrs = array('role' => 'php'); // any old call would be for PHP role only - } - if (isset($this->filemap_cache[$attrs['role']][$path])) { - if ($api >= '1.1' && $this->filemap_cache[$attrs['role']][$path] == $package) { - return false; - } - return $this->filemap_cache[$attrs['role']][$path]; - } - $l = strlen($this->install_dir); - if (substr($path, 0, $l) == $this->install_dir) { - $path = preg_replace('!^'.DIRECTORY_SEPARATOR.'+!', '', substr($path, $l)); - } - if (isset($this->filemap_cache[$attrs['role']][$path])) { - if ($api >= '1.1' && $this->filemap_cache[$attrs['role']][$path] == $package) { - return false; - } - return $this->filemap_cache[$attrs['role']][$path]; - } - return false; - } - - // }}} - // {{{ flush() - /** - * Force a reload of the filemap - * @since 1.5.0RC3 - */ - function flushFileMap() - { - $this->filemap_cache = null; - clearstatcache(); // ensure that the next read gets the full, current filemap - } - - // }}} - // {{{ apiVersion() - /** - * Get the expected API version. Channels API is version 1.1, as it is backwards - * compatible with 1.0 - * @return string - */ - function apiVersion() - { - return '1.1'; - } - // }}} - - - /** - * Parse a package name, or validate a parsed package name array - * @param string|array pass in an array of format - * array( - * 'package' => 'pname', - * ['channel' => 'channame',] - * ['version' => 'version',] - * ['state' => 'state',] - * ['group' => 'groupname']) - * or a string of format - * [channel://][channame/]pname[-version|-state][/group=groupname] - * @return array|PEAR_Error - */ - function parsePackageName($param, $defaultchannel = 'pear.php.net') - { - $saveparam = $param; - if (is_array($param)) { - // convert to string for error messages - $saveparam = $this->parsedPackageNameToString($param); - // process the array - if (!isset($param['package'])) { - return PEAR::raiseError('parsePackageName(): array $param ' . - 'must contain a valid package name in index "param"', - 'package', null, null, $param); - } - if (!isset($param['uri'])) { - if (!isset($param['channel'])) { - $param['channel'] = $defaultchannel; - } - } else { - $param['channel'] = '__uri'; - } - } else { - $components = @parse_url((string) $param); - if (isset($components['scheme'])) { - if ($components['scheme'] == 'http') { - // uri package - $param = array('uri' => $param, 'channel' => '__uri'); - } elseif($components['scheme'] != 'channel') { - return PEAR::raiseError('parsePackageName(): only channel:// uris may ' . - 'be downloaded, not "' . $param . '"', 'invalid', null, null, $param); - } - } - if (!isset($components['path'])) { - return PEAR::raiseError('parsePackageName(): array $param ' . - 'must contain a valid package name in "' . $param . '"', - 'package', null, null, $param); - } - if (isset($components['host'])) { - // remove the leading "/" - $components['path'] = substr($components['path'], 1); - } - if (!isset($components['scheme'])) { - if (strpos($components['path'], '/') !== false) { - if ($components['path']{0} == '/') { - return PEAR::raiseError('parsePackageName(): this is not ' . - 'a package name, it begins with "/" in "' . $param . '"', - 'invalid', null, null, $param); - } - $parts = explode('/', $components['path']); - $components['host'] = array_shift($parts); - if (count($parts) > 1) { - $components['path'] = array_pop($parts); - $components['host'] .= '/' . implode('/', $parts); - } else { - $components['path'] = implode('/', $parts); - } - } else { - $components['host'] = $defaultchannel; - } - } else { - if (strpos($components['path'], '/')) { - $parts = explode('/', $components['path']); - $components['path'] = array_pop($parts); - $components['host'] .= '/' . implode('/', $parts); - } - } - - if (is_array($param)) { - $param['package'] = $components['path']; - } else { - $param = array( - 'package' => $components['path'] - ); - if (isset($components['host'])) { - $param['channel'] = $components['host']; - } - } - if (isset($components['fragment'])) { - $param['group'] = $components['fragment']; - } - if (isset($components['user'])) { - $param['user'] = $components['user']; - } - if (isset($components['pass'])) { - $param['pass'] = $components['pass']; - } - if (isset($components['query'])) { - parse_str($components['query'], $param['opts']); - } - // check for extension - $pathinfo = pathinfo($param['package']); - if (isset($pathinfo['extension']) && - in_array(strtolower($pathinfo['extension']), array('tgz', 'tar'))) { - $param['extension'] = $pathinfo['extension']; - $param['package'] = substr($pathinfo['basename'], 0, - strlen($pathinfo['basename']) - 4); - } - // check for version - if (strpos($param['package'], '-')) { - $test = explode('-', $param['package']); - if (count($test) != 2) { - return PEAR::raiseError('parsePackageName(): only one version/state ' . - 'delimiter "-" is allowed in "' . $saveparam . '"', - 'version', null, null, $param); - } - list($param['package'], $param['version']) = $test; - } - } - // validation - $info = $this->channelExists($param['channel']); - if (PEAR::isError($info)) { - return $info; - } - if (!$info) { - return PEAR::raiseError('unknown channel "' . $param['channel'] . - '" in "' . $saveparam . '"', 'channel', null, null, $param); - } - $chan = $this->getChannel($param['channel']); - if (PEAR::isError($chan)) { - return $chan; - } - if (!$chan) { - return PEAR::raiseError("Exception: corrupt registry, could not " . - "retrieve channel " . $param['channel'] . " information", - 'registry', null, null, $param); - } - $param['channel'] = $chan->getName(); - $validate = $chan->getValidationObject(); - $vpackage = $chan->getValidationPackage(); - // validate package name - if (!$validate->validPackageName($param['package'], $vpackage['_content'])) { - return PEAR::raiseError('parsePackageName(): invalid package name "' . - $param['package'] . '" in "' . $saveparam . '"', - 'package', null, null, $param); - } - if (isset($param['group'])) { - if (!PEAR_Validate::validGroupName($param['group'])) { - return PEAR::raiseError('parsePackageName(): dependency group "' . $param['group'] . - '" is not a valid group name in "' . $saveparam . '"', 'group', null, null, - $param); - } - } - if (isset($param['state'])) { - if (!in_array(strtolower($param['state']), $validate->getValidStates())) { - return PEAR::raiseError('parsePackageName(): state "' . $param['state'] - . '" is not a valid state in "' . $saveparam . '"', - 'state', null, null, $param); - } - } - if (isset($param['version'])) { - if (isset($param['state'])) { - return PEAR::raiseError('parsePackageName(): cannot contain both ' . - 'a version and a stability (state) in "' . $saveparam . '"', - 'version/state', null, null, $param); - } - // check whether version is actually a state - if (in_array(strtolower($param['version']), $validate->getValidStates())) { - $param['state'] = strtolower($param['version']); - unset($param['version']); - } else { - if (!$validate->validVersion($param['version'])) { - return PEAR::raiseError('parsePackageName(): "' . $param['version'] . - '" is neither a valid version nor a valid state in "' . - $saveparam . '"', 'version/state', null, null, $param); - } - } - } - return $param; - } - - /** - * @param array - * @return string - */ - function parsedPackageNameToString($parsed, $brief = false) - { - if (is_string($parsed)) { - return $parsed; - } - if (is_object($parsed)) { - $p = $parsed; - $parsed = array( - 'package' => $p->getPackage(), - 'channel' => $p->getChannel(), - 'version' => $p->getVersion(), - ); - } - if (isset($parsed['uri'])) { - return $parsed['uri']; - } - if ($brief) { - if ($channel = $this->channelAlias($parsed['channel'])) { - return $channel . '/' . $parsed['package']; - } - } - $upass = ''; - if (isset($parsed['user'])) { - $upass = $parsed['user']; - if (isset($parsed['pass'])) { - $upass .= ':' . $parsed['pass']; - } - $upass = "$upass@"; - } - $ret = 'channel://' . $upass . $parsed['channel'] . '/' . $parsed['package']; - if (isset($parsed['version']) || isset($parsed['state'])) { - $ver = isset($parsed['version']) ? $parsed['version'] : ''; - $ver .= isset($parsed['state']) ? $parsed['state'] : ''; - $ret .= '-' . $ver; - } - if (isset($parsed['extension'])) { - $ret .= '.' . $parsed['extension']; - } - if (isset($parsed['opts'])) { - $ret .= '?'; - foreach ($parsed['opts'] as $name => $value) { - $parsed['opts'][$name] = "$name=$value"; - } - $ret .= implode('&', $parsed['opts']); - } - if (isset($parsed['group'])) { - $ret .= '#' . $parsed['group']; - } - return $ret; - } -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/Remote.php b/src/vitis/vas/rest/class/PEAR/Remote.php deleted file mode 100755 index 09ddb997a3ae83ce44e079efd9f4c74706d61e8a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Remote.php +++ /dev/null @@ -1,498 +0,0 @@ -<?php -/** - * PEAR_Remote - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Remote.php,v 1.80 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/** - * needed for PEAR_Error - */ -require_once 'PEAR.php'; -require_once 'PEAR/Config.php'; - -/** - * This is a class for doing remote operations against the central - * PEAR database. - * - * @nodep XML_RPC_Value - * @nodep XML_RPC_Message - * @nodep XML_RPC_Client - * @category pear - * @package PEAR - * @author Stig Bakken <ssb@php.net> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 0.1 - */ -class PEAR_Remote extends PEAR -{ - // {{{ properties - - var $config = null; - var $cache = null; - /** - * @var PEAR_Registry - * @access private - */ - var $_registry; - - // }}} - - // {{{ PEAR_Remote(config_object) - - function PEAR_Remote(&$config) - { - $this->PEAR(); - $this->config = &$config; - $this->_registry = &$this->config->getRegistry(); - } - - // }}} - // {{{ setRegistry() - - function setRegistry(&$reg) - { - $this->_registry = &$reg; - } - // }}} - // {{{ getCache() - - - function getCache($args) - { - $id = md5(serialize($args)); - $cachedir = $this->config->get('cache_dir'); - $filename = $cachedir . DIRECTORY_SEPARATOR . 'xmlrpc_cache_' . $id; - if (!file_exists($filename)) { - return null; - } - - $fp = fopen($filename, 'rb'); - if (!$fp) { - return null; - } - fclose($fp); - $content = file_get_contents($filename); - $result = array( - 'age' => time() - filemtime($filename), - 'lastChange' => filemtime($filename), - 'content' => unserialize($content), - ); - return $result; - } - - // }}} - - // {{{ saveCache() - - function saveCache($args, $data) - { - $id = md5(serialize($args)); - $cachedir = $this->config->get('cache_dir'); - if (!file_exists($cachedir)) { - System::mkdir(array('-p', $cachedir)); - } - $filename = $cachedir.'/xmlrpc_cache_'.$id; - - $fp = @fopen($filename, "wb"); - if ($fp) { - fwrite($fp, serialize($data)); - fclose($fp); - } - } - - // }}} - - // {{{ clearCache() - - function clearCache($method, $args) - { - array_unshift($args, $method); - array_unshift($args, $this->config->get('default_channel')); // cache by channel - $id = md5(serialize($args)); - $cachedir = $this->config->get('cache_dir'); - $filename = $cachedir.'/xmlrpc_cache_'.$id; - if (file_exists($filename)) { - @unlink($filename); - } - } - - // }}} - // {{{ call(method, [args...]) - - function call($method) - { - $_args = $args = func_get_args(); - - $server_channel = $this->config->get('default_channel'); - $channel = $this->_registry->getChannel($server_channel); - if (!PEAR::isError($channel)) { - $mirror = $this->config->get('preferred_mirror'); - if ($channel->getMirror($mirror)) { - if ($channel->supports('xmlrpc', $method, $mirror)) { - $server_channel = $server_host = $mirror; // use the preferred mirror - $server_port = $channel->getPort($mirror); - } elseif (!$channel->supports('xmlrpc', $method)) { - return $this->raiseError("Channel $server_channel does not " . - "support xml-rpc method $method"); - } - } - if (!isset($server_host)) { - if (!$channel->supports('xmlrpc', $method)) { - return $this->raiseError("Channel $server_channel does not support " . - "xml-rpc method $method"); - } else { - $server_host = $server_channel; - $server_port = $channel->getPort(); - } - } - } else { - return $this->raiseError("Unknown channel '$server_channel'"); - } - - array_unshift($_args, $server_channel); // cache by channel - $this->cache = $this->getCache($_args); - $cachettl = $this->config->get('cache_ttl'); - // If cache is newer than $cachettl seconds, we use the cache! - if ($this->cache !== null && $this->cache['age'] < $cachettl) { - return $this->cache['content']; - } - $fp = false; - if (extension_loaded("xmlrpc")) { - $result = call_user_func_array(array(&$this, 'call_epi'), $args); - if (!PEAR::isError($result)) { - $this->saveCache($_args, $result); - } - return $result; - } elseif (!($fp = fopen('XML/RPC.php', 'r', true))) { - return $this->raiseError("For this remote PEAR operation you need to load the xmlrpc extension or install XML_RPC"); - } - include_once 'XML/RPC.php'; - if ($fp) { - fclose($fp); - } - - array_shift($args); - $username = $this->config->get('username'); - $password = $this->config->get('password'); - $eargs = array(); - foreach($args as $arg) { - $eargs[] = $this->_encode($arg); - } - $f = new XML_RPC_Message($method, $eargs); - if ($this->cache !== null) { - $maxAge = '?maxAge='.$this->cache['lastChange']; - } else { - $maxAge = ''; - } - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - if ($proxy = parse_url($this->config->get('http_proxy'))) { - $proxy_host = isset($proxy['host']) ? $proxy['host'] : null; - if (isset($proxy['scheme']) && $proxy['scheme'] == 'https') { - $proxy_host = 'https://' . $proxy_host; - } - $proxy_port = isset($proxy['port']) ? $proxy['port'] : 8080; - $proxy_user = isset($proxy['user']) ? urldecode($proxy['user']) : null; - $proxy_pass = isset($proxy['pass']) ? urldecode($proxy['pass']) : null; - } - $shost = $server_host; - if ($channel->getSSL()) { - $shost = "https://$shost"; - } - $c = new XML_RPC_Client('/' . $channel->getPath('xmlrpc') - . $maxAge, $shost, $server_port, $proxy_host, $proxy_port, - $proxy_user, $proxy_pass); - if ($username && $password) { - $c->setCredentials($username, $password); - } - if ($this->config->get('verbose') >= 3) { - $c->setDebug(1); - } - $r = $c->send($f); - if (!$r) { - return $this->raiseError("XML_RPC send failed"); - } - $v = $r->value(); - if ($e = $r->faultCode()) { - if ($e == $GLOBALS['XML_RPC_err']['http_error'] && strstr($r->faultString(), '304 Not Modified') !== false) { - return $this->cache['content']; - } - return $this->raiseError($r->faultString(), $e); - } - - $result = XML_RPC_decode($v); - $this->saveCache($_args, $result); - return $result; - } - - // }}} - - // {{{ call_epi(method, [args...]) - - function call_epi($method) - { - if (!extension_loaded("xmlrpc")) { - return $this->raiseError("xmlrpc extension is not loaded"); - } - $server_channel = $this->config->get('default_channel'); - $channel = $this->_registry->getChannel($server_channel); - if (!PEAR::isError($channel)) { - $mirror = $this->config->get('preferred_mirror'); - if ($channel->getMirror($mirror)) { - if ($channel->supports('xmlrpc', $method, $mirror)) { - $server_channel = $server_host = $mirror; // use the preferred mirror - $server_port = $channel->getPort($mirror); - } elseif (!$channel->supports('xmlrpc', $method)) { - return $this->raiseError("Channel $server_channel does not " . - "support xml-rpc method $method"); - } - } - if (!isset($server_host)) { - if (!$channel->supports('xmlrpc', $method)) { - return $this->raiseError("Channel $server_channel does not support " . - "xml-rpc method $method"); - } else { - $server_host = $server_channel; - $server_port = $channel->getPort(); - } - } - } else { - return $this->raiseError("Unknown channel '$server_channel'"); - } - $params = func_get_args(); - array_shift($params); - $method = str_replace("_", ".", $method); - $request = xmlrpc_encode_request($method, $params); - if ($http_proxy = $this->config->get('http_proxy')) { - $proxy = parse_url($http_proxy); - $proxy_host = $proxy_port = $proxy_user = $proxy_pass = ''; - $proxy_host = isset($proxy['host']) ? $proxy['host'] : null; - if (isset($proxy['scheme']) && $proxy['scheme'] == 'https') { - $proxy_host = 'https://' . $proxy_host; - } - $proxy_port = isset($proxy['port']) ? $proxy['port'] : null; - $proxy_user = isset($proxy['user']) ? urldecode($proxy['user']) : null; - $proxy_pass = isset($proxy['pass']) ? urldecode($proxy['pass']) : null; - $fp = @fsockopen($proxy_host, $proxy_port); - $use_proxy = true; - if ($channel->getSSL()) { - $server_host = "https://$server_host"; - } - } else { - $use_proxy = false; - $ssl = $channel->getSSL(); - $fp = @fsockopen(($ssl ? 'ssl://' : '') . $server_host, $server_port); - if (!$fp) { - $server_host = "$ssl$server_host"; // for error-reporting - } - } - if (!$fp && $http_proxy) { - return $this->raiseError("PEAR_Remote::call: fsockopen(`$proxy_host', $proxy_port) failed"); - } elseif (!$fp) { - return $this->raiseError("PEAR_Remote::call: fsockopen(`$server_host', $server_port) failed"); - } - $len = strlen($request); - $req_headers = "Host: $server_host:$server_port\r\n" . - "Content-type: text/xml\r\n" . - "Content-length: $len\r\n"; - $username = $this->config->get('username'); - $password = $this->config->get('password'); - if ($username && $password) { - $req_headers .= "Cookie: PEAR_USER=$username; PEAR_PW=$password\r\n"; - $tmp = base64_encode("$username:$password"); - $req_headers .= "Authorization: Basic $tmp\r\n"; - } - if ($this->cache !== null) { - $maxAge = '?maxAge='.$this->cache['lastChange']; - } else { - $maxAge = ''; - } - - if ($use_proxy && $proxy_host != '' && $proxy_user != '') { - $req_headers .= 'Proxy-Authorization: Basic ' - .base64_encode($proxy_user.':'.$proxy_pass) - ."\r\n"; - } - - if ($this->config->get('verbose') > 3) { - print "XMLRPC REQUEST HEADERS:\n"; - var_dump($req_headers); - print "XMLRPC REQUEST BODY:\n"; - var_dump($request); - } - - if ($use_proxy && $proxy_host != '') { - $post_string = "POST http://".$server_host; - if ($proxy_port > '') { - $post_string .= ':'.$server_port; - } - } else { - $post_string = "POST "; - } - - $path = '/' . $channel->getPath('xmlrpc'); - fwrite($fp, ($post_string . $path . "$maxAge HTTP/1.0\r\n$req_headers\r\n$request")); - $response = ''; - $line1 = fgets($fp, 2048); - if (!preg_match('!^HTTP/[0-9\.]+ (\d+) (.*)!', $line1, $matches)) { - return $this->raiseError("PEAR_Remote: invalid HTTP response from XML-RPC server"); - } - switch ($matches[1]) { - case "200": // OK - break; - case "304": // Not Modified - return $this->cache['content']; - case "401": // Unauthorized - if ($username && $password) { - return $this->raiseError("PEAR_Remote ($server_host:$server_port) " . - ": authorization failed", 401); - } else { - return $this->raiseError("PEAR_Remote ($server_host:$server_port) " . - ": authorization required, please log in first", 401); - } - default: - return $this->raiseError("PEAR_Remote ($server_host:$server_port) : " . - "unexpected HTTP response", (int)$matches[1], null, null, - "$matches[1] $matches[2]"); - } - while (trim(fgets($fp, 2048)) != ''); // skip rest of headers - while ($chunk = fread($fp, 10240)) { - $response .= $chunk; - } - fclose($fp); - if ($this->config->get('verbose') > 3) { - print "XMLRPC RESPONSE:\n"; - var_dump($response); - } - $ret = xmlrpc_decode($response); - if (is_array($ret) && isset($ret['__PEAR_TYPE__'])) { - if ($ret['__PEAR_TYPE__'] == 'error') { - if (isset($ret['__PEAR_CLASS__'])) { - $class = $ret['__PEAR_CLASS__']; - } else { - $class = "PEAR_Error"; - } - if ($ret['code'] === '') $ret['code'] = null; - if ($ret['message'] === '') $ret['message'] = null; - if ($ret['userinfo'] === '') $ret['userinfo'] = null; - if (strtolower($class) == 'db_error') { - $ret = $this->raiseError(PEAR::errorMessage($ret['code']), - $ret['code'], null, null, - $ret['userinfo']); - } else { - $ret = $this->raiseError($ret['message'], $ret['code'], - null, null, $ret['userinfo']); - } - } - } elseif (is_array($ret) && sizeof($ret) == 1 && isset($ret[0]) - && is_array($ret[0]) && - !empty($ret[0]['faultString']) && - !empty($ret[0]['faultCode'])) { - extract($ret[0]); - $faultString = "XML-RPC Server Fault: " . - str_replace("\n", " ", $faultString); - return $this->raiseError($faultString, $faultCode); - } elseif (is_array($ret) && sizeof($ret) == 2 && !empty($ret['faultString']) && - !empty($ret['faultCode'])) { - extract($ret); - $faultString = "XML-RPC Server Fault: " . - str_replace("\n", " ", $faultString); - return $this->raiseError($faultString, $faultCode); - } - return $ret; - } - - // }}} - - // {{{ _encode - - // a slightly extended version of XML_RPC_encode - function _encode($php_val) - { - global $XML_RPC_Boolean, $XML_RPC_Int, $XML_RPC_Double; - global $XML_RPC_String, $XML_RPC_Array, $XML_RPC_Struct; - - $type = gettype($php_val); - $xmlrpcval = new XML_RPC_Value; - - switch($type) { - case "array": - reset($php_val); - $firstkey = key($php_val); - end($php_val); - $lastkey = key($php_val); - reset($php_val); - if ($firstkey === 0 && is_int($lastkey) && - ($lastkey + 1) == count($php_val)) { - $is_continuous = true; - reset($php_val); - $size = count($php_val); - for ($expect = 0; $expect < $size; $expect++, next($php_val)) { - if (key($php_val) !== $expect) { - $is_continuous = false; - break; - } - } - if ($is_continuous) { - reset($php_val); - $arr = array(); - while (list($k, $v) = each($php_val)) { - $arr[$k] = $this->_encode($v); - } - $xmlrpcval->addArray($arr); - break; - } - } - // fall though if not numerical and continuous - case "object": - $arr = array(); - while (list($k, $v) = each($php_val)) { - $arr[$k] = $this->_encode($v); - } - $xmlrpcval->addStruct($arr); - break; - case "integer": - $xmlrpcval->addScalar($php_val, $XML_RPC_Int); - break; - case "double": - $xmlrpcval->addScalar($php_val, $XML_RPC_Double); - break; - case "string": - case "NULL": - $xmlrpcval->addScalar($php_val, $XML_RPC_String); - break; - case "boolean": - $xmlrpcval->addScalar($php_val, $XML_RPC_Boolean); - break; - case "unknown type": - default: - return null; - } - return $xmlrpcval; - } - - // }}} - -} - -?> diff --git a/src/vitis/vas/rest/class/PEAR/RunTest.php b/src/vitis/vas/rest/class/PEAR/RunTest.php deleted file mode 100755 index 85f49d9baf6fad5c73f8ed404b1688b9c900a61a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/RunTest.php +++ /dev/null @@ -1,927 +0,0 @@ -<?php -/** - * PEAR_RunTest - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Tomas V.V.Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: RunTest.php,v 1.67 2008/05/14 02:30:16 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.3.3 - */ - -/** - * for error handling - */ -require_once 'PEAR.php'; -require_once 'PEAR/Config.php'; - -define('DETAILED', 1); -putenv("PHP_PEAR_RUNTESTS=1"); - -/** - * Simplified version of PHP's test suite - * - * Try it with: - * - * $ php -r 'include "../PEAR/RunTest.php"; $t=new PEAR_RunTest; $o=$t->run("./pear_system.phpt");print_r($o);' - * - * - * @category pear - * @package PEAR - * @author Tomas V.V.Cox <cox@idecnet.com> - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.3.3 - */ -class PEAR_RunTest -{ - var $_headers = array(); - var $_logger; - var $_options; - var $_php; - var $tests_count; - var $xdebug_loaded; - /** - * Saved value of php executable, used to reset $_php when we - * have a test that uses cgi - * - * @var unknown_type - */ - var $_savephp; - var $ini_overwrites = array( - 'output_handler=', - 'open_basedir=', - 'safe_mode=0', - 'disable_functions=', - 'output_buffering=Off', - 'display_errors=1', - 'log_errors=0', - 'html_errors=0', - 'track_errors=1', - 'report_memleaks=0', - 'report_zend_debug=0', - 'docref_root=', - 'docref_ext=.html', - 'error_prepend_string=', - 'error_append_string=', - 'auto_prepend_file=', - 'auto_append_file=', - 'magic_quotes_runtime=0', - 'xdebug.default_enable=0', - 'allow_url_fopen=1', - ); - - /** - * An object that supports the PEAR_Common->log() signature, or null - * @param PEAR_Common|null - */ - function PEAR_RunTest($logger = null, $options = array()) - { - if (!defined('E_DEPRECATED')) { - define('E_DEPRECATED', 0); - } - if (!defined('E_STRICT')) { - define('E_STRICT', 0); - } - $this->ini_overwrites[] = 'error_reporting=' . (E_ALL & ~(E_DEPRECATED | E_STRICT)); - if (is_null($logger)) { - require_once 'PEAR/Common.php'; - $logger = new PEAR_Common; - } - $this->_logger = $logger; - $this->_options = $options; - - $conf = &PEAR_Config::singleton(); - $this->_php = $conf->get('php_bin'); - } - - /** - * Taken from php-src/run-tests.php - * - * @param string $commandline command name - * @param array $env - * @param string $stdin standard input to pass to the command - * @return unknown - */ - function system_with_timeout($commandline, $env = null, $stdin = null) - { - $data = ''; - if (version_compare(phpversion(), '5.0.0', '<')) { - $proc = proc_open($commandline, array( - 0 => array('pipe', 'r'), - 1 => array('pipe', 'w'), - 2 => array('pipe', 'w') - ), $pipes); - } else { - $proc = proc_open($commandline, array( - 0 => array('pipe', 'r'), - 1 => array('pipe', 'w'), - 2 => array('pipe', 'w') - ), $pipes, null, $env, array('suppress_errors' => true)); - } - - if (!$proc) { - return false; - } - - if (is_string($stdin)) { - fwrite($pipes[0], $stdin); - } - fclose($pipes[0]); - - while (true) { - /* hide errors from interrupted syscalls */ - $r = $pipes; - $e = $w = null; - $n = @stream_select($r, $w, $e, 60); - - if ($n === 0) { - /* timed out */ - $data .= "\n ** ERROR: process timed out **\n"; - proc_terminate($proc); - return array(1234567890, $data); - } else if ($n > 0) { - $line = fread($pipes[1], 8192); - if (strlen($line) == 0) { - /* EOF */ - break; - } - $data .= $line; - } - } - if (function_exists('proc_get_status')) { - $stat = proc_get_status($proc); - if ($stat['signaled']) { - $data .= "\nTermsig=".$stat['stopsig']; - } - } - $code = proc_close($proc); - if (function_exists('proc_get_status')) { - $code = $stat['exitcode']; - } - return array($code, $data); - } - - /** - * Turns a PHP INI string into an array - * - * Turns -d "include_path=/foo/bar" into this: - * array( - * 'include_path' => array( - * 'operator' => '-d', - * 'value' => '/foo/bar', - * ) - * ) - * Works both with quotes and without - * - * @param string an PHP INI string, -d "include_path=/foo/bar" - * @return array - */ - function iniString2array($ini_string) - { - if (!$ini_string) { - return array(); - } - $split = preg_split('/[\s]|=/', $ini_string, -1, PREG_SPLIT_NO_EMPTY); - $key = $split[1][0] == '"' ? substr($split[1], 1) : $split[1]; - $value = $split[2][strlen($split[2]) - 1] == '"' ? substr($split[2], 0, -1) : $split[2]; - // FIXME review if this is really the struct to go with - $array = array($key => array('operator' => $split[0], 'value' => $value)); - return $array; - } - - function settings2array($settings, $ini_settings) - { - foreach ($settings as $setting) { - if (strpos($setting, '=') !== false) { - $setting = explode('=', $setting, 2); - $name = trim(strtolower($setting[0])); - $value = trim($setting[1]); - $ini_settings[$name] = $value; - } - } - return $ini_settings; - } - - function settings2params($ini_settings) - { - $settings = ''; - foreach ($ini_settings as $name => $value) { - if (is_array($value)) { - $operator = $value['operator']; - $value = $value['value']; - } else { - $operator = '-d'; - } - $value = addslashes($value); - $settings .= " $operator \"$name=$value\""; - } - return $settings; - } - - function runPHPUnit($file, $ini_settings = '') - { - if (!file_exists($file) && file_exists(getcwd() . DIRECTORY_SEPARATOR . $file)) { - $file = realpath(getcwd() . DIRECTORY_SEPARATOR . $file); - break; - } elseif (file_exists($file)) { - $file = realpath($file); - } - $cmd = "$this->_php$ini_settings -f $file"; - if (isset($this->_logger)) { - $this->_logger->log(2, 'Running command "' . $cmd . '"'); - } - - $savedir = getcwd(); // in case the test moves us around - chdir(dirname($file)); - echo `$cmd`; - chdir($savedir); - return 'PASSED'; // we have no way of knowing this information so assume passing - } - - /** - * Runs an individual test case. - * - * @param string The filename of the test - * @param array|string INI settings to be applied to the test run - * @param integer Number what the current running test is of the - * whole test suite being runned. - * - * @return string|object Returns PASSED, WARNED, FAILED depending on how the - * test came out. - * PEAR Error when the tester it self fails - */ - function run($file, $ini_settings = array(), $test_number = 1) - { - if (isset($this->_savephp)) { - $this->_php = $this->_savephp; - unset($this->_savephp); - } - if (empty($this->_options['cgi'])) { - // try to see if php-cgi is in the path - $res = $this->system_with_timeout('php-cgi -v'); - if (false !== $res && !(is_array($res) && $res === array(127, ''))) { - $this->_options['cgi'] = 'php-cgi'; - } - } - if (1 < $len = strlen($this->tests_count)) { - $test_number = str_pad($test_number, $len, ' ', STR_PAD_LEFT); - $test_nr = "[$test_number/$this->tests_count] "; - } else { - $test_nr = ''; - } - - $file = realpath($file); - $section_text = $this->_readFile($file); - if (PEAR::isError($section_text)) { - return $section_text; - } - - if (isset($section_text['POST_RAW']) && isset($section_text['UPLOAD'])) { - return PEAR::raiseError("Cannot contain both POST_RAW and UPLOAD in test file: $file"); - } - - $cwd = getcwd(); - - $pass_options = ''; - if (!empty($this->_options['ini'])) { - $pass_options = $this->_options['ini']; - } - - if (is_string($ini_settings)) { - $ini_settings = $this->iniString2array($ini_settings); - } - - $ini_settings = $this->settings2array($this->ini_overwrites, $ini_settings); - if ($section_text['INI']) { - if (strpos($section_text['INI'], '{PWD}') !== false) { - $section_text['INI'] = str_replace('{PWD}', dirname($file), $section_text['INI']); - } - $ini = preg_split( "/[\n\r]+/", $section_text['INI']); - $ini_settings = $this->settings2array($ini, $ini_settings); - } - $ini_settings = $this->settings2params($ini_settings); - $shortname = str_replace($cwd . DIRECTORY_SEPARATOR, '', $file); - - $tested = trim($section_text['TEST']); - $tested.= !isset($this->_options['simple']) ? "[$shortname]" : ' '; - - if (!empty($section_text['POST']) || !empty($section_text['POST_RAW']) || - !empty($section_text['UPLOAD']) || !empty($section_text['GET']) || - !empty($section_text['COOKIE']) || !empty($section_text['EXPECTHEADERS'])) { - if (empty($this->_options['cgi'])) { - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, "SKIP $test_nr$tested (reason: --cgi option needed for this test, type 'pear help run-tests')"); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' # skip --cgi option needed for this test, "pear help run-tests" for info'); - } - return 'SKIPPED'; - } - $this->_savephp = $this->_php; - $this->_php = $this->_options['cgi']; - } - - $temp_dir = realpath(dirname($file)); - $main_file_name = basename($file, 'phpt'); - $diff_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'diff'; - $log_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'log'; - $exp_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'exp'; - $output_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'out'; - $memcheck_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'mem'; - $temp_file = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'php'; - $temp_skipif = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'skip.php'; - $temp_clean = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name.'clean.php'; - $tmp_post = $temp_dir . DIRECTORY_SEPARATOR . uniqid('phpt.'); - - // unlink old test results - $this->_cleanupOldFiles($file); - - // Check if test should be skipped. - $res = $this->_runSkipIf($section_text, $temp_skipif, $tested, $ini_settings); - if (count($res) != 2) { - return $res; - } - $info = $res['info']; - $warn = $res['warn']; - - // We've satisfied the preconditions - run the test! - if (isset($this->_options['coverage']) && $this->xdebug_loaded) { - $len_f = 5; - if (substr($section_text['FILE'], 0, 5) != '<?php' - && substr($section_text['FILE'], 0, 2) == '<?') { - $len_f = 2; - } - - $text = '<?php' . "\n" . 'xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);' . "\n"; - $new = substr($section_text['FILE'], $len_f, strlen($section_text['FILE'])); - $text .= substr($new, 0, strrpos($new, '?>')); - $xdebug_file = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'xdebug'; - $text .= "\n" . - "\n" . '$xdebug = var_export(xdebug_get_code_coverage(), true);'; - if (!function_exists('file_put_contents')) { - $text .= "\n" . '$fh = fopen(\'' . $xdebug_file . '\', "wb");' . - "\n" . 'if ($fh !== false) {' . - "\n" . ' fwrite($fh, $xdebug);' . - "\n" . ' fclose($fh);' . - "\n" . '}'; - } else { - $text .= "\n" . 'file_put_contents(\'' . $xdebug_file . '\', $xdebug);'; - } - $text .= "\n" . 'xdebug_stop_code_coverage();' . "\n" . '?>'; - - $this->save_text($temp_file, $text); - } else { - $this->save_text($temp_file, $section_text['FILE']); - } - - $args = $section_text['ARGS'] ? ' -- '.$section_text['ARGS'] : ''; - $cmd = "$this->_php$ini_settings -f \"$temp_file\" $args 2>&1"; - if (isset($this->_logger)) { - $this->_logger->log(2, 'Running command "' . $cmd . '"'); - } - - // Reset environment from any previous test. - $env = $this->_resetEnv($section_text, $temp_file); - - $section_text = $this->_processUpload($section_text, $file); - if (PEAR::isError($section_text)) { - return $section_text; - } - - if (array_key_exists('POST_RAW', $section_text) && !empty($section_text['POST_RAW'])) { - $post = trim($section_text['POST_RAW']); - $raw_lines = explode("\n", $post); - - $request = ''; - $started = false; - foreach ($raw_lines as $i => $line) { - if (empty($env['CONTENT_TYPE']) && - preg_match('/^Content-Type:(.*)/i', $line, $res)) { - $env['CONTENT_TYPE'] = trim(str_replace("\r", '', $res[1])); - continue; - } - if ($started) { - $request .= "\n"; - } - $started = true; - $request .= $line; - } - - $env['CONTENT_LENGTH'] = strlen($request); - $env['REQUEST_METHOD'] = 'POST'; - - $this->save_text($tmp_post, $request); - $cmd = "$this->_php$pass_options$ini_settings \"$temp_file\" 2>&1 < $tmp_post"; - } elseif (array_key_exists('POST', $section_text) && !empty($section_text['POST'])) { - $post = trim($section_text['POST']); - $this->save_text($tmp_post, $post); - $content_length = strlen($post); - - $env['REQUEST_METHOD'] = 'POST'; - $env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'; - $env['CONTENT_LENGTH'] = $content_length; - - $cmd = "$this->_php$pass_options$ini_settings \"$temp_file\" 2>&1 < $tmp_post"; - } else { - $env['REQUEST_METHOD'] = 'GET'; - $env['CONTENT_TYPE'] = ''; - $env['CONTENT_LENGTH'] = ''; - } - - if (OS_WINDOWS && isset($section_text['RETURNS'])) { - ob_start(); - system($cmd, $return_value); - $out = ob_get_contents(); - ob_end_clean(); - $section_text['RETURNS'] = (int) trim($section_text['RETURNS']); - $returnfail = ($return_value != $section_text['RETURNS']); - } else { - $returnfail = false; - $stdin = isset($section_text['STDIN']) ? $section_text['STDIN'] : null; - $out = $this->system_with_timeout($cmd, $env, $stdin); - $return_value = $out[0]; - $out = $out[1]; - } - - $output = preg_replace('/\r\n/', "\n", trim($out)); - - if (isset($tmp_post) && realpath($tmp_post) && file_exists($tmp_post)) { - @unlink(realpath($tmp_post)); - } - chdir($cwd); // in case the test moves us around - - $this->_testCleanup($section_text, $temp_clean); - - /* when using CGI, strip the headers from the output */ - $output = $this->_stripHeadersCGI($output); - - if (isset($section_text['EXPECTHEADERS'])) { - $testheaders = $this->_processHeaders($section_text['EXPECTHEADERS']); - $missing = array_diff_assoc($testheaders, $this->_headers); - $changed = ''; - foreach ($missing as $header => $value) { - if (isset($this->_headers[$header])) { - $changed .= "-$header: $value\n+$header: "; - $changed .= $this->_headers[$header]; - } else { - $changed .= "-$header: $value\n"; - } - } - if ($missing) { - // tack on failed headers to output: - $output .= "\n====EXPECTHEADERS FAILURE====:\n$changed"; - } - } - // Does the output match what is expected? - do { - if (isset($section_text['EXPECTF']) || isset($section_text['EXPECTREGEX'])) { - if (isset($section_text['EXPECTF'])) { - $wanted = trim($section_text['EXPECTF']); - } else { - $wanted = trim($section_text['EXPECTREGEX']); - } - $wanted_re = preg_replace('/\r\n/', "\n", $wanted); - if (isset($section_text['EXPECTF'])) { - $wanted_re = preg_quote($wanted_re, '/'); - // Stick to basics - $wanted_re = str_replace("%s", ".+?", $wanted_re); //not greedy - $wanted_re = str_replace("%i", "[+\-]?[0-9]+", $wanted_re); - $wanted_re = str_replace("%d", "[0-9]+", $wanted_re); - $wanted_re = str_replace("%x", "[0-9a-fA-F]+", $wanted_re); - $wanted_re = str_replace("%f", "[+\-]?\.?[0-9]+\.?[0-9]*(E-?[0-9]+)?", $wanted_re); - $wanted_re = str_replace("%c", ".", $wanted_re); - // %f allows two points "-.0.0" but that is the best *simple* expression - } - /* DEBUG YOUR REGEX HERE - var_dump($wanted_re); - print(str_repeat('=', 80) . "\n"); - var_dump($output); - */ - if (!$returnfail && preg_match("/^$wanted_re\$/s", $output)) { - if (file_exists($temp_file)) { - unlink($temp_file); - } - if (array_key_exists('FAIL', $section_text)) { - break; - } - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, "PASS $test_nr$tested$info"); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' - ' . $tested); - } - return 'PASSED'; - } - } else { - if (isset($section_text['EXPECTFILE'])) { - $f = $temp_dir . '/' . trim($section_text['EXPECTFILE']); - if (!($fp = @fopen($f, 'rb'))) { - return PEAR::raiseError('--EXPECTFILE-- section file ' . - $f . ' not found'); - } - fclose($fp); - $section_text['EXPECT'] = file_get_contents($f); - } - $wanted = preg_replace('/\r\n/', "\n", trim($section_text['EXPECT'])); - // compare and leave on success - if (!$returnfail && 0 == strcmp($output, $wanted)) { - if (file_exists($temp_file)) { - unlink($temp_file); - } - if (array_key_exists('FAIL', $section_text)) { - break; - } - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, "PASS $test_nr$tested$info"); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' - ' . $tested); - } - return 'PASSED'; - } - } - } while (false); - - if (array_key_exists('FAIL', $section_text)) { - // we expect a particular failure - // this is only used for testing PEAR_RunTest - $expectf = isset($section_text['EXPECTF']) ? $wanted_re : null; - $faildiff = $this->generate_diff($wanted, $output, null, $expectf); - $faildiff = preg_replace('/\r/', '', $faildiff); - $wanted = preg_replace('/\r/', '', trim($section_text['FAIL'])); - if ($faildiff == $wanted) { - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, "PASS $test_nr$tested$info"); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' - ' . $tested); - } - return 'PASSED'; - } - unset($section_text['EXPECTF']); - $output = $faildiff; - if (isset($section_text['RETURNS'])) { - return PEAR::raiseError('Cannot have both RETURNS and FAIL in the same test: ' . - $file); - } - } - - // Test failed so we need to report details. - $txt = $warn ? 'WARN ' : 'FAIL '; - $this->_logger->log(0, $txt . $test_nr . $tested . $info); - - // write .exp - $res = $this->_writeLog($exp_filename, $wanted); - if (PEAR::isError($res)) { - return $res; - } - - // write .out - $res = $this->_writeLog($output_filename, $output); - if (PEAR::isError($res)) { - return $res; - } - - // write .diff - $returns = isset($section_text['RETURNS']) ? - array(trim($section_text['RETURNS']), $return_value) : null; - $expectf = isset($section_text['EXPECTF']) ? $wanted_re : null; - $data = $this->generate_diff($wanted, $output, $returns, $expectf); - $res = $this->_writeLog($diff_filename, $data); - if (PEAR::isError($res)) { - return $res; - } - - // write .log - $data = " ----- EXPECTED OUTPUT -$wanted ----- ACTUAL OUTPUT -$output ----- FAILED -"; - - if ($returnfail) { - $data .= " ----- EXPECTED RETURN -$section_text[RETURNS] ----- ACTUAL RETURN -$return_value -"; - } - - $res = $this->_writeLog($log_filename, $data); - if (PEAR::isError($res)) { - return $res; - } - - if (isset($this->_options['tapoutput'])) { - $wanted = explode("\n", $wanted); - $wanted = "# Expected output:\n#\n#" . implode("\n#", $wanted); - $output = explode("\n", $output); - $output = "#\n#\n# Actual output:\n#\n#" . implode("\n#", $output); - return array($wanted . $output . 'not ok', ' - ' . $tested); - } - return $warn ? 'WARNED' : 'FAILED'; - } - - function generate_diff($wanted, $output, $rvalue, $wanted_re) - { - $w = explode("\n", $wanted); - $o = explode("\n", $output); - $wr = explode("\n", $wanted_re); - $w1 = array_diff_assoc($w, $o); - $o1 = array_diff_assoc($o, $w); - $o2 = $w2 = array(); - foreach ($w1 as $idx => $val) { - if (!$wanted_re || !isset($wr[$idx]) || !isset($o1[$idx]) || - !preg_match('/^' . $wr[$idx] . '\\z/', $o1[$idx])) { - $w2[sprintf("%03d<", $idx)] = sprintf("%03d- ", $idx + 1) . $val; - } - } - foreach ($o1 as $idx => $val) { - if (!$wanted_re || !isset($wr[$idx]) || - !preg_match('/^' . $wr[$idx] . '\\z/', $val)) { - $o2[sprintf("%03d>", $idx)] = sprintf("%03d+ ", $idx + 1) . $val; - } - } - $diff = array_merge($w2, $o2); - ksort($diff); - $extra = $rvalue ? "##EXPECTED: $rvalue[0]\r\n##RETURNED: $rvalue[1]" : ''; - return implode("\r\n", $diff) . $extra; - } - - // Write the given text to a temporary file, and return the filename. - function save_text($filename, $text) - { - if (!$fp = fopen($filename, 'w')) { - return PEAR::raiseError("Cannot open file '" . $filename . "' (save_text)"); - } - fwrite($fp, $text); - fclose($fp); - if (1 < DETAILED) echo " -FILE $filename {{{ -$text -}}} -"; - } - - function _cleanupOldFiles($file) - { - $temp_dir = realpath(dirname($file)); - $mainFileName = basename($file, 'phpt'); - $diff_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'diff'; - $log_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'log'; - $exp_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'exp'; - $output_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'out'; - $memcheck_filename = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'mem'; - $temp_file = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'php'; - $temp_skipif = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'skip.php'; - $temp_clean = $temp_dir . DIRECTORY_SEPARATOR . $mainFileName.'clean.php'; - $tmp_post = $temp_dir . DIRECTORY_SEPARATOR . uniqid('phpt.'); - - // unlink old test results - @unlink($diff_filename); - @unlink($log_filename); - @unlink($exp_filename); - @unlink($output_filename); - @unlink($memcheck_filename); - @unlink($temp_file); - @unlink($temp_skipif); - @unlink($tmp_post); - @unlink($temp_clean); - } - - function _runSkipIf($section_text, $temp_skipif, $tested, $ini_settings) - { - $info = ''; - $warn = false; - if (array_key_exists('SKIPIF', $section_text) && trim($section_text['SKIPIF'])) { - $this->save_text($temp_skipif, $section_text['SKIPIF']); - $output = $this->system_with_timeout("$this->_php$ini_settings -f \"$temp_skipif\""); - $output = $output[1]; - $loutput = ltrim($output); - unlink($temp_skipif); - if (!strncasecmp('skip', $loutput, 4)) { - $skipreason = "SKIP $tested"; - if (preg_match('/^\s*skip\s*(.+)\s*/i', $output, $m)) { - $skipreason .= '(reason: ' . $m[1] . ')'; - } - if (!isset($this->_options['quiet'])) { - $this->_logger->log(0, $skipreason); - } - if (isset($this->_options['tapoutput'])) { - return array('ok', ' # skip ' . $reason); - } - return 'SKIPPED'; - } - - if (!strncasecmp('info', $loutput, 4) - && preg_match('/^\s*info\s*(.+)\s*/i', $output, $m)) { - $info = " (info: $m[1])"; - } - - if (!strncasecmp('warn', $loutput, 4) - && preg_match('/^\s*warn\s*(.+)\s*/i', $output, $m)) { - $warn = true; /* only if there is a reason */ - $info = " (warn: $m[1])"; - } - } - - return array('warn' => $warn, 'info' => $info); - } - - function _stripHeadersCGI($output) - { - $this->headers = array(); - if (!empty($this->_options['cgi']) && - $this->_php == $this->_options['cgi'] && - preg_match("/^(.*?)(?:\n\n(.*)|\\z)/s", $output, $match)) { - $output = isset($match[2]) ? trim($match[2]) : ''; - $this->_headers = $this->_processHeaders($match[1]); - } - - return $output; - } - - /** - * Return an array that can be used with array_diff() to compare headers - * - * @param string $text - */ - function _processHeaders($text) - { - $headers = array(); - $rh = preg_split("/[\n\r]+/", $text); - foreach ($rh as $line) { - if (strpos($line, ':')!== false) { - $line = explode(':', $line, 2); - $headers[trim($line[0])] = trim($line[1]); - } - } - return $headers; - } - - function _readFile($file) - { - // Load the sections of the test file. - $section_text = array( - 'TEST' => '(unnamed test)', - 'SKIPIF' => '', - 'GET' => '', - 'COOKIE' => '', - 'POST' => '', - 'ARGS' => '', - 'INI' => '', - 'CLEAN' => '', - ); - - if (!is_file($file) || !$fp = fopen($file, "r")) { - return PEAR::raiseError("Cannot open test file: $file"); - } - - $section = ''; - while (!feof($fp)) { - $line = fgets($fp); - - // Match the beginning of a section. - if (preg_match('/^--([_A-Z]+)--/', $line, $r)) { - $section = $r[1]; - $section_text[$section] = ''; - continue; - } elseif (empty($section)) { - fclose($fp); - return PEAR::raiseError("Invalid sections formats in test file: $file"); - } - - // Add to the section text. - $section_text[$section] .= $line; - } - fclose($fp); - - return $section_text; - } - - function _writeLog($logname, $data) - { - if (!$log = fopen($logname, 'w')) { - return PEAR::raiseError("Cannot create test log - $logname"); - } - fwrite($log, $data); - fclose($log); - } - - function _resetEnv($section_text, $temp_file) - { - $env = $_ENV; - $env['REDIRECT_STATUS'] = ''; - $env['QUERY_STRING'] = ''; - $env['PATH_TRANSLATED'] = ''; - $env['SCRIPT_FILENAME'] = ''; - $env['REQUEST_METHOD'] = ''; - $env['CONTENT_TYPE'] = ''; - $env['CONTENT_LENGTH'] = ''; - if (!empty($section_text['ENV'])) { - foreach (explode("\n", trim($section_text['ENV'])) as $e) { - $e = explode('=', trim($e), 2); - if (!empty($e[0]) && isset($e[1])) { - $env[$e[0]] = $e[1]; - } - } - } - if (array_key_exists('GET', $section_text)) { - $env['QUERY_STRING'] = trim($section_text['GET']); - } else { - $env['QUERY_STRING'] = ''; - } - if (array_key_exists('COOKIE', $section_text)) { - $env['HTTP_COOKIE'] = trim($section_text['COOKIE']); - } else { - $env['HTTP_COOKIE'] = ''; - } - $env['REDIRECT_STATUS'] = '1'; - $env['PATH_TRANSLATED'] = $temp_file; - $env['SCRIPT_FILENAME'] = $temp_file; - - return $env; - } - - function _processUpload($section_text, $file) - { - if (array_key_exists('UPLOAD', $section_text) && !empty($section_text['UPLOAD'])) { - $upload_files = trim($section_text['UPLOAD']); - $upload_files = explode("\n", $upload_files); - - $request = "Content-Type: multipart/form-data; boundary=---------------------------20896060251896012921717172737\n" . - "-----------------------------20896060251896012921717172737\n"; - foreach ($upload_files as $fileinfo) { - $fileinfo = explode('=', $fileinfo); - if (count($fileinfo) != 2) { - return PEAR::raiseError("Invalid UPLOAD section in test file: $file"); - } - if (!realpath(dirname($file) . '/' . $fileinfo[1])) { - return PEAR::raiseError("File for upload does not exist: $fileinfo[1] " . - "in test file: $file"); - } - $file_contents = file_get_contents(dirname($file) . '/' . $fileinfo[1]); - $fileinfo[1] = basename($fileinfo[1]); - $request .= "Content-Disposition: form-data; name=\"$fileinfo[0]\"; filename=\"$fileinfo[1]\"\n"; - $request .= "Content-Type: text/plain\n\n"; - $request .= $file_contents . "\n" . - "-----------------------------20896060251896012921717172737\n"; - } - - if (array_key_exists('POST', $section_text) && !empty($section_text['POST'])) { - // encode POST raw - $post = trim($section_text['POST']); - $post = explode('&', $post); - foreach ($post as $i => $post_info) { - $post_info = explode('=', $post_info); - if (count($post_info) != 2) { - return PEAR::raiseError("Invalid POST data in test file: $file"); - } - $post_info[0] = rawurldecode($post_info[0]); - $post_info[1] = rawurldecode($post_info[1]); - $post[$i] = $post_info; - } - foreach ($post as $post_info) { - $request .= "Content-Disposition: form-data; name=\"$post_info[0]\"\n\n"; - $request .= $post_info[1] . "\n" . - "-----------------------------20896060251896012921717172737\n"; - } - unset($section_text['POST']); - } - $section_text['POST_RAW'] = $request; - } - - return $section_text; - } - - function _testCleanup($section_text, $temp_clean) - { - if ($section_text['CLEAN']) { - // perform test cleanup - $this->save_text($temp_clean, $section_text['CLEAN']); - $this->system_with_timeout("$this->_php $temp_clean"); - if (file_exists($temp_clean)) { - unlink($temp_clean); - } - } - } -} \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Task/Common.php b/src/vitis/vas/rest/class/PEAR/Task/Common.php deleted file mode 100755 index 5841f286d6c16d8625a83d179c2e6d63fa1c0d7d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Task/Common.php +++ /dev/null @@ -1,208 +0,0 @@ -<?php -/** - * PEAR_Task_Common, base class for installer tasks - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Common.php,v 1.18 2008/05/13 21:28:20 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/**#@+ - * Error codes for task validation routines - */ -define('PEAR_TASK_ERROR_NOATTRIBS', 1); -define('PEAR_TASK_ERROR_MISSING_ATTRIB', 2); -define('PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE', 3); -define('PEAR_TASK_ERROR_INVALID', 4); -/**#@-*/ -define('PEAR_TASK_PACKAGE', 1); -define('PEAR_TASK_INSTALL', 2); -define('PEAR_TASK_PACKAGEANDINSTALL', 3); -/** - * A task is an operation that manipulates the contents of a file. - * - * Simple tasks operate on 1 file. Multiple tasks are executed after all files have been - * processed and installed, and are designed to operate on all files containing the task. - * The Post-install script task simply takes advantage of the fact that it will be run - * after installation, replace is a simple task. - * - * Combining tasks is possible, but ordering is significant. - * - * <file name="test.php" role="php"> - * <tasks:replace from="@data-dir@" to="data_dir" type="pear-config"/> - * <tasks:postinstallscript/> - * </file> - * - * This will first replace any instance of @data-dir@ in the test.php file - * with the path to the current data directory. Then, it will include the - * test.php file and run the script it contains to configure the package post-installation. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - * @abstract - */ -class PEAR_Task_Common -{ - /** - * Valid types for this version are 'simple' and 'multiple' - * - * - simple tasks operate on the contents of a file and write out changes to disk - * - multiple tasks operate on the contents of many files and write out the - * changes directly to disk - * - * Child task classes must override this property. - * @access protected - */ - var $type = 'simple'; - /** - * Determines which install phase this task is executed under - */ - var $phase = PEAR_TASK_INSTALL; - /** - * @access protected - */ - var $config; - /** - * @access protected - */ - var $registry; - /** - * @access protected - */ - var $logger; - /** - * @access protected - */ - var $installphase; - /** - * @param PEAR_Config - * @param PEAR_Common - */ - function PEAR_Task_Common(&$config, &$logger, $phase) - { - $this->config = &$config; - $this->registry = &$config->getRegistry(); - $this->logger = &$logger; - $this->installphase = $phase; - if ($this->type == 'multiple') { - $GLOBALS['_PEAR_TASK_POSTINSTANCES'][get_class($this)][] = &$this; - } - } - - /** - * Validate the basic contents of a task tag. - * @param PEAR_PackageFile_v2 - * @param array - * @param PEAR_Config - * @param array the entire parsed <file> tag - * @return true|array On error, return an array in format: - * array(PEAR_TASK_ERROR_???[, param1][, param2][, ...]) - * - * For PEAR_TASK_ERROR_MISSING_ATTRIB, pass the attribute name in - * For PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, pass the attribute name and an array - * of legal values in - * @static - * @abstract - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param array attributes from the <file> tag containing this task - * @param string|null last installed version of this package - * @abstract - */ - function init($xml, $fileAttributes, $lastVersion) - { - } - - /** - * Begin a task processing session. All multiple tasks will be processed after each file - * has been successfully installed, all simple tasks should perform their task here and - * return any errors using the custom throwError() method to allow forward compatibility - * - * This method MUST NOT write out any changes to disk - * @param PEAR_PackageFile_v2 - * @param string file contents - * @param string the eventual final file location (informational only) - * @return string|false|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError), otherwise return the new contents - * @abstract - */ - function startSession($pkg, $contents, $dest) - { - } - - /** - * This method is used to process each of the tasks for a particular multiple class - * type. Simple tasks need not implement this method. - * @param array an array of tasks - * @access protected - * @static - * @abstract - */ - function run($tasks) - { - } - - /** - * @static - * @final - */ - function hasPostinstallTasks() - { - return isset($GLOBALS['_PEAR_TASK_POSTINSTANCES']); - } - - /** - * @static - * @final - */ - function runPostinstallTasks() - { - foreach ($GLOBALS['_PEAR_TASK_POSTINSTANCES'] as $class => $tasks) { - $err = call_user_func(array($class, 'run'), - $GLOBALS['_PEAR_TASK_POSTINSTANCES'][$class]); - if ($err) { - return PEAR_Task_Common::throwError($err); - } - } - unset($GLOBALS['_PEAR_TASK_POSTINSTANCES']); - } - - /** - * Determines whether a role is a script - * @return bool - */ - function isScript() - { - return $this->type == 'script'; - } - - function throwError($msg, $code = -1) - { - include_once 'PEAR.php'; - return PEAR::raiseError($msg, $code); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Task/Postinstallscript.php b/src/vitis/vas/rest/class/PEAR/Task/Postinstallscript.php deleted file mode 100755 index 024c058536cc9d58fc1fea114e6151d7f59d4790..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Task/Postinstallscript.php +++ /dev/null @@ -1,329 +0,0 @@ -<?php -/** - * <tasks:postinstallscript> - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Postinstallscript.php,v 1.20 2008/05/13 21:28:20 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Common.php'; -/** - * Implements the postinstallscript file task. - * - * Note that post-install scripts are handled separately from installation, by the - * "pear run-scripts" command - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Task_Postinstallscript extends PEAR_Task_Common -{ - var $type = 'script'; - var $_class; - var $_params; - var $_obj; - /** - * - * @var PEAR_PackageFile_v2 - */ - var $_pkg; - var $_contents; - var $phase = PEAR_TASK_INSTALL; - - /** - * Validate the raw xml at parsing-time. - * - * This also attempts to validate the script to make sure it meets the criteria - * for a post-install script - * @param PEAR_PackageFile_v2 - * @param array The XML contents of the <postinstallscript> tag - * @param PEAR_Config - * @param array the entire parsed <file> tag - * @static - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - if ($fileXml['role'] != 'php') { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" must be role="php"'); - } - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $file = $pkg->getFileContents($fileXml['name']); - if (PEAR::isError($file)) { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" is not valid: ' . - $file->getMessage()); - } elseif ($file === null) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" could not be retrieved for processing!'); - } else { - $analysis = $pkg->analyzeSourceCode($file, true); - if (!$analysis) { - PEAR::popErrorHandling(); - $warnings = ''; - foreach ($pkg->getValidationWarnings() as $warn) { - $warnings .= $warn['message'] . "\n"; - } - return array(PEAR_TASK_ERROR_INVALID, 'Analysis of post-install script "' . - $fileXml['name'] . '" failed: ' . $warnings); - } - if (count($analysis['declared_classes']) != 1) { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" must declare exactly 1 class'); - } - $class = $analysis['declared_classes'][0]; - if ($class != str_replace(array('/', '.php'), array('_', ''), - $fileXml['name']) . '_postinstall') { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" class "' . $class . '" must be named "' . - str_replace(array('/', '.php'), array('_', ''), - $fileXml['name']) . '_postinstall"'); - } - if (!isset($analysis['declared_methods'][$class])) { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" must declare methods init() and run()'); - } - $methods = array('init' => 0, 'run' => 1); - foreach ($analysis['declared_methods'][$class] as $method) { - if (isset($methods[$method])) { - unset($methods[$method]); - } - } - if (count($methods)) { - PEAR::popErrorHandling(); - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" must declare methods init() and run()'); - } - } - PEAR::popErrorHandling(); - $definedparams = array(); - $tasksNamespace = $pkg->getTasksNs() . ':'; - if (!isset($xml[$tasksNamespace . 'paramgroup']) && isset($xml['paramgroup'])) { - // in order to support the older betas, which did not expect internal tags - // to also use the namespace - $tasksNamespace = ''; - } - if (isset($xml[$tasksNamespace . 'paramgroup'])) { - $params = $xml[$tasksNamespace . 'paramgroup']; - if (!is_array($params) || !isset($params[0])) { - $params = array($params); - } - foreach ($params as $param) { - if (!isset($param[$tasksNamespace . 'id'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" <paramgroup> must have ' . - 'an ' . $tasksNamespace . 'id> tag'); - } - if (isset($param[$tasksNamespace . 'name'])) { - if (!in_array($param[$tasksNamespace . 'name'], $definedparams)) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" parameter "' . $param[$tasksNamespace . 'name'] . - '" has not been previously defined'); - } - if (!isset($param[$tasksNamespace . 'conditiontype'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . - 'conditiontype> tag containing either "=", ' . - '"!=", or "preg_match"'); - } - if (!in_array($param[$tasksNamespace . 'conditiontype'], - array('=', '!=', 'preg_match'))) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . - 'conditiontype> tag containing either "=", ' . - '"!=", or "preg_match"'); - } - if (!isset($param[$tasksNamespace . 'value'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . - 'value> tag containing expected parameter value'); - } - } - if (isset($param[$tasksNamespace . 'instructions'])) { - if (!is_string($param[$tasksNamespace . 'instructions'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" ' . $tasksNamespace . - 'paramgroup> id "' . $param[$tasksNamespace . 'id'] . - '" ' . $tasksNamespace . 'instructions> must be simple text'); - } - } - if (!isset($param[$tasksNamespace . 'param'])) { - continue; // <param> is no longer required - } - $subparams = $param[$tasksNamespace . 'param']; - if (!is_array($subparams) || !isset($subparams[0])) { - $subparams = array($subparams); - } - foreach ($subparams as $subparam) { - if (!isset($subparam[$tasksNamespace . 'name'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" parameter for ' . - $tasksNamespace . 'paramgroup> id "' . - $param[$tasksNamespace . 'id'] . '" must have ' . - 'a ' . $tasksNamespace . 'name> tag'); - } - if (!preg_match('/[a-zA-Z0-9]+/', - $subparam[$tasksNamespace . 'name'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" parameter "' . - $subparam[$tasksNamespace . 'name'] . - '" for ' . $tasksNamespace . 'paramgroup> id "' . - $param[$tasksNamespace . 'id'] . - '" is not a valid name. Must contain only alphanumeric characters'); - } - if (!isset($subparam[$tasksNamespace . 'prompt'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" parameter "' . - $subparam[$tasksNamespace . 'name'] . - '" for ' . $tasksNamespace . 'paramgroup> id "' . - $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . 'prompt> tag'); - } - if (!isset($subparam[$tasksNamespace . 'type'])) { - return array(PEAR_TASK_ERROR_INVALID, 'Post-install script "' . - $fileXml['name'] . '" parameter "' . - $subparam[$tasksNamespace . 'name'] . - '" for ' . $tasksNamespace . 'paramgroup> id "' . - $param[$tasksNamespace . 'id'] . - '" must have a ' . $tasksNamespace . 'type> tag'); - } - $definedparams[] = $param[$tasksNamespace . 'id'] . '::' . - $subparam[$tasksNamespace . 'name']; - } - } - } - return true; - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param array attributes from the <file> tag containing this task - * @param string|null last installed version of this package, if any (useful for upgrades) - */ - function init($xml, $fileattribs, $lastversion) - { - $this->_class = str_replace('/', '_', $fileattribs['name']); - $this->_filename = $fileattribs['name']; - $this->_class = str_replace ('.php', '', $this->_class) . '_postinstall'; - $this->_params = $xml; - $this->_lastversion = $lastversion; - } - - /** - * Strip the tasks: namespace from internal params - * - * @access private - */ - function _stripNamespace($params = null) - { - if ($params === null) { - $params = array(); - if (!is_array($this->_params)) { - return; - } - foreach ($this->_params as $i => $param) { - if (is_array($param)) { - $param = $this->_stripNamespace($param); - } - $params[str_replace($this->_pkg->getTasksNs() . ':', '', $i)] = $param; - } - $this->_params = $params; - } else { - $newparams = array(); - foreach ($params as $i => $param) { - if (is_array($param)) { - $param = $this->_stripNamespace($param); - } - $newparams[str_replace($this->_pkg->getTasksNs() . ':', '', $i)] = $param; - } - return $newparams; - } - } - - /** - * Unlike other tasks, the installed file name is passed in instead of the file contents, - * because this task is handled post-installation - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string file name - * @return bool|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError) - */ - function startSession($pkg, $contents) - { - if ($this->installphase != PEAR_TASK_INSTALL) { - return false; - } - // remove the tasks: namespace if present - $this->_pkg = $pkg; - $this->_stripNamespace(); - $this->logger->log(0, 'Including external post-installation script "' . - $contents . '" - any errors are in this script'); - include_once $contents; - if (class_exists($this->_class)) { - $this->logger->log(0, 'Inclusion succeeded'); - } else { - return $this->throwError('init of post-install script class "' . $this->_class - . '" failed'); - } - $this->_obj = new $this->_class; - $this->logger->log(1, 'running post-install script "' . $this->_class . '->init()"'); - PEAR::pushErrorHandling(PEAR_ERROR_RETURN); - $res = $this->_obj->init($this->config, $pkg, $this->_lastversion); - PEAR::popErrorHandling(); - if ($res) { - $this->logger->log(0, 'init succeeded'); - } else { - return $this->throwError('init of post-install script "' . $this->_class . - '->init()" failed'); - } - $this->_contents = $contents; - return true; - } - - /** - * No longer used - * @see PEAR_PackageFile_v2::runPostinstallScripts() - * @param array an array of tasks - * @param string install or upgrade - * @access protected - * @static - */ - function run() - { - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Task/Postinstallscript/rw.php b/src/vitis/vas/rest/class/PEAR/Task/Postinstallscript/rw.php deleted file mode 100755 index 3f2a97cc6d3c52b7ca993058c24cbc1751be3d96..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Task/Postinstallscript/rw.php +++ /dev/null @@ -1,176 +0,0 @@ -<?php -/** - * <tasks:postinstallscript> - read/write version - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: rw.php,v 1.12 2008/01/03 20:26:37 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a10 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Postinstallscript.php'; -/** - * Abstracts the postinstallscript file task xml. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a10 - */ -class PEAR_Task_Postinstallscript_rw extends PEAR_Task_Postinstallscript -{ - /** - * parent package file object - * - * @var PEAR_PackageFile_v2_rw - */ - var $_pkg; - /** - * Enter description here... - * - * @param PEAR_PackageFile_v2_rw $pkg - * @param PEAR_Config $config - * @param PEAR_Frontend $logger - * @param array $fileXml - * @return PEAR_Task_Postinstallscript_rw - */ - function PEAR_Task_Postinstallscript_rw(&$pkg, &$config, &$logger, $fileXml) - { - parent::PEAR_Task_Common($config, $logger, PEAR_TASK_PACKAGE); - $this->_contents = $fileXml; - $this->_pkg = &$pkg; - $this->_params = array(); - } - - function validate() - { - return $this->validateXml($this->_pkg, $this->_params, $this->config, $this->_contents); - } - - function getName() - { - return 'postinstallscript'; - } - - /** - * add a simple <paramgroup> to the post-install script - * - * Order is significant, so call this method in the same - * sequence the users should see the paramgroups. The $params - * parameter should either be the result of a call to {@link getParam()} - * or an array of calls to getParam(). - * - * Use {@link addConditionTypeGroup()} to add a <paramgroup> containing - * a <conditiontype> tag - * @param string $id <paramgroup> id as seen by the script - * @param array|false $params array of getParam() calls, or false for no params - * @param string|false $instructions - */ - function addParamGroup($id, $params = false, $instructions = false) - { - if ($params && isset($params[0]) && !isset($params[1])) { - $params = $params[0]; - } - $stuff = - array( - $this->_pkg->getTasksNs() . ':id' => $id, - ); - if ($instructions) { - $stuff[$this->_pkg->getTasksNs() . ':instructions'] = $instructions; - } - if ($params) { - $stuff[$this->_pkg->getTasksNs() . ':param'] = $params; - } - $this->_params[$this->_pkg->getTasksNs() . ':paramgroup'][] = $stuff; - } - - /** - * add a complex <paramgroup> to the post-install script with conditions - * - * This inserts a <paramgroup> with - * - * Order is significant, so call this method in the same - * sequence the users should see the paramgroups. The $params - * parameter should either be the result of a call to {@link getParam()} - * or an array of calls to getParam(). - * - * Use {@link addParamGroup()} to add a simple <paramgroup> - * - * @param string $id <paramgroup> id as seen by the script - * @param string $oldgroup <paramgroup> id of the section referenced by - * <conditiontype> - * @param string $param name of the <param> from the older section referenced - * by <contitiontype> - * @param string $value value to match of the parameter - * @param string $conditiontype one of '=', '!=', 'preg_match' - * @param array|false $params array of getParam() calls, or false for no params - * @param string|false $instructions - */ - function addConditionTypeGroup($id, $oldgroup, $param, $value, $conditiontype = '=', - $params = false, $instructions = false) - { - if ($params && isset($params[0]) && !isset($params[1])) { - $params = $params[0]; - } - $stuff = - array( - $this->_pkg->getTasksNs() . ':id' => $id, - ); - if ($instructions) { - $stuff[$this->_pkg->getTasksNs() . ':instructions'] = $instructions; - } - $stuff[$this->_pkg->getTasksNs() . ':name'] = $oldgroup . '::' . $param; - $stuff[$this->_pkg->getTasksNs() . ':conditiontype'] = $conditiontype; - $stuff[$this->_pkg->getTasksNs() . ':value'] = $value; - if ($params) { - $stuff[$this->_pkg->getTasksNs() . ':param'] = $params; - } - $this->_params[$this->_pkg->getTasksNs() . ':paramgroup'][] = $stuff; - } - - function getXml() - { - return $this->_params; - } - - /** - * Use to set up a param tag for use in creating a paramgroup - * @static - */ - function getParam($name, $prompt, $type = 'string', $default = null) - { - if ($default !== null) { - return - array( - $this->_pkg->getTasksNs() . ':name' => $name, - $this->_pkg->getTasksNs() . ':prompt' => $prompt, - $this->_pkg->getTasksNs() . ':type' => $type, - $this->_pkg->getTasksNs() . ':default' => $default - ); - } - return - array( - $this->_pkg->getTasksNs() . ':name' => $name, - $this->_pkg->getTasksNs() . ':prompt' => $prompt, - $this->_pkg->getTasksNs() . ':type' => $type, - ); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Task/Replace.php b/src/vitis/vas/rest/class/PEAR/Task/Replace.php deleted file mode 100755 index 9a941819baed05afbb6824e0cffeb89f5630bda7..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Task/Replace.php +++ /dev/null @@ -1,182 +0,0 @@ -<?php -/** - * <tasks:replace> - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Replace.php,v 1.17 2008/05/13 21:28:20 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Common.php'; -/** - * Implements the replace file task. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Task_Replace extends PEAR_Task_Common -{ - var $type = 'simple'; - var $phase = PEAR_TASK_PACKAGEANDINSTALL; - var $_replacements; - - /** - * Validate the raw xml at parsing-time. - * @param PEAR_PackageFile_v2 - * @param array raw, parsed xml - * @param PEAR_Config - * @static - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - if (!isset($xml['attribs'])) { - return array(PEAR_TASK_ERROR_NOATTRIBS); - } - if (!isset($xml['attribs']['type'])) { - return array(PEAR_TASK_ERROR_MISSING_ATTRIB, 'type'); - } - if (!isset($xml['attribs']['to'])) { - return array(PEAR_TASK_ERROR_MISSING_ATTRIB, 'to'); - } - if (!isset($xml['attribs']['from'])) { - return array(PEAR_TASK_ERROR_MISSING_ATTRIB, 'from'); - } - if ($xml['attribs']['type'] == 'pear-config') { - if (!in_array($xml['attribs']['to'], $config->getKeys())) { - return array(PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, 'to', $xml['attribs']['to'], - $config->getKeys()); - } - } elseif ($xml['attribs']['type'] == 'php-const') { - if (defined($xml['attribs']['to'])) { - return true; - } else { - return array(PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, 'to', $xml['attribs']['to'], - array('valid PHP constant')); - } - } elseif ($xml['attribs']['type'] == 'package-info') { - if (in_array($xml['attribs']['to'], - array('name', 'summary', 'channel', 'notes', 'extends', 'description', - 'release_notes', 'license', 'release-license', 'license-uri', - 'version', 'api-version', 'state', 'api-state', 'release_date', - 'date', 'time'))) { - return true; - } else { - return array(PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, 'to', $xml['attribs']['to'], - array('name', 'summary', 'channel', 'notes', 'extends', 'description', - 'release_notes', 'license', 'release-license', 'license-uri', - 'version', 'api-version', 'state', 'api-state', 'release_date', - 'date', 'time')); - } - } else { - return array(PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE, 'type', $xml['attribs']['type'], - array('pear-config', 'package-info', 'php-const')); - } - return true; - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param unused - */ - function init($xml, $attribs) - { - $this->_replacements = isset($xml['attribs']) ? array($xml) : $xml; - } - - /** - * Do a package.xml 1.0 replacement, with additional package-info fields available - * - * See validateXml() source for the complete list of allowed fields - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string file contents - * @param string the eventual final file location (informational only) - * @return string|false|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError), otherwise return the new contents - */ - function startSession($pkg, $contents, $dest) - { - $subst_from = $subst_to = array(); - foreach ($this->_replacements as $a) { - $a = $a['attribs']; - $to = ''; - if ($a['type'] == 'pear-config') { - if ($this->installphase == PEAR_TASK_PACKAGE) { - return false; - } - if ($a['to'] == 'master_server') { - $chan = $this->registry->getChannel($pkg->getChannel()); - if (!PEAR::isError($chan)) { - $to = $chan->getServer(); - } else { - $this->logger->log(0, "$dest: invalid pear-config replacement: $a[to]"); - return false; - } - } else { - if ($this->config->isDefinedLayer('ftp')) { - // try the remote config file first - $to = $this->config->get($a['to'], 'ftp', $pkg->getChannel()); - if (is_null($to)) { - // then default to local - $to = $this->config->get($a['to'], null, $pkg->getChannel()); - } - } else { - $to = $this->config->get($a['to'], null, $pkg->getChannel()); - } - } - if (is_null($to)) { - $this->logger->log(0, "$dest: invalid pear-config replacement: $a[to]"); - return false; - } - } elseif ($a['type'] == 'php-const') { - if ($this->installphase == PEAR_TASK_PACKAGE) { - return false; - } - if (defined($a['to'])) { - $to = constant($a['to']); - } else { - $this->logger->log(0, "$dest: invalid php-const replacement: $a[to]"); - return false; - } - } else { - if ($t = $pkg->packageInfo($a['to'])) { - $to = $t; - } else { - $this->logger->log(0, "$dest: invalid package-info replacement: $a[to]"); - return false; - } - } - if (!is_null($to)) { - $subst_from[] = $a['from']; - $subst_to[] = $to; - } - } - $this->logger->log(3, "doing " . sizeof($subst_from) . - " substitution(s) for $dest"); - if (sizeof($subst_from)) { - $contents = str_replace($subst_from, $subst_to, $contents); - } - return $contents; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Task/Replace/rw.php b/src/vitis/vas/rest/class/PEAR/Task/Replace/rw.php deleted file mode 100755 index fe03d2e61b9b84996929b450cb0f41b858a7a3ad..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Task/Replace/rw.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php -/** - * <tasks:replace> - read/write version - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: rw.php,v 1.4 2008/01/03 20:26:37 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a10 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Replace.php'; -/** - * Abstracts the replace task xml. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a10 - */ -class PEAR_Task_Replace_rw extends PEAR_Task_Replace -{ - function PEAR_Task_Replace_rw(&$pkg, &$config, &$logger, $fileXml) - { - parent::PEAR_Task_Common($config, $logger, PEAR_TASK_PACKAGE); - $this->_contents = $fileXml; - $this->_pkg = &$pkg; - $this->_params = array(); - } - - function validate() - { - return $this->validateXml($this->_pkg, $this->_params, $this->config, $this->_contents); - } - - function setInfo($from, $to, $type) - { - $this->_params = array('attribs' => array('from' => $from, 'to' => $to, 'type' => $type)); - } - - function getName() - { - return 'replace'; - } - - function getXml() - { - return $this->_params; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Task/Unixeol.php b/src/vitis/vas/rest/class/PEAR/Task/Unixeol.php deleted file mode 100755 index bfd3f11c2f144db21942d51d331dd876ce865ba3..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Task/Unixeol.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php -/** - * <tasks:unixeol> - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Unixeol.php,v 1.10 2008/05/13 21:28:20 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Common.php'; -/** - * Implements the unix line endings file task. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Task_Unixeol extends PEAR_Task_Common -{ - var $type = 'simple'; - var $phase = PEAR_TASK_PACKAGE; - var $_replacements; - - /** - * Validate the raw xml at parsing-time. - * @param PEAR_PackageFile_v2 - * @param array raw, parsed xml - * @param PEAR_Config - * @static - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - if ($xml != '') { - return array(PEAR_TASK_ERROR_INVALID, 'no attributes allowed'); - } - return true; - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param unused - */ - function init($xml, $attribs) - { - } - - /** - * Replace all line endings with line endings customized for the current OS - * - * See validateXml() source for the complete list of allowed fields - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string file contents - * @param string the eventual final file location (informational only) - * @return string|false|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError), otherwise return the new contents - */ - function startSession($pkg, $contents, $dest) - { - $this->logger->log(3, "replacing all line endings with \\n in $dest"); - return preg_replace("/\r\n|\n\r|\r|\n/", "\n", $contents); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Task/Unixeol/rw.php b/src/vitis/vas/rest/class/PEAR/Task/Unixeol/rw.php deleted file mode 100755 index f04f0f00b9d68b98e0cb2b2fe037688b9f7eb369..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Task/Unixeol/rw.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * <tasks:unixeol> - read/write version - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: rw.php,v 1.5 2008/01/03 20:26:37 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a10 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Unixeol.php'; -/** - * Abstracts the unixeol task xml. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a10 - */ -class PEAR_Task_Unixeol_rw extends PEAR_Task_Unixeol -{ - function PEAR_Task_Unixeol_rw(&$pkg, &$config, &$logger, $fileXml) - { - parent::PEAR_Task_Common($config, $logger, PEAR_TASK_PACKAGE); - $this->_contents = $fileXml; - $this->_pkg = &$pkg; - $this->_params = array(); - } - - function validate() - { - return true; - } - - function getName() - { - return 'unixeol'; - } - - function getXml() - { - return ''; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Task/Windowseol.php b/src/vitis/vas/rest/class/PEAR/Task/Windowseol.php deleted file mode 100755 index 1a1be1e4c37426ccd8f31dcf4a32f3a02c4d66ec..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Task/Windowseol.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php -/** - * <tasks:windowseol> - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Windowseol.php,v 1.9 2008/05/13 21:28:20 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Common.php'; -/** - * Implements the windows line endsings file task. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Task_Windowseol extends PEAR_Task_Common -{ - var $type = 'simple'; - var $phase = PEAR_TASK_PACKAGE; - var $_replacements; - - /** - * Validate the raw xml at parsing-time. - * @param PEAR_PackageFile_v2 - * @param array raw, parsed xml - * @param PEAR_Config - * @static - */ - function validateXml($pkg, $xml, $config, $fileXml) - { - if ($xml != '') { - return array(PEAR_TASK_ERROR_INVALID, 'no attributes allowed'); - } - return true; - } - - /** - * Initialize a task instance with the parameters - * @param array raw, parsed xml - * @param unused - */ - function init($xml, $attribs) - { - } - - /** - * Replace all line endings with windows line endings - * - * See validateXml() source for the complete list of allowed fields - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - * @param string file contents - * @param string the eventual final file location (informational only) - * @return string|false|PEAR_Error false to skip this file, PEAR_Error to fail - * (use $this->throwError), otherwise return the new contents - */ - function startSession($pkg, $contents, $dest) - { - $this->logger->log(3, "replacing all line endings with \\r\\n in $dest"); - return preg_replace("/\r\n|\n\r|\r|\n/", "\r\n", $contents); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Task/Windowseol/rw.php b/src/vitis/vas/rest/class/PEAR/Task/Windowseol/rw.php deleted file mode 100755 index c61a15d8903f92a997cc120ebe9106368bf4afac..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Task/Windowseol/rw.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php -/** - * <tasks:windowseol> - read/write version - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: rw.php,v 1.5 2008/01/03 20:26:37 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a10 - */ -/** - * Base class - */ -require_once 'PEAR/Task/Windowseol.php'; -/** - * Abstracts the windowseol task xml. - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a10 - */ -class PEAR_Task_Windowseol_rw extends PEAR_Task_Windowseol -{ - function PEAR_Task_Windowseol_rw(&$pkg, &$config, &$logger, $fileXml) - { - parent::PEAR_Task_Common($config, $logger, PEAR_TASK_PACKAGE); - $this->_contents = $fileXml; - $this->_pkg = &$pkg; - $this->_params = array(); - } - - function validate() - { - return true; - } - - function getName() - { - return 'windowseol'; - } - - function getXml() - { - return ''; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/Validate.php b/src/vitis/vas/rest/class/PEAR/Validate.php deleted file mode 100755 index 34796b79303ae6d4761dfca34b677191077a1d98..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Validate.php +++ /dev/null @@ -1,634 +0,0 @@ -<?php -/** - * PEAR_Validate - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Validate.php,v 1.52 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ -/**#@+ - * Constants for install stage - */ -define('PEAR_VALIDATE_INSTALLING', 1); -define('PEAR_VALIDATE_UNINSTALLING', 2); // this is not bit-mapped like the others -define('PEAR_VALIDATE_NORMAL', 3); -define('PEAR_VALIDATE_DOWNLOADING', 4); // this is not bit-mapped like the others -define('PEAR_VALIDATE_PACKAGING', 7); -/**#@-*/ -require_once 'PEAR/Common.php'; -require_once 'PEAR/Validator/PECL.php'; - -/** - * Validation class for package.xml - channel-level advanced validation - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_Validate -{ - var $packageregex = _PEAR_COMMON_PACKAGE_NAME_PREG; - /** - * @var PEAR_PackageFile_v1|PEAR_PackageFile_v2 - */ - var $_packagexml; - /** - * @var int one of the PEAR_VALIDATE_* constants - */ - var $_state = PEAR_VALIDATE_NORMAL; - /** - * Format: ('error' => array('field' => name, 'reason' => reason), 'warning' => same) - * @var array - * @access private - */ - var $_failures = array('error' => array(), 'warning' => array()); - - /** - * Override this method to handle validation of normal package names - * @param string - * @return bool - * @access protected - */ - function _validPackageName($name) - { - return (bool) preg_match('/^' . $this->packageregex . '\\z/', $name); - } - - /** - * @param string package name to validate - * @param string name of channel-specific validation package - * @final - */ - function validPackageName($name, $validatepackagename = false) - { - if ($validatepackagename) { - if (strtolower($name) == strtolower($validatepackagename)) { - return (bool) preg_match('/^[a-zA-Z0-9_]+(?:\.[a-zA-Z0-9_]+)*\\z/', $name); - } - } - return $this->_validPackageName($name); - } - - /** - * This validates a bundle name, and bundle names must conform - * to the PEAR naming convention, so the method is final and static. - * @param string - * @final - * @static - */ - function validGroupName($name) - { - return (bool) preg_match('/^' . _PEAR_COMMON_PACKAGE_NAME_PREG . '\\z/', $name); - } - - /** - * Determine whether $state represents a valid stability level - * @param string - * @return bool - * @static - * @final - */ - function validState($state) - { - return in_array($state, array('snapshot', 'devel', 'alpha', 'beta', 'stable')); - } - - /** - * Get a list of valid stability levels - * @return array - * @static - * @final - */ - function getValidStates() - { - return array('snapshot', 'devel', 'alpha', 'beta', 'stable'); - } - - /** - * Determine whether a version is a properly formatted version number that can be used - * by version_compare - * @param string - * @return bool - * @static - * @final - */ - function validVersion($ver) - { - return (bool) preg_match(PEAR_COMMON_PACKAGE_VERSION_PREG, $ver); - } - - /** - * @param PEAR_PackageFile_v1|PEAR_PackageFile_v2 - */ - function setPackageFile(&$pf) - { - $this->_packagexml = &$pf; - } - - /** - * @access private - */ - function _addFailure($field, $reason) - { - $this->_failures['errors'][] = array('field' => $field, 'reason' => $reason); - } - - /** - * @access private - */ - function _addWarning($field, $reason) - { - $this->_failures['warnings'][] = array('field' => $field, 'reason' => $reason); - } - - function getFailures() - { - $failures = $this->_failures; - $this->_failures = array('warnings' => array(), 'errors' => array()); - return $failures; - } - - /** - * @param int one of the PEAR_VALIDATE_* constants - */ - function validate($state = null) - { - if (!isset($this->_packagexml)) { - return false; - } - if ($state !== null) { - $this->_state = $state; - } - $this->_failures = array('warnings' => array(), 'errors' => array()); - $this->validatePackageName(); - $this->validateVersion(); - $this->validateMaintainers(); - $this->validateDate(); - $this->validateSummary(); - $this->validateDescription(); - $this->validateLicense(); - $this->validateNotes(); - if ($this->_packagexml->getPackagexmlVersion() == '1.0') { - $this->validateState(); - $this->validateFilelist(); - } elseif ($this->_packagexml->getPackagexmlVersion() == '2.0' || - $this->_packagexml->getPackagexmlVersion() == '2.1') { - $this->validateTime(); - $this->validateStability(); - $this->validateDeps(); - $this->validateMainFilelist(); - $this->validateReleaseFilelist(); - //$this->validateGlobalTasks(); - $this->validateChangelog(); - } - return !((bool) count($this->_failures['errors'])); - } - - /** - * @access protected - */ - function validatePackageName() - { - if ($this->_state == PEAR_VALIDATE_PACKAGING || - $this->_state == PEAR_VALIDATE_NORMAL) { - if (($this->_packagexml->getPackagexmlVersion() == '2.0' || - $this->_packagexml->getPackagexmlVersion() == '2.1') && - $this->_packagexml->getExtends()) { - $version = $this->_packagexml->getVersion() . ''; - $name = $this->_packagexml->getPackage(); - $test = array_shift($a = explode('.', $version)); - if ($test == '0') { - return true; - } - $vlen = strlen($test); - $majver = substr($name, strlen($name) - $vlen); - while ($majver && !is_numeric($majver{0})) { - $majver = substr($majver, 1); - } - if ($majver != $test) { - $this->_addWarning('package', "package $name extends package " . - $this->_packagexml->getExtends() . ' and so the name should ' . - 'have a postfix equal to the major version like "' . - $this->_packagexml->getExtends() . $test . '"'); - return true; - } elseif (substr($name, 0, strlen($name) - $vlen) != - $this->_packagexml->getExtends()) { - $this->_addWarning('package', "package $name extends package " . - $this->_packagexml->getExtends() . ' and so the name must ' . - 'be an extension like "' . $this->_packagexml->getExtends() . - $test . '"'); - return true; - } - } - } - if (!$this->validPackageName($this->_packagexml->getPackage())) { - $this->_addFailure('name', 'package name "' . - $this->_packagexml->getPackage() . '" is invalid'); - return false; - } - } - - /** - * @access protected - */ - function validateVersion() - { - if ($this->_state != PEAR_VALIDATE_PACKAGING) { - if (!$this->validVersion($this->_packagexml->getVersion())) { - $this->_addFailure('version', - 'Invalid version number "' . $this->_packagexml->getVersion() . '"'); - } - return false; - } - $version = $this->_packagexml->getVersion(); - $versioncomponents = explode('.', $version); - if (count($versioncomponents) != 3) { - $this->_addWarning('version', - 'A version number should have 3 decimals (x.y.z)'); - return true; - } - $name = $this->_packagexml->getPackage(); - // version must be based upon state - switch ($this->_packagexml->getState()) { - case 'snapshot' : - return true; - case 'devel' : - if ($versioncomponents[0] . 'a' == '0a') { - return true; - } - if ($versioncomponents[0] == 0) { - $versioncomponents[0] = '0'; - $this->_addWarning('version', - 'version "' . $version . '" should be "' . - implode('.' ,$versioncomponents) . '"'); - } else { - $this->_addWarning('version', - 'packages with devel stability must be < version 1.0.0'); - } - return true; - break; - case 'alpha' : - case 'beta' : - // check for a package that extends a package, - // like Foo and Foo2 - if ($this->_state == PEAR_VALIDATE_PACKAGING) { - if (substr($versioncomponents[2], 1, 2) == 'rc') { - $this->_addFailure('version', 'Release Candidate versions ' . - 'must have capital RC, not lower-case rc'); - return false; - } - } - if (!$this->_packagexml->getExtends()) { - if ($versioncomponents[0] == '1') { - if ($versioncomponents[2]{0} == '0') { - if ($versioncomponents[2] == '0') { - // version 1.*.0000 - $this->_addWarning('version', - 'version 1.' . $versioncomponents[1] . - '.0 probably should not be alpha or beta'); - return true; - } elseif (strlen($versioncomponents[2]) > 1) { - // version 1.*.0RC1 or 1.*.0beta24 etc. - return true; - } else { - // version 1.*.0 - $this->_addWarning('version', - 'version 1.' . $versioncomponents[1] . - '.0 probably should not be alpha or beta'); - return true; - } - } else { - $this->_addWarning('version', - 'bugfix versions (1.3.x where x > 0) probably should ' . - 'not be alpha or beta'); - return true; - } - } elseif ($versioncomponents[0] != '0') { - $this->_addWarning('version', - 'major versions greater than 1 are not allowed for packages ' . - 'without an <extends> tag or an identical postfix (foo2 v2.0.0)'); - return true; - } - if ($versioncomponents[0] . 'a' == '0a') { - return true; - } - if ($versioncomponents[0] == 0) { - $versioncomponents[0] = '0'; - $this->_addWarning('version', - 'version "' . $version . '" should be "' . - implode('.' ,$versioncomponents) . '"'); - } - } else { - $vlen = strlen($versioncomponents[0] . ''); - $majver = substr($name, strlen($name) - $vlen); - while ($majver && !is_numeric($majver{0})) { - $majver = substr($majver, 1); - } - if (($versioncomponents[0] != 0) && $majver != $versioncomponents[0]) { - $this->_addWarning('version', 'first version number "' . - $versioncomponents[0] . '" must match the postfix of ' . - 'package name "' . $name . '" (' . - $majver . ')'); - return true; - } - if ($versioncomponents[0] == $majver) { - if ($versioncomponents[2]{0} == '0') { - if ($versioncomponents[2] == '0') { - // version 2.*.0000 - $this->_addWarning('version', - "version $majver." . $versioncomponents[1] . - '.0 probably should not be alpha or beta'); - return false; - } elseif (strlen($versioncomponents[2]) > 1) { - // version 2.*.0RC1 or 2.*.0beta24 etc. - return true; - } else { - // version 2.*.0 - $this->_addWarning('version', - "version $majver." . $versioncomponents[1] . - '.0 cannot be alpha or beta'); - return true; - } - } else { - $this->_addWarning('version', - "bugfix versions ($majver.x.y where y > 0) should " . - 'not be alpha or beta'); - return true; - } - } elseif ($versioncomponents[0] != '0') { - $this->_addWarning('version', - "only versions 0.x.y and $majver.x.y are allowed for alpha/beta releases"); - return true; - } - if ($versioncomponents[0] . 'a' == '0a') { - return true; - } - if ($versioncomponents[0] == 0) { - $versioncomponents[0] = '0'; - $this->_addWarning('version', - 'version "' . $version . '" should be "' . - implode('.' ,$versioncomponents) . '"'); - } - } - return true; - break; - case 'stable' : - if ($versioncomponents[0] == '0') { - $this->_addWarning('version', 'versions less than 1.0.0 cannot ' . - 'be stable'); - return true; - } - if (!is_numeric($versioncomponents[2])) { - if (preg_match('/\d+(rc|a|alpha|b|beta)\d*/i', - $versioncomponents[2])) { - $this->_addWarning('version', 'version "' . $version . '" or any ' . - 'RC/beta/alpha version cannot be stable'); - return true; - } - } - // check for a package that extends a package, - // like Foo and Foo2 - if ($this->_packagexml->getExtends()) { - $vlen = strlen($versioncomponents[0] . ''); - $majver = substr($name, strlen($name) - $vlen); - while ($majver && !is_numeric($majver{0})) { - $majver = substr($majver, 1); - } - if (($versioncomponents[0] != 0) && $majver != $versioncomponents[0]) { - $this->_addWarning('version', 'first version number "' . - $versioncomponents[0] . '" must match the postfix of ' . - 'package name "' . $name . '" (' . - $majver . ')'); - return true; - } - } elseif ($versioncomponents[0] > 1) { - $this->_addWarning('version', 'major version x in x.y.z may not be greater than ' . - '1 for any package that does not have an <extends> tag'); - } - return true; - break; - default : - return false; - break; - } - } - - /** - * @access protected - */ - function validateMaintainers() - { - // maintainers can only be truly validated server-side for most channels - // but allow this customization for those who wish it - return true; - } - - /** - * @access protected - */ - function validateDate() - { - if ($this->_state == PEAR_VALIDATE_NORMAL || - $this->_state == PEAR_VALIDATE_PACKAGING) { - - if (!preg_match('/(\d\d\d\d)\-(\d\d)\-(\d\d)/', - $this->_packagexml->getDate(), $res) || - count($res) < 4 - || !checkdate($res[2], $res[3], $res[1]) - ) { - $this->_addFailure('date', 'invalid release date "' . - $this->_packagexml->getDate() . '"'); - return false; - } - - - if ($this->_state == PEAR_VALIDATE_PACKAGING && - $this->_packagexml->getDate() != date('Y-m-d')) { - $this->_addWarning('date', 'Release Date "' . - $this->_packagexml->getDate() . '" is not today'); - } - } - return true; - } - - /** - * @access protected - */ - function validateTime() - { - if (!$this->_packagexml->getTime()) { - // default of no time value set - return true; - } - // packager automatically sets time, so only validate if - // pear validate is called - if ($this->_state = PEAR_VALIDATE_NORMAL) { - if (!preg_match('/\d\d:\d\d:\d\d/', - $this->_packagexml->getTime())) { - $this->_addFailure('time', 'invalid release time "' . - $this->_packagexml->getTime() . '"'); - return false; - } - if (strtotime($this->_packagexml->getTime()) == -1) { - $this->_addFailure('time', 'invalid release time "' . - $this->_packagexml->getTime() . '"'); - return false; - } - } - return true; - } - - /** - * @access protected - */ - function validateState() - { - // this is the closest to "final" php4 can get - if (!PEAR_Validate::validState($this->_packagexml->getState())) { - if (strtolower($this->_packagexml->getState() == 'rc')) { - $this->_addFailure('state', 'RC is not a state, it is a version ' . - 'postfix, use ' . $this->_packagexml->getVersion() . 'RC1, state beta'); - } - $this->_addFailure('state', 'invalid release state "' . - $this->_packagexml->getState() . '", must be one of: ' . - implode(', ', PEAR_Validate::getValidStates())); - return false; - } - return true; - } - - /** - * @access protected - */ - function validateStability() - { - $ret = true; - $packagestability = $this->_packagexml->getState(); - $apistability = $this->_packagexml->getState('api'); - if (!PEAR_Validate::validState($packagestability)) { - $this->_addFailure('state', 'invalid release stability "' . - $this->_packagexml->getState() . '", must be one of: ' . - implode(', ', PEAR_Validate::getValidStates())); - $ret = false; - } - $apistates = PEAR_Validate::getValidStates(); - array_shift($apistates); // snapshot is not allowed - if (!in_array($apistability, $apistates)) { - $this->_addFailure('state', 'invalid API stability "' . - $this->_packagexml->getState('api') . '", must be one of: ' . - implode(', ', $apistates)); - $ret = false; - } - return $ret; - } - - /** - * @access protected - */ - function validateSummary() - { - return true; - } - - /** - * @access protected - */ - function validateDescription() - { - return true; - } - - /** - * @access protected - */ - function validateLicense() - { - return true; - } - - /** - * @access protected - */ - function validateNotes() - { - return true; - } - - /** - * for package.xml 2.0 only - channels can't use package.xml 1.0 - * @access protected - */ - function validateDependencies() - { - return true; - } - - /** - * for package.xml 1.0 only - * @access private - */ - function _validateFilelist() - { - return true; // placeholder for now - } - - /** - * for package.xml 2.0 only - * @access protected - */ - function validateMainFilelist() - { - return true; // placeholder for now - } - - /** - * for package.xml 2.0 only - * @access protected - */ - function validateReleaseFilelist() - { - return true; // placeholder for now - } - - /** - * @access protected - */ - function validateChangelog() - { - return true; - } - - /** - * @access protected - */ - function validateFilelist() - { - return true; - } - - /** - * @access protected - */ - function validateDeps() - { - return true; - } -} -?> diff --git a/src/vitis/vas/rest/class/PEAR/Validator/PECL.php b/src/vitis/vas/rest/class/PEAR/Validator/PECL.php deleted file mode 100755 index 354a5bed1d4dc7220f44fc287592228feed60f66..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/Validator/PECL.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/** - * Channel Validator for the pecl.php.net channel - * - * PHP 4 and PHP 5 - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2006 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: PECL.php,v 1.9 2008/01/03 20:26:37 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a5 - */ -/** - * This is the parent class for all validators - */ -require_once 'PEAR/Validate.php'; -/** - * Channel Validator for the pecl.php.net channel - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a5 - */ -class PEAR_Validator_PECL extends PEAR_Validate -{ - function validateVersion() - { - if ($this->_state == PEAR_VALIDATE_PACKAGING) { - $version = $this->_packagexml->getVersion(); - $versioncomponents = explode('.', $version); - $last = array_pop($versioncomponents); - if (substr($last, 1, 2) == 'rc') { - $this->_addFailure('version', 'Release Candidate versions must have ' . - 'upper-case RC, not lower-case rc'); - return false; - } - } - return true; - } - - function validatePackageName() - { - $ret = parent::validatePackageName(); - if ($this->_packagexml->getPackageType() == 'extsrc' || - $this->_packagexml->getPackageType() == 'zendextsrc') { - if (strtolower($this->_packagexml->getPackage()) != - strtolower($this->_packagexml->getProvidesExtension())) { - $this->_addWarning('providesextension', 'package name "' . - $this->_packagexml->getPackage() . '" is different from extension name "' . - $this->_packagexml->getProvidesExtension() . '"'); - } - } - return $ret; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PEAR/XMLParser.php b/src/vitis/vas/rest/class/PEAR/XMLParser.php deleted file mode 100755 index faabc073d58cc081cf15320842fa12e81b2383aa..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PEAR/XMLParser.php +++ /dev/null @@ -1,261 +0,0 @@ -<?php -/** - * PEAR_XMLParser - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @author Stephan Schmidt (original XML_Unserializer code) - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: XMLParser.php,v 1.13 2008/01/03 20:26:36 cellog Exp $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.4.0a1 - */ - -/** - * Parser for any xml file - * @category pear - * @package PEAR - * @author Greg Beaver <cellog@php.net> - * @author Stephan Schmidt (original XML_Unserializer code) - * @copyright 1997-2008 The PHP Group - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version Release: 1.7.2 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.4.0a1 - */ -class PEAR_XMLParser -{ - /** - * unserilialized data - * @var string $_serializedData - */ - var $_unserializedData = null; - - /** - * name of the root tag - * @var string $_root - */ - var $_root = null; - - /** - * stack for all data that is found - * @var array $_dataStack - */ - var $_dataStack = array(); - - /** - * stack for all values that are generated - * @var array $_valStack - */ - var $_valStack = array(); - - /** - * current tag depth - * @var int $_depth - */ - var $_depth = 0; - - /** - * @return array - */ - function getData() - { - return $this->_unserializedData; - } - - /** - * @param string xml content - * @return true|PEAR_Error - */ - function parse($data) - { - if (!extension_loaded('xml')) { - include_once 'PEAR.php'; - return PEAR::raiseError("XML Extension not found", 1); - } - $this->_valStack = array(); - $this->_dataStack = array(); - $this->_depth = 0; - - if (version_compare(phpversion(), '5.0.0', 'lt')) { - if (strpos($data, 'encoding="UTF-8"')) { - $data = utf8_decode($data); - } - $xp = xml_parser_create('ISO-8859-1'); - } else { - if (strpos($data, 'encoding="UTF-8"')) { - $xp = xml_parser_create('UTF-8'); - } else { - $xp = xml_parser_create('ISO-8859-1'); - } - } - xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, 0); - xml_set_object($xp, $this); - xml_set_element_handler($xp, 'startHandler', 'endHandler'); - xml_set_character_data_handler($xp, 'cdataHandler'); - if (!xml_parse($xp, $data)) { - $msg = xml_error_string(xml_get_error_code($xp)); - $line = xml_get_current_line_number($xp); - xml_parser_free($xp); - include_once 'PEAR.php'; - return PEAR::raiseError("XML Error: '$msg' on line '$line'", 2); - } - xml_parser_free($xp); - return true; - } - - /** - * Start element handler for XML parser - * - * @access private - * @param object $parser XML parser object - * @param string $element XML element - * @param array $attribs attributes of XML tag - * @return void - */ - function startHandler($parser, $element, $attribs) - { - $type = 'string'; - - $this->_depth++; - $this->_dataStack[$this->_depth] = null; - - $val = array( - 'name' => $element, - 'value' => null, - 'type' => $type, - 'childrenKeys' => array(), - 'aggregKeys' => array() - ); - - if (count($attribs) > 0) { - $val['children'] = array(); - $val['type'] = 'array'; - - $val['children']['attribs'] = $attribs; - - } - - array_push($this->_valStack, $val); - } - - /** - * post-process data - * - * @param string $data - * @param string $element element name - */ - function postProcess($data, $element) - { - return trim($data); - } - - /** - * End element handler for XML parser - * - * @access private - * @param object XML parser object - * @param string - * @return void - */ - function endHandler($parser, $element) - { - $value = array_pop($this->_valStack); - $data = $this->postProcess($this->_dataStack[$this->_depth], $element); - - // adjust type of the value - switch(strtolower($value['type'])) { - - /* - * unserialize an array - */ - case 'array': - if ($data !== '') { - $value['children']['_content'] = $data; - } - if (isset($value['children'])) { - $value['value'] = $value['children']; - } else { - $value['value'] = array(); - } - break; - - /* - * unserialize a null value - */ - case 'null': - $data = null; - break; - - /* - * unserialize any scalar value - */ - default: - settype($data, $value['type']); - $value['value'] = $data; - break; - } - $parent = array_pop($this->_valStack); - if ($parent === null) { - $this->_unserializedData = &$value['value']; - $this->_root = &$value['name']; - return true; - } else { - // parent has to be an array - if (!isset($parent['children']) || !is_array($parent['children'])) { - $parent['children'] = array(); - if ($parent['type'] != 'array') { - $parent['type'] = 'array'; - } - } - - if (!empty($value['name'])) { - // there already has been a tag with this name - if (in_array($value['name'], $parent['childrenKeys'])) { - // no aggregate has been created for this tag - if (!in_array($value['name'], $parent['aggregKeys'])) { - if (isset($parent['children'][$value['name']])) { - $parent['children'][$value['name']] = array($parent['children'][$value['name']]); - } else { - $parent['children'][$value['name']] = array(); - } - array_push($parent['aggregKeys'], $value['name']); - } - array_push($parent['children'][$value['name']], $value['value']); - } else { - $parent['children'][$value['name']] = &$value['value']; - array_push($parent['childrenKeys'], $value['name']); - } - } else { - array_push($parent['children'],$value['value']); - } - array_push($this->_valStack, $parent); - } - - $this->_depth--; - } - - /** - * Handler for character data - * - * @access private - * @param object XML parser object - * @param string CDATA - * @return void - */ - function cdataHandler($parser, $cdata) - { - $this->_dataStack[$this->_depth] .= $cdata; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PHPMailer/extras/EasyPeasyICS.php b/src/vitis/vas/rest/class/PHPMailer/extras/EasyPeasyICS.php deleted file mode 100755 index d8bfcfae65957cfd3015494bd5c3a3ca22219f6a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/extras/EasyPeasyICS.php +++ /dev/null @@ -1,148 +0,0 @@ -<?php -/** - * EasyPeasyICS Simple ICS/vCal data generator. - * @author Marcus Bointon <phpmailer@synchromedia.co.uk> - * @author Manuel Reinhard <manu@sprain.ch> - * - * Built with inspiration from - * http://stackoverflow.com/questions/1463480/how-can-i-use-php-to-dynamically-publish-an-ical-file-to-be-read-by-google-calend/1464355#1464355 - * History: - * 2010/12/17 - Manuel Reinhard - when it all started - * 2014 PHPMailer project becomes maintainer - */ - -/** - * Class EasyPeasyICS. - * Simple ICS data generator - * @package phpmailer - * @subpackage easypeasyics - */ -class EasyPeasyICS -{ - /** - * The name of the calendar - * @var string - */ - protected $calendarName; - /** - * The array of events to add to this calendar - * @var array - */ - protected $events = array(); - - /** - * Constructor - * @param string $calendarName - */ - public function __construct($calendarName = "") - { - $this->calendarName = $calendarName; - } - - /** - * Add an event to this calendar. - * @param string $start The start date and time as a unix timestamp - * @param string $end The end date and time as a unix timestamp - * @param string $summary A summary or title for the event - * @param string $description A description of the event - * @param string $url A URL for the event - * @param string $uid A unique identifier for the event - generated automatically if not provided - * @return array An array of event details, including any generated UID - */ - public function addEvent($start, $end, $summary = '', $description = '', $url = '', $uid = '') - { - if (empty($uid)) { - $uid = md5(uniqid(mt_rand(), true)) . '@EasyPeasyICS'; - } - $event = array( - 'start' => gmdate('Ymd', $start) . 'T' . gmdate('His', $start) . 'Z', - 'end' => gmdate('Ymd', $end) . 'T' . gmdate('His', $end) . 'Z', - 'summary' => $summary, - 'description' => $description, - 'url' => $url, - 'uid' => $uid - ); - $this->events[] = $event; - return $event; - } - - /** - * @return array Get the array of events. - */ - public function getEvents() - { - return $this->events; - } - - /** - * Clear all events. - */ - public function clearEvents() - { - $this->events = array(); - } - - /** - * Get the name of the calendar. - * @return string - */ - public function getName() - { - return $this->calendarName; - } - - /** - * Set the name of the calendar. - * @param $name - */ - public function setName($name) - { - $this->calendarName = $name; - } - - /** - * Render and optionally output a vcal string. - * @param bool $output Whether to output the calendar data directly (the default). - * @return string The complete rendered vlal - */ - public function render($output = true) - { - //Add header - $ics = 'BEGIN:VCALENDAR -METHOD:PUBLISH -VERSION:2.0 -X-WR-CALNAME:' . $this->calendarName . ' -PRODID:-//hacksw/handcal//NONSGML v1.0//EN'; - - //Add events - foreach ($this->events as $event) { - $ics .= ' -BEGIN:VEVENT -UID:' . $event['uid'] . ' -DTSTAMP:' . gmdate('Ymd') . 'T' . gmdate('His') . 'Z -DTSTART:' . $event['start'] . ' -DTEND:' . $event['end'] . ' -SUMMARY:' . str_replace("\n", "\\n", $event['summary']) . ' -DESCRIPTION:' . str_replace("\n", "\\n", $event['description']) . ' -URL;VALUE=URI:' . $event['url'] . ' -END:VEVENT'; - } - - //Add footer - $ics .= ' -END:VCALENDAR'; - - if ($output) { - //Output - $filename = $this->calendarName; - //Filename needs quoting if it contains spaces - if (strpos($filename, ' ') !== false) { - $filename = '"'.$filename.'"'; - } - header('Content-type: text/calendar; charset=utf-8'); - header('Content-Disposition: inline; filename=' . $filename . '.ics'); - echo $ics; - } - return $ics; - } -} diff --git a/src/vitis/vas/rest/class/PHPMailer/extras/README.md b/src/vitis/vas/rest/class/PHPMailer/extras/README.md deleted file mode 100755 index dac79e05fad5fdef31371fbbe9e7a7af0f2cf950..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/extras/README.md +++ /dev/null @@ -1,17 +0,0 @@ -#PHPMailer Extras - -These classes provide optional additional functions to PHPMailer. - -These are not loaded by the PHPMailer autoloader, so in some cases you may need to `require` them yourself before using them. - -##EasyPeasyICS - -This class was originally written by Manuel Reinhard and provides a simple means of generating ICS/vCal files that are used in sending calendar events. PHPMailer does not use it directly, but you can use it to generate content appropriate for placing in the `Ical` property of PHPMailer. The PHPMailer project is now its official home as Manuel has given permission for that and is no longer maintaining it himself. - -##htmlfilter - -This class by Konstantin Riabitsev and Jim Jagielski implements HTML filtering to remove potentially malicious tags, such as `<script>` or `onclick=` attributes that can result in XSS attacks. This is a simple filter and is not as comprehensive as [HTMLawed](http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/) or [HTMLPurifier](http://htmlpurifier.org), but it's easier to use and considerably better than nothing! PHPMailer does not use it directly, but you may want to apply it to user-supplied HTML before using it as a message body. - -##NTLM_SASL_client - -This class by Manuel Lemos (bundled with permission) adds the ability to authenticate with Microsoft Windows mail servers that use NTLM-based authentication. It is used by PHPMailer if you send via SMTP and set the `AuthType` property to `NTLM`; you will also need to use the `Realm` and `Workstation` properties. The original source is [here](http://www.phpclasses.org/browse/file/7495.html). diff --git a/src/vitis/vas/rest/class/PHPMailer/extras/htmlfilter.php b/src/vitis/vas/rest/class/PHPMailer/extras/htmlfilter.php deleted file mode 100755 index 0c55ddb756bedb4e802d6ca104418934da998825..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/extras/htmlfilter.php +++ /dev/null @@ -1,1159 +0,0 @@ -<?php -/** - * htmlfilter.inc - * --------------- - * This set of functions allows you to filter html in order to remove - * any malicious tags from it. Useful in cases when you need to filter - * user input for any cross-site-scripting attempts. - * - * Copyright (C) 2002-2004 by Duke University - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * @Author Konstantin Riabitsev <icon@linux.duke.edu> - * @Author Jim Jagielski <jim@jaguNET.com / jimjag@gmail.com> - * @Version 1.1 ($Date$) - */ - -/** - * This function returns the final tag out of the tag name, an array - * of attributes, and the type of the tag. This function is called by - * tln_sanitize internally. - * - * @param string $tagname the name of the tag. - * @param array $attary the array of attributes and their values - * @param integer $tagtype The type of the tag (see in comments). - * @return string A string with the final tag representation. - */ -function tln_tagprint($tagname, $attary, $tagtype) -{ - if ($tagtype == 2) { - $fulltag = '</' . $tagname . '>'; - } else { - $fulltag = '<' . $tagname; - if (is_array($attary) && sizeof($attary)) { - $atts = array(); - foreach($attary as $attname => $attvalue) { - array_push($atts, "$attname=$attvalue"); - } - $fulltag .= ' ' . join(' ', $atts); - } - if ($tagtype == 3) { - $fulltag .= ' /'; - } - $fulltag .= '>'; - } - return $fulltag; -} - -/** - * A small helper function to use with array_walk. Modifies a by-ref - * value and makes it lowercase. - * - * @param string $val a value passed by-ref. - * @return void since it modifies a by-ref value. - */ -function tln_casenormalize(&$val) -{ - $val = strtolower($val); -} - -/** - * This function skips any whitespace from the current position within - * a string and to the next non-whitespace value. - * - * @param string $body the string - * @param integer $offset the offset within the string where we should start - * looking for the next non-whitespace character. - * @return integer the location within the $body where the next - * non-whitespace char is located. - */ -function tln_skipspace($body, $offset) -{ - preg_match('/^(\s*)/s', substr($body, $offset), $matches); - if (sizeof($matches[1])) { - $count = strlen($matches[1]); - $offset += $count; - } - return $offset; -} - -/** - * This function looks for the next character within a string. It's - * really just a glorified "strpos", except it catches the failures - * nicely. - * - * @param string $body The string to look for needle in. - * @param integer $offset Start looking from this position. - * @param string $needle The character/string to look for. - * @return integer location of the next occurrence of the needle, or - * strlen($body) if needle wasn't found. - */ -function tln_findnxstr($body, $offset, $needle) -{ - $pos = strpos($body, $needle, $offset); - if ($pos === false) { - $pos = strlen($body); - } - return $pos; -} - -/** - * This function takes a PCRE-style regexp and tries to match it - * within the string. - * - * @param string $body The string to look for needle in. - * @param integer $offset Start looking from here. - * @param string $reg A PCRE-style regex to match. - * @return array|boolean Returns a false if no matches found, or an array - * with the following members: - * - integer with the location of the match within $body - * - string with whatever content between offset and the match - * - string with whatever it is we matched - */ -function tln_findnxreg($body, $offset, $reg) -{ - $matches = array(); - $retarr = array(); - $preg_rule = '%^(.*?)(' . $reg . ')%s'; - preg_match($preg_rule, substr($body, $offset), $matches); - if (!isset($matches[0]) || !$matches[0]) { - $retarr = false; - } else { - $retarr[0] = $offset + strlen($matches[1]); - $retarr[1] = $matches[1]; - $retarr[2] = $matches[2]; - } - return $retarr; -} - -/** - * This function looks for the next tag. - * - * @param string $body String where to look for the next tag. - * @param integer $offset Start looking from here. - * @return array|boolean false if no more tags exist in the body, or - * an array with the following members: - * - string with the name of the tag - * - array with attributes and their values - * - integer with tag type (1, 2, or 3) - * - integer where the tag starts (starting "<") - * - integer where the tag ends (ending ">") - * first three members will be false, if the tag is invalid. - */ -function tln_getnxtag($body, $offset) -{ - if ($offset > strlen($body)) { - return false; - } - $lt = tln_findnxstr($body, $offset, '<'); - if ($lt == strlen($body)) { - return false; - } - /** - * We are here: - * blah blah <tag attribute="value"> - * \---------^ - */ - $pos = tln_skipspace($body, $lt + 1); - if ($pos >= strlen($body)) { - return array(false, false, false, $lt, strlen($body)); - } - /** - * There are 3 kinds of tags: - * 1. Opening tag, e.g.: - * <a href="blah"> - * 2. Closing tag, e.g.: - * </a> - * 3. XHTML-style content-less tag, e.g.: - * <img src="blah"/> - */ - switch (substr($body, $pos, 1)) { - case '/': - $tagtype = 2; - $pos++; - break; - case '!': - /** - * A comment or an SGML declaration. - */ - if (substr($body, $pos + 1, 2) == '--') { - $gt = strpos($body, '-->', $pos); - if ($gt === false) { - $gt = strlen($body); - } else { - $gt += 2; - } - return array(false, false, false, $lt, $gt); - } else { - $gt = tln_findnxstr($body, $pos, '>'); - return array(false, false, false, $lt, $gt); - } - break; - default: - /** - * Assume tagtype 1 for now. If it's type 3, we'll switch values - * later. - */ - $tagtype = 1; - break; - } - - /** - * Look for next [\W-_], which will indicate the end of the tag name. - */ - $regary = tln_findnxreg($body, $pos, '[^\w\-_]'); - if ($regary == false) { - return array(false, false, false, $lt, strlen($body)); - } - list($pos, $tagname, $match) = $regary; - $tagname = strtolower($tagname); - - /** - * $match can be either of these: - * '>' indicating the end of the tag entirely. - * '\s' indicating the end of the tag name. - * '/' indicating that this is type-3 xhtml tag. - * - * Whatever else we find there indicates an invalid tag. - */ - switch ($match) { - case '/': - /** - * This is an xhtml-style tag with a closing / at the - * end, like so: <img src="blah"/>. Check if it's followed - * by the closing bracket. If not, then this tag is invalid - */ - if (substr($body, $pos, 2) == '/>') { - $pos++; - $tagtype = 3; - } else { - $gt = tln_findnxstr($body, $pos, '>'); - $retary = array(false, false, false, $lt, $gt); - return $retary; - } - //intentional fall-through - case '>': - return array($tagname, false, $tagtype, $lt, $pos); - break; - default: - /** - * Check if it's whitespace - */ - if (!preg_match('/\s/', $match)) { - /** - * This is an invalid tag! Look for the next closing ">". - */ - $gt = tln_findnxstr($body, $lt, '>'); - return array(false, false, false, $lt, $gt); - } - break; - } - - /** - * At this point we're here: - * <tagname attribute='blah'> - * \-------^ - * - * At this point we loop in order to find all attributes. - */ - $attary = array(); - - while ($pos <= strlen($body)) { - $pos = tln_skipspace($body, $pos); - if ($pos == strlen($body)) { - /** - * Non-closed tag. - */ - return array(false, false, false, $lt, $pos); - } - /** - * See if we arrived at a ">" or "/>", which means that we reached - * the end of the tag. - */ - $matches = array(); - if (preg_match('%^(\s*)(>|/>)%s', substr($body, $pos), $matches)) { - /** - * Yep. So we did. - */ - $pos += strlen($matches[1]); - if ($matches[2] == '/>') { - $tagtype = 3; - $pos++; - } - return array($tagname, $attary, $tagtype, $lt, $pos); - } - - /** - * There are several types of attributes, with optional - * [:space:] between members. - * Type 1: - * attrname[:space:]=[:space:]'CDATA' - * Type 2: - * attrname[:space:]=[:space:]"CDATA" - * Type 3: - * attr[:space:]=[:space:]CDATA - * Type 4: - * attrname - * - * We leave types 1 and 2 the same, type 3 we check for - * '"' and convert to """ if needed, then wrap in - * double quotes. Type 4 we convert into: - * attrname="yes". - */ - $regary = tln_findnxreg($body, $pos, '[^\w\-_]'); - if ($regary == false) { - /** - * Looks like body ended before the end of tag. - */ - return array(false, false, false, $lt, strlen($body)); - } - list($pos, $attname, $match) = $regary; - $attname = strtolower($attname); - /** - * We arrived at the end of attribute name. Several things possible - * here: - * '>' means the end of the tag and this is attribute type 4 - * '/' if followed by '>' means the same thing as above - * '\s' means a lot of things -- look what it's followed by. - * anything else means the attribute is invalid. - */ - switch ($match) { - case '/': - /** - * This is an xhtml-style tag with a closing / at the - * end, like so: <img src="blah"/>. Check if it's followed - * by the closing bracket. If not, then this tag is invalid - */ - if (substr($body, $pos, 2) == '/>') { - $pos++; - $tagtype = 3; - } else { - $gt = tln_findnxstr($body, $pos, '>'); - $retary = array(false, false, false, $lt, $gt); - return $retary; - } - //intentional fall-through - case '>': - $attary{$attname} = '"yes"'; - return array($tagname, $attary, $tagtype, $lt, $pos); - break; - default: - /** - * Skip whitespace and see what we arrive at. - */ - $pos = tln_skipspace($body, $pos); - $char = substr($body, $pos, 1); - /** - * Two things are valid here: - * '=' means this is attribute type 1 2 or 3. - * \w means this was attribute type 4. - * anything else we ignore and re-loop. End of tag and - * invalid stuff will be caught by our checks at the beginning - * of the loop. - */ - if ($char == '=') { - $pos++; - $pos = tln_skipspace($body, $pos); - /** - * Here are 3 possibilities: - * "'" attribute type 1 - * '"' attribute type 2 - * everything else is the content of tag type 3 - */ - $quot = substr($body, $pos, 1); - if ($quot == '\'') { - $regary = tln_findnxreg($body, $pos + 1, '\''); - if ($regary == false) { - return array(false, false, false, $lt, strlen($body)); - } - list($pos, $attval, $match) = $regary; - $pos++; - $attary{$attname} = '\'' . $attval . '\''; - } elseif ($quot == '"') { - $regary = tln_findnxreg($body, $pos + 1, '\"'); - if ($regary == false) { - return array(false, false, false, $lt, strlen($body)); - } - list($pos, $attval, $match) = $regary; - $pos++; - $attary{$attname} = '"' . $attval . '"'; - } else { - /** - * These are hateful. Look for \s, or >. - */ - $regary = tln_findnxreg($body, $pos, '[\s>]'); - if ($regary == false) { - return array(false, false, false, $lt, strlen($body)); - } - list($pos, $attval, $match) = $regary; - /** - * If it's ">" it will be caught at the top. - */ - $attval = preg_replace('/\"/s', '"', $attval); - $attary{$attname} = '"' . $attval . '"'; - } - } elseif (preg_match('|[\w/>]|', $char)) { - /** - * That was attribute type 4. - */ - $attary{$attname} = '"yes"'; - } else { - /** - * An illegal character. Find next '>' and return. - */ - $gt = tln_findnxstr($body, $pos, '>'); - return array(false, false, false, $lt, $gt); - } - break; - } - } - /** - * The fact that we got here indicates that the tag end was never - * found. Return invalid tag indication so it gets stripped. - */ - return array(false, false, false, $lt, strlen($body)); -} - -/** - * Translates entities into literal values so they can be checked. - * - * @param string $attvalue the by-ref value to check. - * @param string $regex the regular expression to check against. - * @param boolean $hex whether the entities are hexadecimal. - * @return boolean True or False depending on whether there were matches. - */ -function tln_deent(&$attvalue, $regex, $hex = false) -{ - preg_match_all($regex, $attvalue, $matches); - if (is_array($matches) && sizeof($matches[0]) > 0) { - $repl = array(); - for ($i = 0; $i < sizeof($matches[0]); $i++) { - $numval = $matches[1][$i]; - if ($hex) { - $numval = hexdec($numval); - } - $repl{$matches[0][$i]} = chr($numval); - } - $attvalue = strtr($attvalue, $repl); - return true; - } else { - return false; - } -} - -/** - * This function checks attribute values for entity-encoded values - * and returns them translated into 8-bit strings so we can run - * checks on them. - * - * @param string $attvalue A string to run entity check against. - */ -function tln_defang(&$attvalue) -{ - /** - * Skip this if there aren't ampersands or backslashes. - */ - if (strpos($attvalue, '&') === false - && strpos($attvalue, '\\') === false - ) { - return; - } - do { - $m = false; - $m = $m || tln_deent($attvalue, '/\�*(\d+);*/s'); - $m = $m || tln_deent($attvalue, '/\�*((\d|[a-f])+);*/si', true); - $m = $m || tln_deent($attvalue, '/\\\\(\d+)/s', true); - } while ($m == true); - $attvalue = stripslashes($attvalue); -} - -/** - * Kill any tabs, newlines, or carriage returns. Our friends the - * makers of the browser with 95% market value decided that it'd - * be funny to make "java[tab]script" be just as good as "javascript". - * - * @param string $attvalue The attribute value before extraneous spaces removed. - */ -function tln_unspace(&$attvalue) -{ - if (strcspn($attvalue, "\t\r\n\0 ") != strlen($attvalue)) { - $attvalue = str_replace( - array("\t", "\r", "\n", "\0", " "), - array('', '', '', '', ''), - $attvalue - ); - } -} - -/** - * This function runs various checks against the attributes. - * - * @param string $tagname String with the name of the tag. - * @param array $attary Array with all tag attributes. - * @param array $rm_attnames See description for tln_sanitize - * @param array $bad_attvals See description for tln_sanitize - * @param array $add_attr_to_tag See description for tln_sanitize - * @param string $trans_image_path - * @param boolean $block_external_images - * @return array with modified attributes. - */ -function tln_fixatts( - $tagname, - $attary, - $rm_attnames, - $bad_attvals, - $add_attr_to_tag, - $trans_image_path, - $block_external_images -) { - foreach($attary as $attname => $attvalue) { - /** - * See if this attribute should be removed. - */ - foreach ($rm_attnames as $matchtag => $matchattrs) { - if (preg_match($matchtag, $tagname)) { - foreach ($matchattrs as $matchattr) { - if (preg_match($matchattr, $attname)) { - unset($attary{$attname}); - continue; - } - } - } - } - /** - * Remove any backslashes, entities, or extraneous whitespace. - */ - $oldattvalue = $attvalue; - tln_defang($attvalue); - if ($attname == 'style' && $attvalue !== $oldattvalue) { - $attvalue = "idiocy"; - $attary{$attname} = $attvalue; - } - tln_unspace($attvalue); - - /** - * Now let's run checks on the attvalues. - * I don't expect anyone to comprehend this. If you do, - * get in touch with me so I can drive to where you live and - * shake your hand personally. :) - */ - foreach ($bad_attvals as $matchtag => $matchattrs) { - if (preg_match($matchtag, $tagname)) { - foreach ($matchattrs as $matchattr => $valary) { - if (preg_match($matchattr, $attname)) { - /** - * There are two arrays in valary. - * First is matches. - * Second one is replacements - */ - list($valmatch, $valrepl) = $valary; - $newvalue = preg_replace($valmatch, $valrepl, $attvalue); - if ($newvalue != $attvalue) { - $attary{$attname} = $newvalue; - $attvalue = $newvalue; - } - } - } - } - } - if ($attname == 'style') { - if (preg_match('/[\0-\37\200-\377]+/', $attvalue)) { - $attary{$attname} = '"disallowed character"'; - } - preg_match_all("/url\s*\((.+)\)/si", $attvalue, $aMatch); - if (count($aMatch)) { - foreach($aMatch[1] as $sMatch) { - $urlvalue = $sMatch; - tln_fixurl($attname, $urlvalue, $trans_image_path, $block_external_images); - $attary{$attname} = str_replace($sMatch, $urlvalue, $attvalue); - } - } - } - } - /** - * See if we need to append any attributes to this tag. - */ - foreach ($add_attr_to_tag as $matchtag => $addattary) { - if (preg_match($matchtag, $tagname)) { - $attary = array_merge($attary, $addattary); - } - } - return $attary; -} - -function tln_fixurl($attname, &$attvalue, $trans_image_path, $block_external_images) -{ - $sQuote = '"'; - $attvalue = trim($attvalue); - if ($attvalue && ($attvalue[0] =='"'|| $attvalue[0] == "'")) { - // remove the double quotes - $sQuote = $attvalue[0]; - $attvalue = trim(substr($attvalue,1,-1)); - } - - /** - * Replace empty src tags with the blank image. src is only used - * for frames, images, and image inputs. Doing a replace should - * not affect them working as should be, however it will stop - * IE from being kicked off when src for img tags are not set - */ - if ($attvalue == '') { - $attvalue = $sQuote . $trans_image_path . $sQuote; - } else { - // first, disallow 8 bit characters and control characters - if (preg_match('/[\0-\37\200-\377]+/',$attvalue)) { - switch ($attname) { - case 'href': - $attvalue = $sQuote . 'http://invalid-stuff-detected.example.com' . $sQuote; - break; - default: - $attvalue = $sQuote . $trans_image_path . $sQuote; - break; - } - } else { - $aUrl = parse_url($attvalue); - if (isset($aUrl['scheme'])) { - switch(strtolower($aUrl['scheme'])) { - case 'mailto': - case 'http': - case 'https': - case 'ftp': - if ($attname != 'href') { - if ($block_external_images == true) { - $attvalue = $sQuote . $trans_image_path . $sQuote; - } else { - if (!isset($aUrl['path'])) { - $attvalue = $sQuote . $trans_image_path . $sQuote; - } - } - } else { - $attvalue = $sQuote . $attvalue . $sQuote; - } - break; - case 'outbind': - $attvalue = $sQuote . $attvalue . $sQuote; - break; - case 'cid': - $attvalue = $sQuote . $attvalue . $sQuote; - break; - default: - $attvalue = $sQuote . $trans_image_path . $sQuote; - break; - } - } else { - if (!isset($aUrl['path']) || $aUrl['path'] != $trans_image_path) { - $$attvalue = $sQuote . $trans_image_path . $sQuote; - } - } - } - } -} - -function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images) -{ - // workaround for </style> in between comments - $content = ''; - $sToken = ''; - $bSucces = false; - $bEndTag = false; - for ($i=$pos,$iCount=strlen($body);$i<$iCount;++$i) { - $char = $body{$i}; - switch ($char) { - case '<': - $sToken = $char; - break; - case '/': - if ($sToken == '<') { - $sToken .= $char; - $bEndTag = true; - } else { - $content .= $char; - } - break; - case '>': - if ($bEndTag) { - $sToken .= $char; - if (preg_match('/\<\/\s*style\s*\>/i',$sToken,$aMatch)) { - $newpos = $i + 1; - $bSucces = true; - break 2; - } else { - $content .= $sToken; - } - $bEndTag = false; - } else { - $content .= $char; - } - break; - case '!': - if ($sToken == '<') { - // possible comment - if (isset($body{$i+2}) && substr($body,$i,3) == '!--') { - $i = strpos($body,'-->',$i+3); - if ($i === false) { // no end comment - $i = strlen($body); - } - $sToken = ''; - } - } else { - $content .= $char; - } - break; - default: - if ($bEndTag) { - $sToken .= $char; - } else { - $content .= $char; - } - break; - } - } - if ($bSucces == FALSE){ - return array(FALSE, strlen($body)); - } - - - - /** - * First look for general BODY style declaration, which would be - * like so: - * body {background: blah-blah} - * and change it to .bodyclass so we can just assign it to a <div> - */ - $content = preg_replace("|body(\s*\{.*?\})|si", ".bodyclass\\1", $content); - - /** - * Fix url('blah') declarations. - */ - // $content = preg_replace("|url\s*\(\s*([\'\"])\s*\S+script\s*:.*?([\'\"])\s*\)|si", - // "url(\\1$trans_image_path\\2)", $content); - - // first check for 8bit sequences and disallowed control characters - if (preg_match('/[\16-\37\200-\377]+/',$content)) { - $content = '<!-- style block removed by html filter due to presence of 8bit characters -->'; - return array($content, $newpos); - } - - // remove @import line - $content = preg_replace("/^\s*(@import.*)$/mi","\n<!-- @import rules forbidden -->\n",$content); - - $content = preg_replace("/(\\\\)?u(\\\\)?r(\\\\)?l(\\\\)?/i", 'url', $content); - preg_match_all("/url\s*\((.+)\)/si",$content,$aMatch); - if (count($aMatch)) { - $aValue = $aReplace = array(); - foreach($aMatch[1] as $sMatch) { - // url value - $urlvalue = $sMatch; - tln_fixurl('style',$urlvalue, $trans_image_path, $block_external_images); - $aValue[] = $sMatch; - $aReplace[] = $urlvalue; - } - $content = str_replace($aValue,$aReplace,$content); - } - - /** - * Remove any backslashes, entities, and extraneous whitespace. - */ - $contentTemp = $content; - tln_defang($contentTemp); - tln_unspace($contentTemp); - - $match = array('/\/\*.*\*\//', - '/expression/i', - '/behaviou*r/i', - '/binding/i', - '/include-source/i', - '/javascript/i', - '/script/i', - '/position/i'); - $replace = array('','idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', ''); - $contentNew = preg_replace($match, $replace, $contentTemp); - if ($contentNew !== $contentTemp) { - $content = $contentNew; - } - return array($content, $newpos); -} - -function tln_body2div($attary, $trans_image_path) -{ - $divattary = array('class' => "'bodyclass'"); - $text = '#000000'; - $has_bgc_stl = $has_txt_stl = false; - $styledef = ''; - if (is_array($attary) && sizeof($attary) > 0){ - foreach ($attary as $attname=>$attvalue){ - $quotchar = substr($attvalue, 0, 1); - $attvalue = str_replace($quotchar, "", $attvalue); - switch ($attname){ - case 'background': - $styledef .= "background-image: url('$trans_image_path'); "; - break; - case 'bgcolor': - $has_bgc_stl = true; - $styledef .= "background-color: $attvalue; "; - break; - case 'text': - $has_txt_stl = true; - $styledef .= "color: $attvalue; "; - break; - } - } - // Outlook defines a white bgcolor and no text color. This can lead to - // white text on a white bg with certain themes. - if ($has_bgc_stl && !$has_txt_stl) { - $styledef .= "color: $text; "; - } - if (strlen($styledef) > 0){ - $divattary{"style"} = "\"$styledef\""; - } - } - return $divattary; -} - -/** - * - * @param string $body The HTML you wish to filter - * @param array $tag_list see description above - * @param array $rm_tags_with_content see description above - * @param array $self_closing_tags see description above - * @param boolean $force_tag_closing see description above - * @param array $rm_attnames see description above - * @param array $bad_attvals see description above - * @param array $add_attr_to_tag see description above - * @param string $trans_image_path - * @param boolean $block_external_images - - * @return string Sanitized html safe to show on your pages. - */ -function tln_sanitize( - $body, - $tag_list, - $rm_tags_with_content, - $self_closing_tags, - $force_tag_closing, - $rm_attnames, - $bad_attvals, - $add_attr_to_tag, - $trans_image_path, - $block_external_images -) { - /** - * Normalize rm_tags and rm_tags_with_content. - */ - $rm_tags = array_shift($tag_list); - @array_walk($tag_list, 'tln_casenormalize'); - @array_walk($rm_tags_with_content, 'tln_casenormalize'); - @array_walk($self_closing_tags, 'tln_casenormalize'); - /** - * See if tag_list is of tags to remove or tags to allow. - * false means remove these tags - * true means allow these tags - */ - $curpos = 0; - $open_tags = array(); - $trusted = "<!-- begin tln_sanitized html -->\n"; - $skip_content = false; - /** - * Take care of netscape's stupid javascript entities like - * &{alert('boo')}; - */ - $body = preg_replace('/&(\{.*?\};)/si', '&\\1', $body); - while (($curtag = tln_getnxtag($body, $curpos)) != false) { - list($tagname, $attary, $tagtype, $lt, $gt) = $curtag; - $free_content = substr($body, $curpos, $lt-$curpos); - /** - * Take care of <style> - */ - if ($tagname == "style" && $tagtype == 1){ - list($free_content, $curpos) = - tln_fixstyle($body, $gt+1, $trans_image_path, $block_external_images); - if ($free_content != FALSE){ - if ( !empty($attary) ) { - $attary = tln_fixatts($tagname, - $attary, - $rm_attnames, - $bad_attvals, - $add_attr_to_tag, - $trans_image_path, - $block_external_images - ); - } - $trusted .= tln_tagprint($tagname, $attary, $tagtype); - $trusted .= $free_content; - $trusted .= tln_tagprint($tagname, null, 2); - } - continue; - } - if ($skip_content == false){ - $trusted .= $free_content; - } - if ($tagname != false) { - if ($tagtype == 2) { - if ($skip_content == $tagname) { - /** - * Got to the end of tag we needed to remove. - */ - $tagname = false; - $skip_content = false; - } else { - if ($skip_content == false) { - if ($tagname == "body") { - $tagname = "div"; - } - if (isset($open_tags{$tagname}) && - $open_tags{$tagname} > 0 - ) { - $open_tags{$tagname}--; - } else { - $tagname = false; - } - } - } - } else { - /** - * $rm_tags_with_content - */ - if ($skip_content == false) { - /** - * See if this is a self-closing type and change - * tagtype appropriately. - */ - if ($tagtype == 1 - && in_array($tagname, $self_closing_tags) - ) { - $tagtype = 3; - } - /** - * See if we should skip this tag and any content - * inside it. - */ - if ($tagtype == 1 - && in_array($tagname, $rm_tags_with_content) - ) { - $skip_content = $tagname; - } else { - if (($rm_tags == false - && in_array($tagname, $tag_list)) || - ($rm_tags == true - && !in_array($tagname, $tag_list)) - ) { - $tagname = false; - } else { - /** - * Convert body into div. - */ - if ($tagname == "body"){ - $tagname = "div"; - $attary = tln_body2div($attary, $trans_image_path); - } - if ($tagtype == 1) { - if (isset($open_tags{$tagname})) { - $open_tags{$tagname}++; - } else { - $open_tags{$tagname} = 1; - } - } - /** - * This is where we run other checks. - */ - if (is_array($attary) && sizeof($attary) > 0) { - $attary = tln_fixatts( - $tagname, - $attary, - $rm_attnames, - $bad_attvals, - $add_attr_to_tag, - $trans_image_path, - $block_external_images - ); - } - } - } - } - } - if ($tagname != false && $skip_content == false) { - $trusted .= tln_tagprint($tagname, $attary, $tagtype); - } - } - $curpos = $gt + 1; - } - $trusted .= substr($body, $curpos, strlen($body) - $curpos); - if ($force_tag_closing == true) { - foreach ($open_tags as $tagname => $opentimes) { - while ($opentimes > 0) { - $trusted .= '</' . $tagname . '>'; - $opentimes--; - } - } - $trusted .= "\n"; - } - $trusted .= "<!-- end tln_sanitized html -->\n"; - return $trusted; -} - -// -// Use the nifty htmlfilter library -// - - -function HTMLFilter($body, $trans_image_path, $block_external_images = false) -{ - - $tag_list = array( - false, - "object", - "meta", - "html", - "head", - "base", - "link", - "frame", - "iframe", - "plaintext", - "marquee" - ); - - $rm_tags_with_content = array( - "script", - "applet", - "embed", - "title", - "frameset", - "xmp", - "xml" - ); - - $self_closing_tags = array( - "img", - "br", - "hr", - "input", - "outbind" - ); - - $force_tag_closing = true; - - $rm_attnames = array( - "/.*/" => - array( - // "/target/i", - "/^on.*/i", - "/^dynsrc/i", - "/^data.*/i", - "/^lowsrc.*/i" - ) - ); - - $bad_attvals = array( - "/.*/" => - array( - "/^src|background/i" => - array( - array( - '/^([\'"])\s*\S+script\s*:.*([\'"])/si', - '/^([\'"])\s*mocha\s*:*.*([\'"])/si', - '/^([\'"])\s*about\s*:.*([\'"])/si' - ), - array( - "\\1$trans_image_path\\2", - "\\1$trans_image_path\\2", - "\\1$trans_image_path\\2" - ) - ), - "/^href|action/i" => - array( - array( - '/^([\'"])\s*\S+script\s*:.*([\'"])/si', - '/^([\'"])\s*mocha\s*:*.*([\'"])/si', - '/^([\'"])\s*about\s*:.*([\'"])/si' - ), - array( - "\\1#\\1", - "\\1#\\1", - "\\1#\\1" - ) - ), - "/^style/i" => - array( - array( - "/\/\*.*\*\//", - "/expression/i", - "/binding/i", - "/behaviou*r/i", - "/include-source/i", - '/position\s*:/i', - '/(\\\\)?u(\\\\)?r(\\\\)?l(\\\\)?/i', - '/url\s*\(\s*([\'"])\s*\S+script\s*:.*([\'"])\s*\)/si', - '/url\s*\(\s*([\'"])\s*mocha\s*:.*([\'"])\s*\)/si', - '/url\s*\(\s*([\'"])\s*about\s*:.*([\'"])\s*\)/si', - '/(.*)\s*:\s*url\s*\(\s*([\'"]*)\s*\S+script\s*:.*([\'"]*)\s*\)/si' - ), - array( - "", - "idiocy", - "idiocy", - "idiocy", - "idiocy", - "idiocy", - "url", - "url(\\1#\\1)", - "url(\\1#\\1)", - "url(\\1#\\1)", - "\\1:url(\\2#\\3)" - ) - ) - ) - ); - - if ($block_external_images) { - array_push( - $bad_attvals{'/.*/'}{'/^src|background/i'}[0], - '/^([\'\"])\s*https*:.*([\'\"])/si' - ); - array_push( - $bad_attvals{'/.*/'}{'/^src|background/i'}[1], - "\\1$trans_image_path\\1" - ); - array_push( - $bad_attvals{'/.*/'}{'/^style/i'}[0], - '/url\(([\'\"])\s*https*:.*([\'\"])\)/si' - ); - array_push( - $bad_attvals{'/.*/'}{'/^style/i'}[1], - "url(\\1$trans_image_path\\1)" - ); - } - - $add_attr_to_tag = array( - "/^a$/i" => - array('target' => '"_blank"') - ); - - $trusted = tln_sanitize( - $body, - $tag_list, - $rm_tags_with_content, - $self_closing_tags, - $force_tag_closing, - $rm_attnames, - $bad_attvals, - $add_attr_to_tag, - $trans_image_path, - $block_external_images - ); - return $trusted; -} diff --git a/src/vitis/vas/rest/class/PHPMailer/extras/ntlm_sasl_client.php b/src/vitis/vas/rest/class/PHPMailer/extras/ntlm_sasl_client.php deleted file mode 100755 index 3fd539240f70fa0deb76754deb08cb3bcbd71e57..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/extras/ntlm_sasl_client.php +++ /dev/null @@ -1,185 +0,0 @@ -<?php -/* - * ntlm_sasl_client.php - * - * @(#) $Id: ntlm_sasl_client.php,v 1.3 2004/11/17 08:00:37 mlemos Exp $ - * - */ - -define("SASL_NTLM_STATE_START", 0); -define("SASL_NTLM_STATE_IDENTIFY_DOMAIN", 1); -define("SASL_NTLM_STATE_RESPOND_CHALLENGE", 2); -define("SASL_NTLM_STATE_DONE", 3); -define("SASL_FAIL", -1); -define("SASL_CONTINUE", 1); - -class ntlm_sasl_client_class -{ - public $credentials = array(); - public $state = SASL_NTLM_STATE_START; - - public function initialize(&$client) - { - if (!function_exists($function = "mcrypt_encrypt") - || !function_exists($function = "mhash") - ) { - $extensions = array( - "mcrypt_encrypt" => "mcrypt", - "mhash" => "mhash" - ); - $client->error = "the extension " . $extensions[$function] . - " required by the NTLM SASL client class is not available in this PHP configuration"; - return (0); - } - return (1); - } - - public function ASCIIToUnicode($ascii) - { - for ($unicode = "", $a = 0; $a < strlen($ascii); $a++) { - $unicode .= substr($ascii, $a, 1) . chr(0); - } - return ($unicode); - } - - public function typeMsg1($domain, $workstation) - { - $domain_length = strlen($domain); - $workstation_length = strlen($workstation); - $workstation_offset = 32; - $domain_offset = $workstation_offset + $workstation_length; - return ( - "NTLMSSP\0" . - "\x01\x00\x00\x00" . - "\x07\x32\x00\x00" . - pack("v", $domain_length) . - pack("v", $domain_length) . - pack("V", $domain_offset) . - pack("v", $workstation_length) . - pack("v", $workstation_length) . - pack("V", $workstation_offset) . - $workstation . - $domain - ); - } - - public function NTLMResponse($challenge, $password) - { - $unicode = $this->ASCIIToUnicode($password); - $md4 = mhash(MHASH_MD4, $unicode); - $padded = $md4 . str_repeat(chr(0), 21 - strlen($md4)); - $iv_size = mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB); - $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); - for ($response = "", $third = 0; $third < 21; $third += 7) { - for ($packed = "", $p = $third; $p < $third + 7; $p++) { - $packed .= str_pad(decbin(ord(substr($padded, $p, 1))), 8, "0", STR_PAD_LEFT); - } - for ($key = "", $p = 0; $p < strlen($packed); $p += 7) { - $s = substr($packed, $p, 7); - $b = $s . ((substr_count($s, "1") % 2) ? "0" : "1"); - $key .= chr(bindec($b)); - } - $ciphertext = mcrypt_encrypt(MCRYPT_DES, $key, $challenge, MCRYPT_MODE_ECB, $iv); - $response .= $ciphertext; - } - return $response; - } - - public function typeMsg3($ntlm_response, $user, $domain, $workstation) - { - $domain_unicode = $this->ASCIIToUnicode($domain); - $domain_length = strlen($domain_unicode); - $domain_offset = 64; - $user_unicode = $this->ASCIIToUnicode($user); - $user_length = strlen($user_unicode); - $user_offset = $domain_offset + $domain_length; - $workstation_unicode = $this->ASCIIToUnicode($workstation); - $workstation_length = strlen($workstation_unicode); - $workstation_offset = $user_offset + $user_length; - $lm = ""; - $lm_length = strlen($lm); - $lm_offset = $workstation_offset + $workstation_length; - $ntlm = $ntlm_response; - $ntlm_length = strlen($ntlm); - $ntlm_offset = $lm_offset + $lm_length; - $session = ""; - $session_length = strlen($session); - $session_offset = $ntlm_offset + $ntlm_length; - return ( - "NTLMSSP\0" . - "\x03\x00\x00\x00" . - pack("v", $lm_length) . - pack("v", $lm_length) . - pack("V", $lm_offset) . - pack("v", $ntlm_length) . - pack("v", $ntlm_length) . - pack("V", $ntlm_offset) . - pack("v", $domain_length) . - pack("v", $domain_length) . - pack("V", $domain_offset) . - pack("v", $user_length) . - pack("v", $user_length) . - pack("V", $user_offset) . - pack("v", $workstation_length) . - pack("v", $workstation_length) . - pack("V", $workstation_offset) . - pack("v", $session_length) . - pack("v", $session_length) . - pack("V", $session_offset) . - "\x01\x02\x00\x00" . - $domain_unicode . - $user_unicode . - $workstation_unicode . - $lm . - $ntlm - ); - } - - public function start(&$client, &$message, &$interactions) - { - if ($this->state != SASL_NTLM_STATE_START) { - $client->error = "NTLM authentication state is not at the start"; - return (SASL_FAIL); - } - $this->credentials = array( - "user" => "", - "password" => "", - "realm" => "", - "workstation" => "" - ); - $defaults = array(); - $status = $client->GetCredentials($this->credentials, $defaults, $interactions); - if ($status == SASL_CONTINUE) { - $this->state = SASL_NTLM_STATE_IDENTIFY_DOMAIN; - } - unset($message); - return ($status); - } - - public function step(&$client, $response, &$message, &$interactions) - { - switch ($this->state) { - case SASL_NTLM_STATE_IDENTIFY_DOMAIN: - $message = $this->typeMsg1($this->credentials["realm"], $this->credentials["workstation"]); - $this->state = SASL_NTLM_STATE_RESPOND_CHALLENGE; - break; - case SASL_NTLM_STATE_RESPOND_CHALLENGE: - $ntlm_response = $this->NTLMResponse(substr($response, 24, 8), $this->credentials["password"]); - $message = $this->typeMsg3( - $ntlm_response, - $this->credentials["user"], - $this->credentials["realm"], - $this->credentials["workstation"] - ); - $this->state = SASL_NTLM_STATE_DONE; - break; - case SASL_NTLM_STATE_DONE: - $client->error = "NTLM authentication was finished without success"; - return (SASL_FAIL); - default: - $client->error = "invalid NTLM authentication step state"; - return (SASL_FAIL); - } - return (SASL_CONTINUE); - } -} diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-am.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-am.php deleted file mode 100755 index ff2a969501f581d10fd4098cc904809277cf1ad6..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-am.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Armenian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Hrayr Grigoryan <hrayr@bits.am> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP -ի սխալ: չհաջողվեց ստուգել իսկությունը.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP -ի սխալ: չհաջողվեց կապ հաստատել SMTP սերվերի հետ.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP -ի սխալ: տվյալները ընդունված չեն.'; -$PHPMAILER_LANG['empty_message'] = 'Հաղորդագրությունը դատարկ է'; -$PHPMAILER_LANG['encoding'] = 'Կոդավորման անհայտ տեսակ: '; -$PHPMAILER_LANG['execute'] = 'Չհաջողվեց իրականացնել հրամանը: '; -$PHPMAILER_LANG['file_access'] = 'Ֆայլը հասանելի չէ: '; -$PHPMAILER_LANG['file_open'] = 'Ֆայլի սխալ: ֆայլը չհաջողվեց բացել: '; -$PHPMAILER_LANG['from_failed'] = 'Ուղարկողի հետևյալ հասցեն սխալ է: '; -$PHPMAILER_LANG['instantiate'] = 'Հնարավոր չէ կանչել mail ֆունկցիան.'; -$PHPMAILER_LANG['invalid_address'] = 'Հասցեն սխալ է: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' փոստային սերվերի հետ չի աշխատում.'; -$PHPMAILER_LANG['provide_address'] = 'Անհրաժեշտ է տրամադրել գոնե մեկ ստացողի e-mail հասցե.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP -ի սխալ: չի հաջողվել ուղարկել հետևյալ ստացողների հասցեներին: '; -$PHPMAILER_LANG['signing'] = 'Ստորագրման սխալ: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP -ի connect() ֆունկցիան չի հաջողվել'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP սերվերի սխալ: '; -$PHPMAILER_LANG['variable_set'] = 'Չի հաջողվում ստեղծել կամ վերափոխել փոփոխականը: '; -$PHPMAILER_LANG['extension_missing'] = 'Հավելվածը բացակայում է: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ar.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ar.php deleted file mode 100755 index 790e2a5ec81b86aaae05b2b543d717702b6e7fbe..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ar.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Arabic PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author bahjat al mostafa <bahjat983@hotmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'خطأ SMTP : لا يمكن تأكيد الهوية.'; -$PHPMAILER_LANG['connect_host'] = 'خطأ SMTP: لا يمكن الاتصال بالخادم SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'خطأ SMTP: لم يتم قبول المعلومات .'; -$PHPMAILER_LANG['empty_message'] = 'نص الرسالة فارغ'; -$PHPMAILER_LANG['encoding'] = 'ترميز غير معروف: '; -$PHPMAILER_LANG['execute'] = 'لا يمكن تنفيذ : '; -$PHPMAILER_LANG['file_access'] = 'لا يمكن الوصول للملف: '; -$PHPMAILER_LANG['file_open'] = 'خطأ في الملف: لا يمكن فتحه: '; -$PHPMAILER_LANG['from_failed'] = 'خطأ على مستوى عنوان المرسل : '; -$PHPMAILER_LANG['instantiate'] = 'لا يمكن توفير خدمة البريد.'; -$PHPMAILER_LANG['invalid_address'] = 'الإرسال غير ممكن لأن عنوان البريد الإلكتروني غير صالح: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' برنامج الإرسال غير مدعوم.'; -$PHPMAILER_LANG['provide_address'] = 'يجب توفير عنوان البريد الإلكتروني لمستلم واحد على الأقل.'; -$PHPMAILER_LANG['recipients_failed'] = 'خطأ SMTP: الأخطاء التالية ' . - 'فشل في الارسال لكل من : '; -$PHPMAILER_LANG['signing'] = 'خطأ في التوقيع: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() غير ممكن.'; -$PHPMAILER_LANG['smtp_error'] = 'خطأ على مستوى الخادم SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'لا يمكن تعيين أو إعادة تعيين متغير: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-az.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-az.php deleted file mode 100755 index 3749d83d603cb6c35e09c42428e043de4acb9e9c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-az.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Azerbaijani PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author @mirjalal - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP xətası: Giriş uğursuz oldu.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP xətası: SMTP serverinə qoşulma uğursuz oldu.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP xətası: Verilənlər qəbul edilməyib.'; -$PHPMAILER_LANG['empty_message'] = 'Boş mesaj göndərilə bilməz.'; -$PHPMAILER_LANG['encoding'] = 'Qeyri-müəyyən kodlaşdırma: '; -$PHPMAILER_LANG['execute'] = 'Əmr yerinə yetirilmədi: '; -$PHPMAILER_LANG['file_access'] = 'Fayla giriş yoxdur: '; -$PHPMAILER_LANG['file_open'] = 'Fayl xətası: Fayl açıla bilmədi: '; -$PHPMAILER_LANG['from_failed'] = 'Göstərilən poçtlara göndərmə uğursuz oldu: '; -$PHPMAILER_LANG['instantiate'] = 'Mail funksiyası işə salına bilmədi.'; -$PHPMAILER_LANG['invalid_address'] = 'Düzgün olmayan e-mail adresi: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' - e-mail kitabxanası dəstəklənmir.'; -$PHPMAILER_LANG['provide_address'] = 'Ən azı bir e-mail adresi daxil edilməlidir.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP xətası: Aşağıdakı ünvanlar üzrə alıcılara göndərmə uğursuzdur: '; -$PHPMAILER_LANG['signing'] = 'İmzalama xətası: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP serverinə qoşulma uğursuz oldu.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP serveri xətası: '; -$PHPMAILER_LANG['variable_set'] = 'Dəyişənin quraşdırılması uğursuz oldu: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ba.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ba.php deleted file mode 100755 index 576c4bb53439c6b0086608885fc9d403790eb895..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ba.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Bosnian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Ermin Islamagić <ermin@islamagic.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela prijava.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Nije moguće spojiti se sa SMTP serverom.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.'; -$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznata kriptografija: '; -$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; -$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; -$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje sa navedenih e-mail adresa nije uspjelo: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedene e-mail adrese nije uspjelo: '; -$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.'; -$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.'; -$PHPMAILER_LANG['provide_address'] = 'Definišite barem jednu adresu primaoca.'; -$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP server nije uspjelo.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP greška: '; -$PHPMAILER_LANG['variable_set'] = 'Nije moguće postaviti varijablu ili je vratiti nazad: '; -$PHPMAILER_LANG['extension_missing'] = 'Nedostaje ekstenzija: '; \ No newline at end of file diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-be.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-be.php deleted file mode 100755 index e2f98f0f6d9d924986266b5ff2d543429f79fb31..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-be.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Belarusian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Aleksander Maksymiuk <info@setpro.pl> - */ - -$PHPMAILER_LANG['authenticate'] = 'Памылка SMTP: памылка ідэнтыфікацыі.'; -$PHPMAILER_LANG['connect_host'] = 'Памылка SMTP: нельга ўстанавіць сувязь з SMTP-серверам.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Памылка SMTP: звесткі непрынятыя.'; -$PHPMAILER_LANG['empty_message'] = 'Пустое паведамленне.'; -$PHPMAILER_LANG['encoding'] = 'Невядомая кадыроўка тэксту: '; -$PHPMAILER_LANG['execute'] = 'Нельга выканаць каманду: '; -$PHPMAILER_LANG['file_access'] = 'Няма доступу да файла: '; -$PHPMAILER_LANG['file_open'] = 'Нельга адкрыць файл: '; -$PHPMAILER_LANG['from_failed'] = 'Няправільны адрас адпраўніка: '; -$PHPMAILER_LANG['instantiate'] = 'Нельга прымяніць функцыю mail().'; -$PHPMAILER_LANG['invalid_address'] = 'Нельга даслаць паведамленне, няправільны email атрымальніка: '; -$PHPMAILER_LANG['provide_address'] = 'Запоўніце, калі ласка, правільны email атрымальніка.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - паштовы сервер не падтрымліваецца.'; -$PHPMAILER_LANG['recipients_failed'] = 'Памылка SMTP: няправільныя атрымальнікі: '; -$PHPMAILER_LANG['signing'] = 'Памылка подпісу паведамлення: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Памылка сувязі з SMTP-серверам.'; -$PHPMAILER_LANG['smtp_error'] = 'Памылка SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Нельга ўстанавіць або перамяніць значэнне пераменнай: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-bg.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-bg.php deleted file mode 100755 index b22941f6b57f7ca0995f44dde1f3e79ef23d8792..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-bg.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Bulgarian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Mikhail Kyosev <mialygk@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: Не може да се удостовери пред сървъра.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: Не може да се свърже с SMTP хоста.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: данните не са приети.'; -$PHPMAILER_LANG['empty_message'] = 'Съдържанието на съобщението е празно'; -$PHPMAILER_LANG['encoding'] = 'Неизвестно кодиране: '; -$PHPMAILER_LANG['execute'] = 'Не може да се изпълни: '; -$PHPMAILER_LANG['file_access'] = 'Няма достъп до файл: '; -$PHPMAILER_LANG['file_open'] = 'Файлова грешка: Не може да се отвори файл: '; -$PHPMAILER_LANG['from_failed'] = 'Следните адреси за подател са невалидни: '; -$PHPMAILER_LANG['instantiate'] = 'Не може да се инстанцира функцията mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Невалиден адрес: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' - пощенски сървър не се поддържа.'; -$PHPMAILER_LANG['provide_address'] = 'Трябва да предоставите поне един email адрес за получател.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: Следните адреси за Получател са невалидни: '; -$PHPMAILER_LANG['signing'] = 'Грешка при подписване: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP провален connect().'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP сървърна грешка: '; -$PHPMAILER_LANG['variable_set'] = 'Не може да се установи или възстанови променлива: '; -$PHPMAILER_LANG['extension_missing'] = 'Липсва разширение: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ca.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ca.php deleted file mode 100755 index 4117596c6f1ea30712659094731175417bacb31f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ca.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Catalan PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Ivan <web AT microstudi DOT com> - */ - -$PHPMAILER_LANG['authenticate'] = 'Error SMTP: No s’ha pogut autenticar.'; -$PHPMAILER_LANG['connect_host'] = 'Error SMTP: No es pot connectar al servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Dades no acceptades.'; -$PHPMAILER_LANG['empty_message'] = 'El cos del missatge està buit.'; -$PHPMAILER_LANG['encoding'] = 'Codificació desconeguda: '; -$PHPMAILER_LANG['execute'] = 'No es pot executar: '; -$PHPMAILER_LANG['file_access'] = 'No es pot accedir a l’arxiu: '; -$PHPMAILER_LANG['file_open'] = 'Error d’Arxiu: No es pot obrir l’arxiu: '; -$PHPMAILER_LANG['from_failed'] = 'La(s) següent(s) adreces de remitent han fallat: '; -$PHPMAILER_LANG['instantiate'] = 'No s’ha pogut crear una instància de la funció Mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Adreça d’email invalida: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no està suportat'; -$PHPMAILER_LANG['provide_address'] = 'S’ha de proveir almenys una adreça d’email com a destinatari.'; -$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Els següents destinataris han fallat: '; -$PHPMAILER_LANG['signing'] = 'Error al signar: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ha fallat el SMTP Connect().'; -$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'No s’ha pogut establir o restablir la variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ch.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ch.php deleted file mode 100755 index 4fda6b85d7f3425fe136abecc77c644e6b668410..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ch.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Chinese PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author LiuXin <http://www.80x86.cn/blog/> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:身份验证失败。'; -$PHPMAILER_LANG['connect_host'] = 'SMTP 错误: 不能连接SMTP主机。'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误: 数据不可接受。'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = '未知编码:'; -$PHPMAILER_LANG['execute'] = '不能执行: '; -$PHPMAILER_LANG['file_access'] = '不能访问文件:'; -$PHPMAILER_LANG['file_open'] = '文件错误:不能打开文件:'; -$PHPMAILER_LANG['from_failed'] = '下面的发送地址邮件发送失败了: '; -$PHPMAILER_LANG['instantiate'] = '不能实现mail方法。'; -//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' 您所选择的发送邮件的方法并不支持。'; -$PHPMAILER_LANG['provide_address'] = '您必须提供至少一个 收信人的email地址。'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误: 下面的 收件人失败了: '; -//$PHPMAILER_LANG['signing'] = 'Signing Error: '; -//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; -//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-cs.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-cs.php deleted file mode 100755 index 1160cf0cc4a162eb0fc2c3de9eace53d611d4920..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-cs.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/** - * Czech PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - */ - -$PHPMAILER_LANG['authenticate'] = 'Chyba SMTP: Autentizace selhala.'; -$PHPMAILER_LANG['connect_host'] = 'Chyba SMTP: Nelze navázat spojení se SMTP serverem.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Chyba SMTP: Data nebyla přijata.'; -$PHPMAILER_LANG['empty_message'] = 'Prázdné tělo zprávy'; -$PHPMAILER_LANG['encoding'] = 'Neznámé kódování: '; -$PHPMAILER_LANG['execute'] = 'Nelze provést: '; -$PHPMAILER_LANG['file_access'] = 'Nelze získat přístup k souboru: '; -$PHPMAILER_LANG['file_open'] = 'Chyba souboru: Nelze otevřít soubor pro čtení: '; -$PHPMAILER_LANG['from_failed'] = 'Následující adresa odesílatele je nesprávná: '; -$PHPMAILER_LANG['instantiate'] = 'Nelze vytvořit instanci emailové funkce.'; -$PHPMAILER_LANG['invalid_address'] = 'Neplatná adresa: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer není podporován.'; -$PHPMAILER_LANG['provide_address'] = 'Musíte zadat alespoň jednu emailovou adresu příjemce.'; -$PHPMAILER_LANG['recipients_failed'] = 'Chyba SMTP: Následující adresy příjemců nejsou správně: '; -$PHPMAILER_LANG['signing'] = 'Chyba přihlašování: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() selhal.'; -$PHPMAILER_LANG['smtp_error'] = 'Chyba SMTP serveru: '; -$PHPMAILER_LANG['variable_set'] = 'Nelze nastavit nebo změnit proměnnou: '; -$PHPMAILER_LANG['extension_missing'] = 'Chybí rozšíření: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-da.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-da.php deleted file mode 100755 index e725f4b477c86455458a2f75d68e3fc776045503..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-da.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Danish PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Mikael Stokkebro <info@stokkebro.dk> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Kunne ikke logge på.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP fejl: Kunne ikke tilslutte SMTP serveren.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fejl: Data kunne ikke accepteres.'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: '; -$PHPMAILER_LANG['execute'] = 'Kunne ikke køre: '; -$PHPMAILER_LANG['file_access'] = 'Ingen adgang til fil: '; -$PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: '; -$PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: '; -$PHPMAILER_LANG['instantiate'] = 'Kunne ikke initialisere email funktionen.'; -//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.'; -$PHPMAILER_LANG['provide_address'] = 'Du skal indtaste mindst en modtagers emailadresse.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere er forkerte: '; -//$PHPMAILER_LANG['signing'] = 'Signing Error: '; -//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; -//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-de.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-de.php deleted file mode 100755 index aa987a9caffde62fbcc3b5f2391e978772f9c102..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-de.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/** - * German PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP-Fehler: Authentifizierung fehlgeschlagen.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP-Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-Fehler: Daten werden nicht akzeptiert.'; -$PHPMAILER_LANG['empty_message'] = 'E-Mail-Inhalt ist leer.'; -$PHPMAILER_LANG['encoding'] = 'Unbekannte Kodierung: '; -$PHPMAILER_LANG['execute'] = 'Konnte folgenden Befehl nicht ausführen: '; -$PHPMAILER_LANG['file_access'] = 'Zugriff auf folgende Datei fehlgeschlagen: '; -$PHPMAILER_LANG['file_open'] = 'Dateifehler: Konnte folgende Datei nicht öffnen: '; -$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: '; -$PHPMAILER_LANG['instantiate'] = 'Mail-Funktion konnte nicht initialisiert werden.'; -$PHPMAILER_LANG['invalid_address'] = 'Die Adresse ist ungültig: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.'; -$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfängeradresse an.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: '; -$PHPMAILER_LANG['signing'] = 'Fehler beim Signieren: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Verbindung zum SMTP-Server fehlgeschlagen.'; -$PHPMAILER_LANG['smtp_error'] = 'Fehler vom SMTP-Server: '; -$PHPMAILER_LANG['variable_set'] = 'Kann Variable nicht setzen oder zurücksetzen: '; -$PHPMAILER_LANG['extension_missing'] = 'Fehlende Erweiterung: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-el.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-el.php deleted file mode 100755 index 7109641e49741d0151915cbb4d22301b33616229..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-el.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/** - * Greek PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Σφάλμα: Αδυναμία πιστοποίησης (authentication).'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Σφάλμα: Αδυναμία σύνδεσης στον SMTP-Host.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Σφάλμα: Τα δεδομένα δεν έγιναν αποδεκτά.'; -$PHPMAILER_LANG['empty_message'] = 'Το E-Mail δεν έχει περιεχόμενο .'; -$PHPMAILER_LANG['encoding'] = 'Αγνωστο Encoding-Format: '; -$PHPMAILER_LANG['execute'] = 'Αδυναμία εκτέλεσης ακόλουθης εντολής: '; -$PHPMAILER_LANG['file_access'] = 'Αδυναμία προσπέλασης του αρχείου: '; -$PHPMAILER_LANG['file_open'] = 'Σφάλμα Αρχείου: Δεν είναι δυνατό το άνοιγμα του ακόλουθου αρχείου: '; -$PHPMAILER_LANG['from_failed'] = 'Η παρακάτω διεύθυνση αποστολέα δεν είναι σωστή: '; -$PHPMAILER_LANG['instantiate'] = 'Αδυναμία εκκίνησης Mail function.'; -$PHPMAILER_LANG['invalid_address'] = 'Το μήνυμα δεν εστάλη, η διεύθυνση δεν είναι έγκυρη: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer δεν υποστηρίζεται.'; -$PHPMAILER_LANG['provide_address'] = 'Παρακαλούμε δώστε τουλάχιστον μια e-mail διεύθυνση παραλήπτη.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Σφάλμα: Οι παρακάτω διευθύνσεις παραλήπτη δεν είναι έγκυρες: '; -$PHPMAILER_LANG['signing'] = 'Σφάλμα υπογραφής: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Αποτυχία σύνδεσης στον SMTP Server.'; -$PHPMAILER_LANG['smtp_error'] = 'Σφάλμα από τον SMTP Server: '; -$PHPMAILER_LANG['variable_set'] = 'Αδυναμία ορισμού ή αρχικοποίησης μεταβλητής: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-eo.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-eo.php deleted file mode 100755 index 5ca6cb709525f511c4c7041b8d49a7c73a10bf39..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-eo.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/** - * Esperanto PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - */ - -$PHPMAILER_LANG['authenticate'] = 'Eraro de servilo SMTP : aŭtentigo malsukcesis.'; -$PHPMAILER_LANG['connect_host'] = 'Eraro de servilo SMTP : konektado al servilo malsukcesis.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Eraro de servilo SMTP : neĝustaj datumoj.'; -$PHPMAILER_LANG['empty_message'] = 'Teksto de mesaĝo mankas.'; -$PHPMAILER_LANG['encoding'] = 'Nekonata kodoprezento: '; -$PHPMAILER_LANG['execute'] = 'Lanĉi rulumadon ne eblis: '; -$PHPMAILER_LANG['file_access'] = 'Aliro al dosiero ne sukcesis: '; -$PHPMAILER_LANG['file_open'] = 'Eraro de dosiero: malfermo neeblas: '; -$PHPMAILER_LANG['from_failed'] = 'Jena adreso de sendinto malsukcesis: '; -$PHPMAILER_LANG['instantiate'] = 'Genero de retmesaĝa funkcio neeblis.'; -$PHPMAILER_LANG['invalid_address'] = 'Retadreso ne validas: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mesaĝilo ne subtenata.'; -$PHPMAILER_LANG['provide_address'] = 'Vi devas tajpi almenaŭ unu recevontan retadreson.'; -$PHPMAILER_LANG['recipients_failed'] = 'Eraro de servilo SMTP : la jenaj poŝtrecivuloj kaŭzis eraron: '; -$PHPMAILER_LANG['signing'] = 'Eraro de subskribo: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP konektado malsukcesis.'; -$PHPMAILER_LANG['smtp_error'] = 'Eraro de servilo SMTP : '; -$PHPMAILER_LANG['variable_set'] = 'Variablo ne pravalorizeblas aŭ ne repravalorizeblas: '; -$PHPMAILER_LANG['extension_missing'] = 'Mankas etendo: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-es.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-es.php deleted file mode 100755 index f2c4e8316c0939ce7e8cc5e8589549c463af3353..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-es.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Spanish PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Matt Sturdy <matt.sturdy@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'Error SMTP: Imposible autentificar.'; -$PHPMAILER_LANG['connect_host'] = 'Error SMTP: Imposible conectar al servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Error SMTP: Datos no aceptados.'; -$PHPMAILER_LANG['empty_message'] = 'El cuerpo del mensaje está vacío.'; -$PHPMAILER_LANG['encoding'] = 'Codificación desconocida: '; -$PHPMAILER_LANG['execute'] = 'Imposible ejecutar: '; -$PHPMAILER_LANG['file_access'] = 'Imposible acceder al archivo: '; -$PHPMAILER_LANG['file_open'] = 'Error de Archivo: Imposible abrir el archivo: '; -$PHPMAILER_LANG['from_failed'] = 'La(s) siguiente(s) direcciones de remitente fallaron: '; -$PHPMAILER_LANG['instantiate'] = 'Imposible crear una instancia de la función Mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Imposible enviar: dirección de email inválido: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer no está soportado.'; -$PHPMAILER_LANG['provide_address'] = 'Debe proporcionar al menos una dirección de email de destino.'; -$PHPMAILER_LANG['recipients_failed'] = 'Error SMTP: Los siguientes destinos fallaron: '; -$PHPMAILER_LANG['signing'] = 'Error al firmar: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.'; -$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-et.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-et.php deleted file mode 100755 index 7e06da13e615def00230e0f6db96ee1c284c1d70..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-et.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Estonian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Indrek Päri - * @author Elan Ruusamäe <glen@delfi.ee> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Viga: Autoriseerimise viga.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Viga: Ei õnnestunud luua ühendust SMTP serveriga.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Viga: Vigased andmed.'; -$PHPMAILER_LANG['empty_message'] = 'Tühi kirja sisu'; -$PHPMAILER_LANG["encoding"] = 'Tundmatu kodeering: '; -$PHPMAILER_LANG['execute'] = 'Tegevus ebaõnnestus: '; -$PHPMAILER_LANG['file_access'] = 'Pole piisavalt õiguseid järgneva faili avamiseks: '; -$PHPMAILER_LANG['file_open'] = 'Faili Viga: Faili avamine ebaõnnestus: '; -$PHPMAILER_LANG['from_failed'] = 'Järgnev saatja e-posti aadress on vigane: '; -$PHPMAILER_LANG['instantiate'] = 'mail funktiooni käivitamine ebaõnnestus.'; -$PHPMAILER_LANG['invalid_address'] = 'Saatmine peatatud, e-posti address vigane: '; -$PHPMAILER_LANG['provide_address'] = 'Te peate määrama vähemalt ühe saaja e-posti aadressi.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' maileri tugi puudub.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Viga: Järgnevate saajate e-posti aadressid on vigased: '; -$PHPMAILER_LANG["signing"] = 'Viga allkirjastamisel: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() ebaõnnestus.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP serveri viga: '; -$PHPMAILER_LANG['variable_set'] = 'Ei õnnestunud määrata või lähtestada muutujat: '; -$PHPMAILER_LANG['extension_missing'] = 'Nõutud laiendus on puudu: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fa.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fa.php deleted file mode 100755 index ad0745c581c411b453a9ab29a266f3c647dab636..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fa.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Persian/Farsi PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Ali Jazayeri <jaza.ali@gmail.com> - * @author Mohammad Hossein Mojtahedi <mhm5000@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'خطای SMTP: احراز هویت با شکست مواجه شد.'; -$PHPMAILER_LANG['connect_host'] = 'خطای SMTP: اتصال به سرور SMTP برقرار نشد.'; -$PHPMAILER_LANG['data_not_accepted'] = 'خطای SMTP: دادهها نادرست هستند.'; -$PHPMAILER_LANG['empty_message'] = 'بخش متن پیام خالی است.'; -$PHPMAILER_LANG['encoding'] = 'کدگذاری ناشناخته: '; -$PHPMAILER_LANG['execute'] = 'امکان اجرا وجود ندارد: '; -$PHPMAILER_LANG['file_access'] = 'امکان دسترسی به فایل وجود ندارد: '; -$PHPMAILER_LANG['file_open'] = 'خطای File: امکان بازکردن فایل وجود ندارد: '; -$PHPMAILER_LANG['from_failed'] = 'آدرس فرستنده اشتباه است: '; -$PHPMAILER_LANG['instantiate'] = 'امکان معرفی تابع ایمیل وجود ندارد.'; -$PHPMAILER_LANG['invalid_address'] = 'آدرس ایمیل معتبر نیست: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer پشتیبانی نمیشود.'; -$PHPMAILER_LANG['provide_address'] = 'باید حداقل یک آدرس گیرنده وارد کنید.'; -$PHPMAILER_LANG['recipients_failed'] = 'خطای SMTP: ارسال به آدرس گیرنده با خطا مواجه شد: '; -$PHPMAILER_LANG['signing'] = 'خطا در امضا: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'خطا در اتصال به SMTP.'; -$PHPMAILER_LANG['smtp_error'] = 'خطا در SMTP Server: '; -$PHPMAILER_LANG['variable_set'] = 'امکان ارسال یا ارسال مجدد متغیرها وجود ندارد: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fi.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fi.php deleted file mode 100755 index ec4e75234971ef55d16526c18bd06a8495b87d24..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fi.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Finnish PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Jyry Kuukanen - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP-virhe: käyttäjätunnistus epäonnistui.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP-virhe: yhteys palvelimeen ei onnistu.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-virhe: data on virheellinen.'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = 'Tuntematon koodaustyyppi: '; -$PHPMAILER_LANG['execute'] = 'Suoritus epäonnistui: '; -$PHPMAILER_LANG['file_access'] = 'Seuraavaan tiedostoon ei ole oikeuksia: '; -$PHPMAILER_LANG['file_open'] = 'Tiedostovirhe: Ei voida avata tiedostoa: '; -$PHPMAILER_LANG['from_failed'] = 'Seuraava lähettäjän osoite on virheellinen: '; -$PHPMAILER_LANG['instantiate'] = 'mail-funktion luonti epäonnistui.'; -//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; -$PHPMAILER_LANG['mailer_not_supported'] = 'postivälitintyyppiä ei tueta.'; -$PHPMAILER_LANG['provide_address'] = 'Aseta vähintään yksi vastaanottajan sähköpostiosoite.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP-virhe: seuraava vastaanottaja osoite on virheellinen.'; -$PHPMAILER_LANG['encoding'] = 'Tuntematon koodaustyyppi: '; -//$PHPMAILER_LANG['signing'] = 'Signing Error: '; -//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; -//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fo.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fo.php deleted file mode 100755 index 68cdef1d090c5e681fbebad7974bee4607821904..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fo.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Faroese PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Dávur Sørensen <http://www.profo-webdesign.dk> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP feilur: Kundi ikki góðkenna.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP feilur: Kundi ikki knýta samband við SMTP vert.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP feilur: Data ikki góðkent.'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = 'Ókend encoding: '; -$PHPMAILER_LANG['execute'] = 'Kundi ikki útføra: '; -$PHPMAILER_LANG['file_access'] = 'Kundi ikki tilganga fílu: '; -$PHPMAILER_LANG['file_open'] = 'Fílu feilur: Kundi ikki opna fílu: '; -$PHPMAILER_LANG['from_failed'] = 'fylgjandi Frá/From adressa miseydnaðist: '; -$PHPMAILER_LANG['instantiate'] = 'Kuni ikki instantiera mail funktión.'; -//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' er ikki supporterað.'; -$PHPMAILER_LANG['provide_address'] = 'Tú skal uppgeva minst móttakara-emailadressu(r).'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feilur: Fylgjandi móttakarar miseydnaðust: '; -//$PHPMAILER_LANG['signing'] = 'Signing Error: '; -//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; -//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fr.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fr.php deleted file mode 100755 index af68c9236881d1bee0f81ea03651b803902cf7a7..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-fr.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * French PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * Some French punctuation requires a thin non-breaking space (U+202F) character before it, - * for example before a colon or exclamation mark. - * There is one of these characters between these quotes: " " - * @see http://unicode.org/udhr/n/notes_fra.html - */ - -$PHPMAILER_LANG['authenticate'] = 'Erreur SMTP : échec de l\'authentification.'; -$PHPMAILER_LANG['connect_host'] = 'Erreur SMTP : impossible de se connecter au serveur SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erreur SMTP : données incorrectes.'; -$PHPMAILER_LANG['empty_message'] = 'Corps du message vide.'; -$PHPMAILER_LANG['encoding'] = 'Encodage inconnu : '; -$PHPMAILER_LANG['execute'] = 'Impossible de lancer l\'exécution : '; -$PHPMAILER_LANG['file_access'] = 'Impossible d\'accéder au fichier : '; -$PHPMAILER_LANG['file_open'] = 'Ouverture du fichier impossible : '; -$PHPMAILER_LANG['from_failed'] = 'L\'adresse d\'expéditeur suivante a échoué : '; -$PHPMAILER_LANG['instantiate'] = 'Impossible d\'instancier la fonction mail.'; -$PHPMAILER_LANG['invalid_address'] = 'L\'adresse courriel n\'est pas valide : '; -$PHPMAILER_LANG['mailer_not_supported'] = ' client de messagerie non supporté.'; -$PHPMAILER_LANG['provide_address'] = 'Vous devez fournir au moins une adresse de destinataire.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erreur SMTP : les destinataires suivants sont en erreur : '; -$PHPMAILER_LANG['signing'] = 'Erreur de signature : '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Échec de la connexion SMTP.'; -$PHPMAILER_LANG['smtp_error'] = 'Erreur du serveur SMTP : '; -$PHPMAILER_LANG['variable_set'] = 'Impossible d\'initialiser ou de réinitialiser une variable : '; -$PHPMAILER_LANG['extension_missing'] = 'Extension manquante : '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-gl.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-gl.php deleted file mode 100755 index 9b4ce4d8de252e3d95adcf17e9c0c37420edec3d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-gl.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Galician PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author by Donato Rouco <donatorouco@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'Erro SMTP: Non puido ser autentificado.'; -$PHPMAILER_LANG['connect_host'] = 'Erro SMTP: Non puido conectar co servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erro SMTP: Datos non aceptados.'; -$PHPMAILER_LANG['empty_message'] = 'Corpo da mensaxe vacía'; -$PHPMAILER_LANG['encoding'] = 'Codificación descoñecida: '; -$PHPMAILER_LANG['execute'] = 'Non puido ser executado: '; -$PHPMAILER_LANG['file_access'] = 'Nob puido acceder ó arquivo: '; -$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: No puido abrir o arquivo: '; -$PHPMAILER_LANG['from_failed'] = 'A(s) seguinte(s) dirección(s) de remitente(s) deron erro: '; -$PHPMAILER_LANG['instantiate'] = 'Non puido crear unha instancia da función Mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Non puido envia-lo correo: dirección de email inválida: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer non está soportado.'; -$PHPMAILER_LANG['provide_address'] = 'Debe engadir polo menos unha dirección de email coma destino.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erro SMTP: Os seguintes destinos fallaron: '; -$PHPMAILER_LANG['signing'] = 'Erro ó firmar: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallou.'; -$PHPMAILER_LANG['smtp_error'] = 'Erro do servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Non puidemos axustar ou reaxustar a variábel: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-he.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-he.php deleted file mode 100755 index 70eb717578f1e4e1c0cbcee855e14b8a91f8f7ce..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-he.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Hebrew PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Ronny Sherer <ronny@hoojima.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'שגיאת SMTP: פעולת האימות נכשלה.'; -$PHPMAILER_LANG['connect_host'] = 'שגיאת SMTP: לא הצלחתי להתחבר לשרת SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'שגיאת SMTP: מידע לא התקבל.'; -$PHPMAILER_LANG['empty_message'] = 'גוף ההודעה ריק'; -$PHPMAILER_LANG['invalid_address'] = 'כתובת שגויה: '; -$PHPMAILER_LANG['encoding'] = 'קידוד לא מוכר: '; -$PHPMAILER_LANG['execute'] = 'לא הצלחתי להפעיל את: '; -$PHPMAILER_LANG['file_access'] = 'לא ניתן לגשת לקובץ: '; -$PHPMAILER_LANG['file_open'] = 'שגיאת קובץ: לא ניתן לגשת לקובץ: '; -$PHPMAILER_LANG['from_failed'] = 'כתובות הנמענים הבאות נכשלו: '; -$PHPMAILER_LANG['instantiate'] = 'לא הצלחתי להפעיל את פונקציית המייל.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' אינה נתמכת.'; -$PHPMAILER_LANG['provide_address'] = 'חובה לספק לפחות כתובת אחת של מקבל המייל.'; -$PHPMAILER_LANG['recipients_failed'] = 'שגיאת SMTP: הנמענים הבאים נכשלו: '; -$PHPMAILER_LANG['signing'] = 'שגיאת חתימה: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -$PHPMAILER_LANG['smtp_error'] = 'שגיאת שרת SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'לא ניתן לקבוע או לשנות את המשתנה: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-hi.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-hi.php deleted file mode 100755 index 607a5ee3f9bd3e678f96336cd1837bbf61deeb96..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-hi.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Hindi PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Yash Karanke <mr.karanke@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP त्रुटि: प्रामाणिकता की जांच नहीं हो सका। '; -$PHPMAILER_LANG['connect_host'] = 'SMTP त्रुटि: SMTP सर्वर से कनेक्ट नहीं हो सका। '; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP त्रुटि: डेटा स्वीकार नहीं किया जाता है। '; -$PHPMAILER_LANG['empty_message'] = 'संदेश खाली है। '; -$PHPMAILER_LANG['encoding'] = 'अज्ञात एन्कोडिंग प्रकार। '; -$PHPMAILER_LANG['execute'] = 'आदेश को निष्पादित करने में विफल। '; -$PHPMAILER_LANG['file_access'] = 'फ़ाइल उपलब्ध नहीं है। '; -$PHPMAILER_LANG['file_open'] = 'फ़ाइल त्रुटि: फाइल को खोला नहीं जा सका। '; -$PHPMAILER_LANG['from_failed'] = 'प्रेषक का पता गलत है। '; -$PHPMAILER_LANG['instantiate'] = 'मेल फ़ंक्शन कॉल नहीं कर सकता है।'; -$PHPMAILER_LANG['invalid_address'] = 'पता गलत है। '; -$PHPMAILER_LANG['mailer_not_supported'] = 'मेल सर्वर के साथ काम नहीं करता है। '; -$PHPMAILER_LANG['provide_address'] = 'आपको कम से कम एक प्राप्तकर्ता का ई-मेल पता प्रदान करना होगा।'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP त्रुटि: निम्न प्राप्तकर्ताओं को पते भेजने में विफल। '; -$PHPMAILER_LANG['signing'] = 'साइनअप त्रुटि:। '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP का connect () फ़ंक्शन विफल हुआ। '; -$PHPMAILER_LANG['smtp_error'] = 'SMTP सर्वर त्रुटि। '; -$PHPMAILER_LANG['variable_set'] = 'चर को बना या संशोधित नहीं किया जा सकता। '; -$PHPMAILER_LANG['extension_missing'] = 'एक्सटेन्षन गायब है: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-hr.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-hr.php deleted file mode 100755 index 3822920adda1780df96dd7117f5ed4729aabe2e1..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-hr.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Croatian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Hrvoj3e <hrvoj3e@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Greška: Neuspjela autentikacija.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Greška: Ne mogu se spojiti na SMTP poslužitelj.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Greška: Podatci nisu prihvaćeni.'; -$PHPMAILER_LANG['empty_message'] = 'Sadržaj poruke je prazan.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznati encoding: '; -$PHPMAILER_LANG['execute'] = 'Nije moguće izvršiti naredbu: '; -$PHPMAILER_LANG['file_access'] = 'Nije moguće pristupiti datoteci: '; -$PHPMAILER_LANG['file_open'] = 'Nije moguće otvoriti datoteku: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP Greška: Slanje s navedenih e-mail adresa nije uspjelo: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Greška: Slanje na navedenih e-mail adresa nije uspjelo: '; -$PHPMAILER_LANG['instantiate'] = 'Ne mogu pokrenuti mail funkcionalnost.'; -$PHPMAILER_LANG['invalid_address'] = 'E-mail nije poslan. Neispravna e-mail adresa: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nije podržan.'; -$PHPMAILER_LANG['provide_address'] = 'Definirajte barem jednu adresu primatelja.'; -$PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP poslužitelj nije uspjelo.'; -$PHPMAILER_LANG['smtp_error'] = 'Greška SMTP poslužitelja: '; -$PHPMAILER_LANG['variable_set'] = 'Ne mogu postaviti varijablu niti ju vratiti nazad: '; -$PHPMAILER_LANG['extension_missing'] = 'Nedostaje proširenje: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-hu.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-hu.php deleted file mode 100755 index d7ca88870204f9e2a8a063e604bb55bffd3d81aa..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-hu.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Hungarian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author @dominicus-75 - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP hiba: az azonosítás sikertelen.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP hiba: nem lehet kapcsolódni az SMTP-szerverhez.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP hiba: adatok visszautasítva.'; -$PHPMAILER_LANG['empty_message'] = 'Üres az üzenettörzs.'; -$PHPMAILER_LANG['encoding'] = 'Ismeretlen kódolás: '; -$PHPMAILER_LANG['execute'] = 'Nem lehet végrehajtani: '; -$PHPMAILER_LANG['file_access'] = 'A következő fájl nem elérhető: '; -$PHPMAILER_LANG['file_open'] = 'Fájl hiba: a következő fájlt nem lehet megnyitni: '; -$PHPMAILER_LANG['from_failed'] = 'A feladóként megadott következő cím hibás: '; -$PHPMAILER_LANG['instantiate'] = 'A PHP mail() függvényt nem sikerült végrehajtani.'; -$PHPMAILER_LANG['invalid_address'] = 'Érvénytelen cím: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' a mailer-osztály nem támogatott.'; -$PHPMAILER_LANG['provide_address'] = 'Legalább egy címzettet fel kell tüntetni.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP hiba: a címzettként megadott következő címek hibásak: '; -$PHPMAILER_LANG['signing'] = 'Hibás aláírás: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Hiba az SMTP-kapcsolatban.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP-szerver hiba: '; -$PHPMAILER_LANG['variable_set'] = 'A következő változók beállítása nem sikerült: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-id.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-id.php deleted file mode 100755 index 97c16e087ffa1bb0a74f589b86238c91a456740f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-id.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Indonesian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Cecep Prawiro <cecep.prawiro@gmail.com> - * @author @januridp - */ - -$PHPMAILER_LANG['authenticate'] = 'Kesalahan SMTP: Tidak dapat mengotentikasi.'; -$PHPMAILER_LANG['connect_host'] = 'Kesalahan SMTP: Tidak dapat terhubung ke host SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Kesalahan SMTP: Data tidak diterima peladen.'; -$PHPMAILER_LANG['empty_message'] = 'Isi pesan kosong'; -$PHPMAILER_LANG['encoding'] = 'Pengkodean karakter tidak dikenali: '; -$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses : '; -$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas : '; -$PHPMAILER_LANG['file_open'] = 'Kesalahan File: Berkas tidak bisa dibuka : '; -$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan : '; -$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel'; -$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak benar : '; -$PHPMAILER_LANG['provide_address'] = 'Harus disediakan minimal satu alamat tujuan'; -$PHPMAILER_LANG['mailer_not_supported'] = 'Pengirim tidak didukung'; -$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menghasilkan kesalahan : '; -$PHPMAILER_LANG['signing'] = 'Kesalahan dalam tanda tangan : '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() gagal.'; -$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP : '; -$PHPMAILER_LANG['variable_set'] = 'Tidak berhasil mengatur atau mengatur ulang variable : '; -$PHPMAILER_LANG['extension_missing'] = 'Ekstensi hilang: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-it.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-it.php deleted file mode 100755 index d2f4643e7150a142751debebfd3657ebbf242b97..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-it.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Italian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Ilias Bartolini <brain79@inwind.it> - * @author Stefano Sabatini <sabas88@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Impossibile autenticarsi.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Impossibile connettersi all\'host SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dati non accettati dal server.'; -$PHPMAILER_LANG['empty_message'] = 'Il corpo del messaggio è vuoto'; -$PHPMAILER_LANG['encoding'] = 'Codifica dei caratteri sconosciuta: '; -$PHPMAILER_LANG['execute'] = 'Impossibile eseguire l\'operazione: '; -$PHPMAILER_LANG['file_access'] = 'Impossibile accedere al file: '; -$PHPMAILER_LANG['file_open'] = 'File Error: Impossibile aprire il file: '; -$PHPMAILER_LANG['from_failed'] = 'I seguenti indirizzi mittenti hanno generato errore: '; -$PHPMAILER_LANG['instantiate'] = 'Impossibile istanziare la funzione mail'; -$PHPMAILER_LANG['invalid_address'] = 'Impossibile inviare, l\'indirizzo email non è valido: '; -$PHPMAILER_LANG['provide_address'] = 'Deve essere fornito almeno un indirizzo ricevente'; -$PHPMAILER_LANG['mailer_not_supported'] = 'Mailer non supportato'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: I seguenti indirizzi destinatari hanno generato un errore: '; -$PHPMAILER_LANG['signing'] = 'Errore nella firma: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() fallita.'; -$PHPMAILER_LANG['smtp_error'] = 'Errore del server SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Impossibile impostare o resettare la variabile: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ja.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ja.php deleted file mode 100755 index 2d778728d7762206d01ff924fc6d24ccd4a5d7d4..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ja.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Japanese PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Mitsuhiro Yoshida <http://mitstek.com/> - * @author Yoshi Sakai <http://bluemooninc.jp/> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTPエラー: 認証できませんでした。'; -$PHPMAILER_LANG['connect_host'] = 'SMTPエラー: SMTPホストに接続できませんでした。'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTPエラー: データが受け付けられませんでした。'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = '不明なエンコーディング: '; -$PHPMAILER_LANG['execute'] = '実行できませんでした: '; -$PHPMAILER_LANG['file_access'] = 'ファイルにアクセスできません: '; -$PHPMAILER_LANG['file_open'] = 'ファイルエラー: ファイルを開けません: '; -$PHPMAILER_LANG['from_failed'] = 'Fromアドレスを登録する際にエラーが発生しました: '; -$PHPMAILER_LANG['instantiate'] = 'メール関数が正常に動作しませんでした。'; -//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: '; -$PHPMAILER_LANG['provide_address'] = '少なくとも1つメールアドレスを 指定する必要があります。'; -$PHPMAILER_LANG['mailer_not_supported'] = ' メーラーがサポートされていません。'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTPエラー: 次の受信者アドレスに 間違いがあります: '; -//$PHPMAILER_LANG['signing'] = 'Signing Error: '; -//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.'; -//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: '; -//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ka.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ka.php deleted file mode 100755 index dd1af8abec5db96bc8e41a717dda506b14af61f7..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ka.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Georgian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Avtandil Kikabidze aka LONGMAN <akalongman@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP შეცდომა: ავტორიზაცია შეუძლებელია.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP შეცდომა: SMTP სერვერთან დაკავშირება შეუძლებელია.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP შეცდომა: მონაცემები არ იქნა მიღებული.'; -$PHPMAILER_LANG['encoding'] = 'კოდირების უცნობი ტიპი: '; -$PHPMAILER_LANG['execute'] = 'შეუძლებელია შემდეგი ბრძანების შესრულება: '; -$PHPMAILER_LANG['file_access'] = 'შეუძლებელია წვდომა ფაილთან: '; -$PHPMAILER_LANG['file_open'] = 'ფაილური სისტემის შეცდომა: არ იხსნება ფაილი: '; -$PHPMAILER_LANG['from_failed'] = 'გამგზავნის არასწორი მისამართი: '; -$PHPMAILER_LANG['instantiate'] = 'mail ფუნქციის გაშვება ვერ ხერხდება.'; -$PHPMAILER_LANG['provide_address'] = 'გთხოვთ მიუთითოთ ერთი ადრესატის e-mail მისამართი მაინც.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - საფოსტო სერვერის მხარდაჭერა არ არის.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP შეცდომა: შემდეგ მისამართებზე გაგზავნა ვერ მოხერხდა: '; -$PHPMAILER_LANG['empty_message'] = 'შეტყობინება ცარიელია'; -$PHPMAILER_LANG['invalid_address'] = 'არ გაიგზავნა, e-mail მისამართის არასწორი ფორმატი: '; -$PHPMAILER_LANG['signing'] = 'ხელმოწერის შეცდომა: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'შეცდომა SMTP სერვერთან დაკავშირებისას'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP სერვერის შეცდომა: '; -$PHPMAILER_LANG['variable_set'] = 'შეუძლებელია შემდეგი ცვლადის შექმნა ან შეცვლა: '; -$PHPMAILER_LANG['extension_missing'] = 'ბიბლიოთეკა არ არსებობს: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ko.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ko.php deleted file mode 100755 index 9599fa6819200c3f0beb73d687259f339597620d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ko.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Korean PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author ChalkPE <amato0617@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP 오류: 인증할 수 없습니다.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP 오류: SMTP 호스트에 접속할 수 없습니다.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 오류: 데이터가 받아들여지지 않았습니다.'; -$PHPMAILER_LANG['empty_message'] = '메세지 내용이 없습니다'; -$PHPMAILER_LANG['encoding'] = '알 수 없는 인코딩: '; -$PHPMAILER_LANG['execute'] = '실행 불가: '; -$PHPMAILER_LANG['file_access'] = '파일 접근 불가: '; -$PHPMAILER_LANG['file_open'] = '파일 오류: 파일을 열 수 없습니다: '; -$PHPMAILER_LANG['from_failed'] = '다음 From 주소에서 오류가 발생했습니다: '; -$PHPMAILER_LANG['instantiate'] = 'mail 함수를 인스턴스화할 수 없습니다'; -$PHPMAILER_LANG['invalid_address'] = '잘못된 주소: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' 메일러는 지원되지 않습니다.'; -$PHPMAILER_LANG['provide_address'] = '적어도 한 개 이상의 수신자 메일 주소를 제공해야 합니다.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP 오류: 다음 수신자에서 오류가 발생했습니다: '; -$PHPMAILER_LANG['signing'] = '서명 오류: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP 연결을 실패하였습니다.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP 서버 오류: '; -$PHPMAILER_LANG['variable_set'] = '변수 설정 및 초기화 불가: '; -$PHPMAILER_LANG['extension_missing'] = '확장자 없음: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-lt.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-lt.php deleted file mode 100755 index 1253a4fdb491710eeb633875a697e8ebf99c5f14..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-lt.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Lithuanian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Dainius Kaupaitis <dk@sum.lt> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP klaida: autentifikacija nepavyko.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP klaida: nepavyksta prisijungti prie SMTP stoties.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP klaida: duomenys nepriimti.'; -$PHPMAILER_LANG['empty_message'] = 'Laiško turinys tuščias'; -$PHPMAILER_LANG['encoding'] = 'Neatpažinta koduotė: '; -$PHPMAILER_LANG['execute'] = 'Nepavyko įvykdyti komandos: '; -$PHPMAILER_LANG['file_access'] = 'Byla nepasiekiama: '; -$PHPMAILER_LANG['file_open'] = 'Bylos klaida: Nepavyksta atidaryti: '; -$PHPMAILER_LANG['from_failed'] = 'Neteisingas siuntėjo adresas: '; -$PHPMAILER_LANG['instantiate'] = 'Nepavyko paleisti mail funkcijos.'; -$PHPMAILER_LANG['invalid_address'] = 'Neteisingas adresas: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' pašto stotis nepalaikoma.'; -$PHPMAILER_LANG['provide_address'] = 'Nurodykite bent vieną gavėjo adresą.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP klaida: nepavyko išsiųsti šiems gavėjams: '; -$PHPMAILER_LANG['signing'] = 'Prisijungimo klaida: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP susijungimo klaida'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP stoties klaida: '; -$PHPMAILER_LANG['variable_set'] = 'Nepavyko priskirti reikšmės kintamajam: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-lv.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-lv.php deleted file mode 100755 index 39bf9a19e22db30904ec98e8df0909e768799b9a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-lv.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Latvian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Eduards M. <e@npd.lv> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP kļūda: Autorizācija neizdevās.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Kļūda: Nevar izveidot savienojumu ar SMTP serveri.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Kļūda: Nepieņem informāciju.'; -$PHPMAILER_LANG['empty_message'] = 'Ziņojuma teksts ir tukšs'; -$PHPMAILER_LANG['encoding'] = 'Neatpazīts kodējums: '; -$PHPMAILER_LANG['execute'] = 'Neizdevās izpildīt komandu: '; -$PHPMAILER_LANG['file_access'] = 'Fails nav pieejams: '; -$PHPMAILER_LANG['file_open'] = 'Faila kļūda: Nevar atvērt failu: '; -$PHPMAILER_LANG['from_failed'] = 'Nepareiza sūtītāja adrese: '; -$PHPMAILER_LANG['instantiate'] = 'Nevar palaist sūtīšanas funkciju.'; -$PHPMAILER_LANG['invalid_address'] = 'Nepareiza adrese: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' sūtītājs netiek atbalstīts.'; -$PHPMAILER_LANG['provide_address'] = 'Lūdzu, norādiet vismaz vienu adresātu.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP kļūda: neizdevās nosūtīt šādiem saņēmējiem: '; -$PHPMAILER_LANG['signing'] = 'Autorizācijas kļūda: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP savienojuma kļūda'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP servera kļūda: '; -$PHPMAILER_LANG['variable_set'] = 'Nevar piešķirt mainīgā vērtību: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ms.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ms.php deleted file mode 100755 index 4e2c34083a99bfd768fc1008fb5cf9981ed27d97..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ms.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Malaysian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Nawawi Jamili <nawawi@rutweb.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'Ralat SMTP: Tidak dapat pengesahan.'; -$PHPMAILER_LANG['connect_host'] = 'Ralat SMTP: Tidak dapat menghubungi hos pelayan SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Ralat SMTP: Data tidak diterima oleh pelayan.'; -$PHPMAILER_LANG['empty_message'] = 'Tiada isi untuk mesej'; -$PHPMAILER_LANG['encoding'] = 'Pengekodan tidak diketahui: '; -$PHPMAILER_LANG['execute'] = 'Tidak dapat melaksanakan: '; -$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses fail: '; -$PHPMAILER_LANG['file_open'] = 'Ralat Fail: Tidak dapat membuka fail: '; -$PHPMAILER_LANG['from_failed'] = 'Berikut merupakan ralat dari alamat e-mel: '; -$PHPMAILER_LANG['instantiate'] = 'Tidak dapat memberi contoh fungsi e-mel.'; -$PHPMAILER_LANG['invalid_address'] = 'Alamat emel tidak sah: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' jenis penghantar emel tidak disokong.'; -$PHPMAILER_LANG['provide_address'] = 'Anda perlu menyediakan sekurang-kurangnya satu alamat e-mel penerima.'; -$PHPMAILER_LANG['recipients_failed'] = 'Ralat SMTP: Penerima e-mel berikut telah gagal: '; -$PHPMAILER_LANG['signing'] = 'Ralat pada tanda tangan: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() telah gagal.'; -$PHPMAILER_LANG['smtp_error'] = 'Ralat pada pelayan SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Tidak boleh menetapkan atau menetapkan semula pembolehubah: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-nb.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-nb.php deleted file mode 100755 index 446105422cb9855ba1e0562bd638ecab9e0e155d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-nb.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/** - * Norwegian Bokmål PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Feil: Kunne ikke autentisere.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Feil: Kunne ikke koble til SMTP tjener.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Feil: Datainnhold ikke akseptert.'; -$PHPMAILER_LANG['empty_message'] = 'Melding kropp tomt'; -$PHPMAILER_LANG['encoding'] = 'Ukjent koding: '; -$PHPMAILER_LANG['execute'] = 'Kunne ikke utføre: '; -$PHPMAILER_LANG['file_access'] = 'Får ikke tilgang til filen: '; -$PHPMAILER_LANG['file_open'] = 'Fil Feil: Kunne ikke åpne filen: '; -$PHPMAILER_LANG['from_failed'] = 'Følgende Frå adresse feilet: '; -$PHPMAILER_LANG['instantiate'] = 'Kunne ikke initialisere post funksjon.'; -$PHPMAILER_LANG['invalid_address'] = 'Ugyldig adresse: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' sender er ikke støttet.'; -$PHPMAILER_LANG['provide_address'] = 'Du må opppgi minst en mottakeradresse.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feil: Følgende mottakeradresse feilet: '; -$PHPMAILER_LANG['signing'] = 'Signering Feil: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP connect() feilet.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP server feil: '; -$PHPMAILER_LANG['variable_set'] = 'Kan ikke skrive eller omskrive variabel: '; -$PHPMAILER_LANG['extension_missing'] = 'Utvidelse mangler: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-nl.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-nl.php deleted file mode 100755 index c36d8b2112706be10ff61701414d64c96c459129..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-nl.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Dutch PHPMailer language file: refer to PHPMailer.php for definitive list. - * @package PHPMailer - * @author Tuxion <team@tuxion.nl> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP-fout: authenticatie mislukt.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP-fout: kon niet verbinden met SMTP-host.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-fout: data niet geaccepteerd.'; -$PHPMAILER_LANG['empty_message'] = 'Berichttekst is leeg'; -$PHPMAILER_LANG['encoding'] = 'Onbekende codering: '; -$PHPMAILER_LANG['execute'] = 'Kon niet uitvoeren: '; -$PHPMAILER_LANG['file_access'] = 'Kreeg geen toegang tot bestand: '; -$PHPMAILER_LANG['file_open'] = 'Bestandsfout: kon bestand niet openen: '; -$PHPMAILER_LANG['from_failed'] = 'Het volgende afzendersadres is mislukt: '; -$PHPMAILER_LANG['instantiate'] = 'Kon mailfunctie niet initialiseren.'; -$PHPMAILER_LANG['invalid_address'] = 'Ongeldig adres: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wordt niet ondersteund.'; -$PHPMAILER_LANG['provide_address'] = 'Er moet minstens één ontvanger worden opgegeven.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP-fout: de volgende ontvangers zijn mislukt: '; -$PHPMAILER_LANG['signing'] = 'Signeerfout: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Verbinding mislukt.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP-serverfout: '; -$PHPMAILER_LANG['variable_set'] = 'Kan de volgende variabele niet instellen of resetten: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-pl.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-pl.php deleted file mode 100755 index 3da0dee91f1d0a1f1d0e2972f8d710be67e72208..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-pl.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Polish PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - */ - -$PHPMAILER_LANG['authenticate'] = 'Błąd SMTP: Nie można przeprowadzić uwierzytelnienia.'; -$PHPMAILER_LANG['connect_host'] = 'Błąd SMTP: Nie można połączyć się z wybranym hostem.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Błąd SMTP: Dane nie zostały przyjęte.'; -$PHPMAILER_LANG['empty_message'] = 'Wiadomość jest pusta.'; -$PHPMAILER_LANG['encoding'] = 'Nieznany sposób kodowania znaków: '; -$PHPMAILER_LANG['execute'] = 'Nie można uruchomić: '; -$PHPMAILER_LANG['file_access'] = 'Brak dostępu do pliku: '; -$PHPMAILER_LANG['file_open'] = 'Nie można otworzyć pliku: '; -$PHPMAILER_LANG['from_failed'] = 'Następujący adres Nadawcy jest nieprawidłowy: '; -$PHPMAILER_LANG['instantiate'] = 'Nie można wywołać funkcji mail(). Sprawdź konfigurację serwera.'; -$PHPMAILER_LANG['invalid_address'] = 'Nie można wysłać wiadomości, '. - 'następujący adres Odbiorcy jest nieprawidłowy: '; -$PHPMAILER_LANG['provide_address'] = 'Należy podać prawidłowy adres email Odbiorcy.'; -$PHPMAILER_LANG['mailer_not_supported'] = 'Wybrana metoda wysyłki wiadomości nie jest obsługiwana.'; -$PHPMAILER_LANG['recipients_failed'] = 'Błąd SMTP: Następujący odbiorcy są nieprawidłowi: '; -$PHPMAILER_LANG['signing'] = 'Błąd podpisywania wiadomości: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zakończone niepowodzeniem.'; -$PHPMAILER_LANG['smtp_error'] = 'Błąd SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Nie można ustawić lub zmodyfikować zmiennej: '; -$PHPMAILER_LANG['extension_missing'] = 'Brakujące rozszerzenie: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-pt.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-pt.php deleted file mode 100755 index f365d5d0b4beb0d465574aabfe580062ccef6781..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-pt.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Portuguese (European) PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Jonadabe <jonadabe@hotmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'Erro do SMTP: Não foi possível realizar a autenticação.'; -$PHPMAILER_LANG['connect_host'] = 'Erro do SMTP: Não foi possível realizar ligação com o servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erro do SMTP: Os dados foram rejeitados.'; -$PHPMAILER_LANG['empty_message'] = 'A mensagem no e-mail está vazia.'; -$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: '; -$PHPMAILER_LANG['execute'] = 'Não foi possível executar: '; -$PHPMAILER_LANG['file_access'] = 'Não foi possível aceder o ficheiro: '; -$PHPMAILER_LANG['file_open'] = 'Abertura do ficheiro: Não foi possível abrir o ficheiro: '; -$PHPMAILER_LANG['from_failed'] = 'Ocorreram falhas nos endereços dos seguintes remententes: '; -$PHPMAILER_LANG['instantiate'] = 'Não foi possível iniciar uma instância da função mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Não foi enviado nenhum e-mail para o endereço de e-mail inválido: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.'; -$PHPMAILER_LANG['provide_address'] = 'Tem de fornecer pelo menos um endereço como destinatário do e-mail.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erro do SMTP: O endereço do seguinte destinatário falhou: '; -$PHPMAILER_LANG['signing'] = 'Erro ao assinar: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.'; -$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensão em falta: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-pt_br.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-pt_br.php deleted file mode 100755 index 4ec10f777ee37f4e2d012684236be8f9822b35a2..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-pt_br.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -/** - * Brazilian Portuguese PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Paulo Henrique Garcia <paulo@controllerweb.com.br> - * @author Lucas Guimarães <lucas@lucasguimaraes.com> - * @author Phelipe Alves <phelipealvesdesouza@gmail.com> - * @author Fabio Beneditto <fabiobeneditto@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'Erro de SMTP: Não foi possível autenticar.'; -$PHPMAILER_LANG['connect_host'] = 'Erro de SMTP: Não foi possível conectar ao servidor SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Erro de SMTP: Dados rejeitados.'; -$PHPMAILER_LANG['empty_message'] = 'Mensagem vazia'; -$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: '; -$PHPMAILER_LANG['execute'] = 'Não foi possível executar: '; -$PHPMAILER_LANG['file_access'] = 'Não foi possível acessar o arquivo: '; -$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: Não foi possível abrir o arquivo: '; -$PHPMAILER_LANG['from_failed'] = 'Os seguintes remetentes falharam: '; -$PHPMAILER_LANG['instantiate'] = 'Não foi possível instanciar a função mail.'; -$PHPMAILER_LANG['invalid_address'] = 'Endereço de e-mail inválido: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.'; -$PHPMAILER_LANG['provide_address'] = 'Você deve informar pelo menos um destinatário.'; -$PHPMAILER_LANG['recipients_failed'] = 'Erro de SMTP: Os seguintes destinatários falharam: '; -$PHPMAILER_LANG['signing'] = 'Erro de Assinatura: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.'; -$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: '; -$PHPMAILER_LANG['extension_missing'] = 'Extensão ausente: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ro.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ro.php deleted file mode 100755 index fa100eaa207625bcfe273129663386924b357c64..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ro.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Romanian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Alex Florea <alecz.fia@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'Eroare SMTP: Autentificarea a eșuat.'; -$PHPMAILER_LANG['connect_host'] = 'Eroare SMTP: Conectarea la serverul SMTP a eșuat.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Eroare SMTP: Datele nu au fost acceptate.'; -$PHPMAILER_LANG['empty_message'] = 'Mesajul este gol.'; -$PHPMAILER_LANG['encoding'] = 'Encodare necunoscută: '; -$PHPMAILER_LANG['execute'] = 'Nu se poate executa următoarea comandă: '; -$PHPMAILER_LANG['file_access'] = 'Nu se poate accesa următorul fișier: '; -$PHPMAILER_LANG['file_open'] = 'Eroare fișier: Nu se poate deschide următorul fișier: '; -$PHPMAILER_LANG['from_failed'] = 'Următoarele adrese From au dat eroare: '; -$PHPMAILER_LANG['instantiate'] = 'Funcția mail nu a putut fi inițializată.'; -$PHPMAILER_LANG['invalid_address'] = 'Adresa de email nu este validă: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.'; -$PHPMAILER_LANG['provide_address'] = 'Trebuie să adăugați cel puțin o adresă de email.'; -$PHPMAILER_LANG['recipients_failed'] = 'Eroare SMTP: Următoarele adrese de email au eșuat: '; -$PHPMAILER_LANG['signing'] = 'A aparut o problemă la semnarea emailului. '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Conectarea la serverul SMTP a eșuat.'; -$PHPMAILER_LANG['smtp_error'] = 'Eroare server SMTP: '; -$PHPMAILER_LANG['variable_set'] = 'Nu se poate seta/reseta variabila. '; -$PHPMAILER_LANG['extension_missing'] = 'Lipsește extensia: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-rs.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-rs.php deleted file mode 100755 index 0502f02143573017d72a3e3667900572482502ed..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-rs.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Serbian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Александар Јевремовић <ajevremovic@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: аутентификација није успела.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: није могуће повезивање са SMTP сервером.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: подаци нису прихваћени.'; -$PHPMAILER_LANG['empty_message'] = 'Садржај поруке је празан.'; -$PHPMAILER_LANG['encoding'] = 'Непознато кодовање: '; -$PHPMAILER_LANG['execute'] = 'Није могуће извршити наредбу: '; -$PHPMAILER_LANG['file_access'] = 'Није могуће приступити датотеци: '; -$PHPMAILER_LANG['file_open'] = 'Није могуће отворити датотеку: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP грешка: слање са следећих адреса није успело: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: слање на следеће адресе није успело: '; -$PHPMAILER_LANG['instantiate'] = 'Није могуће покренути mail функцију.'; -$PHPMAILER_LANG['invalid_address'] = 'Порука није послата због неисправне адресе: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' мејлер није подржан.'; -$PHPMAILER_LANG['provide_address'] = 'Потребно је задати најмање једну адресу.'; -$PHPMAILER_LANG['signing'] = 'Грешка приликом пријављивања: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Повезивање са SMTP сервером није успело.'; -$PHPMAILER_LANG['smtp_error'] = 'Грешка SMTP сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Није могуће задати променљиву, нити је вратити уназад: '; -$PHPMAILER_LANG['extension_missing'] = 'Недостаје проширење: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ru.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ru.php deleted file mode 100755 index 4066f6b451c86a82813106a0fb806ff0d1be3119..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-ru.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Russian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Alexey Chumakov <alex@chumakov.ru> - * @author Foster Snowhill <i18n@forstwoof.ru> - */ - -$PHPMAILER_LANG['authenticate'] = 'Ошибка SMTP: ошибка авторизации.'; -$PHPMAILER_LANG['connect_host'] = 'Ошибка SMTP: не удается подключиться к серверу SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Ошибка SMTP: данные не приняты.'; -$PHPMAILER_LANG['encoding'] = 'Неизвестный вид кодировки: '; -$PHPMAILER_LANG['execute'] = 'Невозможно выполнить команду: '; -$PHPMAILER_LANG['file_access'] = 'Нет доступа к файлу: '; -$PHPMAILER_LANG['file_open'] = 'Файловая ошибка: не удается открыть файл: '; -$PHPMAILER_LANG['from_failed'] = 'Неверный адрес отправителя: '; -$PHPMAILER_LANG['instantiate'] = 'Невозможно запустить функцию mail.'; -$PHPMAILER_LANG['provide_address'] = 'Пожалуйста, введите хотя бы один адрес e-mail получателя.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.'; -$PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: отправка по следующим адресам получателей не удалась: '; -$PHPMAILER_LANG['empty_message'] = 'Пустое сообщение'; -$PHPMAILER_LANG['invalid_address'] = 'Не отослано, неправильный формат email адреса: '; -$PHPMAILER_LANG['signing'] = 'Ошибка подписи: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ошибка соединения с SMTP-сервером'; -$PHPMAILER_LANG['smtp_error'] = 'Ошибка SMTP-сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Невозможно установить или переустановить переменную: '; -$PHPMAILER_LANG['extension_missing'] = 'Расширение отсутствует: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sk.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sk.php deleted file mode 100755 index a38f4e52cf2672582df1994d4e772691920436ff..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sk.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Slovak PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Michal Tinka <michaltinka@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Chyba autentifikácie.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Nebolo možné nadviazať spojenie so SMTP serverom.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Dáta neboli prijaté'; -$PHPMAILER_LANG['empty_message'] = 'Prázdne telo správy.'; -$PHPMAILER_LANG['encoding'] = 'Neznáme kódovanie: '; -$PHPMAILER_LANG['execute'] = 'Nedá sa vykonať: '; -$PHPMAILER_LANG['file_access'] = 'Súbor nebol nájdený: '; -$PHPMAILER_LANG['file_open'] = 'File Error: Súbor sa otvoriť pre čítanie: '; -$PHPMAILER_LANG['from_failed'] = 'Následujúca adresa From je nesprávna: '; -$PHPMAILER_LANG['instantiate'] = 'Nedá sa vytvoriť inštancia emailovej funkcie.'; -$PHPMAILER_LANG['invalid_address'] = 'Neodoslané, emailová adresa je nesprávna: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' emailový klient nieje podporovaný.'; -$PHPMAILER_LANG['provide_address'] = 'Musíte zadať aspoň jednu emailovú adresu príjemcu.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Adresy príjemcov niesu správne '; -$PHPMAILER_LANG['signing'] = 'Chyba prihlasovania: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zlyhalo.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP chyba serveru: '; -$PHPMAILER_LANG['variable_set'] = 'Nemožno nastaviť alebo resetovať premennú: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sl.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sl.php deleted file mode 100755 index 54c9572506a14067bccdadc323d3c70fe61b2783..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sl.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Slovene PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Klemen Tušar <techouse@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP napaka: Ne morem vzpostaviti povezave s SMTP gostiteljem.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP napaka: Strežnik zavrača podatke.'; -$PHPMAILER_LANG['empty_message'] = 'E-poštno sporočilo nima vsebine.'; -$PHPMAILER_LANG['encoding'] = 'Nepoznan tip kodiranja: '; -$PHPMAILER_LANG['execute'] = 'Operacija ni uspela: '; -$PHPMAILER_LANG['file_access'] = 'Nimam dostopa do datoteke: '; -$PHPMAILER_LANG['file_open'] = 'Ne morem odpreti datoteke: '; -$PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: '; -$PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.'; -$PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.'; -$PHPMAILER_LANG['provide_address'] = 'Prosim vnesite vsaj enega naslovnika.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: '; -$PHPMAILER_LANG['signing'] = 'Napaka pri podpisovanju: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Ne morem vzpostaviti povezave s SMTP strežnikom.'; -$PHPMAILER_LANG['smtp_error'] = 'Napaka SMTP strežnika: '; -$PHPMAILER_LANG['variable_set'] = 'Ne morem nastaviti oz. ponastaviti spremenljivke: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sr.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sr.php deleted file mode 100755 index ed95ca6ea03b17f9138d8b40b8b406b6241eb6cf..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sr.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Serbian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Александар Јевремовић <ajevremovic@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP грешка: аутентификација није успела.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP грешка: није могуће повезивање са SMTP сервером.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP грешка: подаци нису прихваћени.'; -$PHPMAILER_LANG['empty_message'] = 'Садржај поруке је празан.'; -$PHPMAILER_LANG['encoding'] = 'Непознато кодовање: '; -$PHPMAILER_LANG['execute'] = 'Није могуће извршити наредбу: '; -$PHPMAILER_LANG['file_access'] = 'Није могуће приступити датотеци: '; -$PHPMAILER_LANG['file_open'] = 'Није могуће отворити датотеку: '; -$PHPMAILER_LANG['from_failed'] = 'SMTP грешка: слање са следећих адреса није успело: '; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP грешка: слање на следеће адресе није успело: '; -$PHPMAILER_LANG['instantiate'] = 'Није могуће покренути mail функцију.'; -$PHPMAILER_LANG['invalid_address'] = 'Порука није послата због неисправне адресе: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' мејлер није подржан.'; -$PHPMAILER_LANG['provide_address'] = 'Потребно је задати најмање једну адресу.'; -$PHPMAILER_LANG['signing'] = 'Грешка приликом пријављивања: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Повезивање са SMTP сервером није успело.'; -$PHPMAILER_LANG['smtp_error'] = 'Грешка SMTP сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Није могуће задати променљиву, нити је вратити уназад: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sv.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sv.php deleted file mode 100755 index 4408e63eb0e6622b2f22abe20068c3870fa7dbbc..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-sv.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Swedish PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Johan Linnér <johan@linner.biz> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP fel: Kunde inte autentisera.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP fel: Kunde inte ansluta till SMTP-server.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fel: Data accepterades inte.'; -//$PHPMAILER_LANG['empty_message'] = 'Message body empty'; -$PHPMAILER_LANG['encoding'] = 'Okänt encode-format: '; -$PHPMAILER_LANG['execute'] = 'Kunde inte köra: '; -$PHPMAILER_LANG['file_access'] = 'Ingen åtkomst till fil: '; -$PHPMAILER_LANG['file_open'] = 'Fil fel: Kunde inte öppna fil: '; -$PHPMAILER_LANG['from_failed'] = 'Följande avsändaradress är felaktig: '; -$PHPMAILER_LANG['instantiate'] = 'Kunde inte initiera e-postfunktion.'; -$PHPMAILER_LANG['invalid_address'] = 'Felaktig adress: '; -$PHPMAILER_LANG['provide_address'] = 'Du måste ange minst en mottagares e-postadress.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP fel: Följande mottagare är felaktig: '; -$PHPMAILER_LANG['signing'] = 'Signerings fel: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() misslyckades.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP server fel: '; -$PHPMAILER_LANG['variable_set'] = 'Kunde inte definiera eller återställa variabel: '; -$PHPMAILER_LANG['extension_missing'] = 'Tillägg ej tillgängligt: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-tr.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-tr.php deleted file mode 100755 index cfe8eaae24c48e78c2710e9b0ae0450a6b3a97ed..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-tr.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -/** - * Turkish PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Elçin Özel - * @author Can Yılmaz - * @author Mehmet Benlioğlu - * @author @yasinaydin - * @author Ogün Karakuş - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP Hatası: Oturum açılamadı.'; -$PHPMAILER_LANG['connect_host'] = 'SMTP Hatası: SMTP sunucusuna bağlanılamadı.'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Hatası: Veri kabul edilmedi.'; -$PHPMAILER_LANG['empty_message'] = 'Mesajın içeriği boş'; -$PHPMAILER_LANG['encoding'] = 'Bilinmeyen karakter kodlama: '; -$PHPMAILER_LANG['execute'] = 'Çalıştırılamadı: '; -$PHPMAILER_LANG['file_access'] = 'Dosyaya erişilemedi: '; -$PHPMAILER_LANG['file_open'] = 'Dosya Hatası: Dosya açılamadı: '; -$PHPMAILER_LANG['from_failed'] = 'Belirtilen adreslere gönderme başarısız: '; -$PHPMAILER_LANG['instantiate'] = 'Örnek e-posta fonksiyonu oluşturulamadı.'; -$PHPMAILER_LANG['invalid_address'] = 'Geçersiz e-posta adresi: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' e-posta kütüphanesi desteklenmiyor.'; -$PHPMAILER_LANG['provide_address'] = 'En az bir alıcı e-posta adresi belirtmelisiniz.'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP Hatası: Belirtilen alıcılara ulaşılamadı: '; -$PHPMAILER_LANG['signing'] = 'İmzalama hatası: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP connect() fonksiyonu başarısız.'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP sunucu hatası: '; -$PHPMAILER_LANG['variable_set'] = 'Değişken ayarlanamadı ya da sıfırlanamadı: '; -$PHPMAILER_LANG['extension_missing'] = 'Eklenti bulunamadı: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-uk.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-uk.php deleted file mode 100755 index 9a7b34674e4b688a950652f5c0d696821e940438..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-uk.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * Ukrainian PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author Yuriy Rudyy <yrudyy@prs.net.ua> - * @fixed by Boris Yurchenko <boris@yurchenko.pp.ua> - */ - -$PHPMAILER_LANG['authenticate'] = 'Помилка SMTP: помилка авторизації.'; -$PHPMAILER_LANG['connect_host'] = 'Помилка SMTP: не вдається під\'єднатися до серверу SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Помилка SMTP: дані не прийняті.'; -$PHPMAILER_LANG['encoding'] = 'Невідомий тип кодування: '; -$PHPMAILER_LANG['execute'] = 'Неможливо виконати команду: '; -$PHPMAILER_LANG['file_access'] = 'Немає доступу до файлу: '; -$PHPMAILER_LANG['file_open'] = 'Помилка файлової системи: не вдається відкрити файл: '; -$PHPMAILER_LANG['from_failed'] = 'Невірна адреса відправника: '; -$PHPMAILER_LANG['instantiate'] = 'Неможливо запустити функцію mail.'; -$PHPMAILER_LANG['provide_address'] = 'Будь-ласка, введіть хоча б одну адресу e-mail отримувача.'; -$PHPMAILER_LANG['mailer_not_supported'] = ' - поштовий сервер не підтримується.'; -$PHPMAILER_LANG['recipients_failed'] = 'Помилка SMTP: відправлення наступним отримувачам не вдалося: '; -$PHPMAILER_LANG['empty_message'] = 'Пусте тіло повідомлення'; -$PHPMAILER_LANG['invalid_address'] = 'Не відправлено, невірний формат адреси e-mail: '; -$PHPMAILER_LANG['signing'] = 'Помилка підпису: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Помилка з\'єднання із SMTP-сервером'; -$PHPMAILER_LANG['smtp_error'] = 'Помилка SMTP-сервера: '; -$PHPMAILER_LANG['variable_set'] = 'Неможливо встановити або перевстановити змінну: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-vi.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-vi.php deleted file mode 100755 index c60dadebdb34d0a0e860c8f63704ea9fc12633f2..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-vi.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * Vietnamese (Tiếng Việt) PHPMailer language file: refer to English translation for definitive list. - * @package PHPMailer - * @author VINADES.,JSC <contact@vinades.vn> - */ - -$PHPMAILER_LANG['authenticate'] = 'Lỗi SMTP: Không thể xác thực.'; -$PHPMAILER_LANG['connect_host'] = 'Lỗi SMTP: Không thể kết nối máy chủ SMTP.'; -$PHPMAILER_LANG['data_not_accepted'] = 'Lỗi SMTP: Dữ liệu không được chấp nhận.'; -$PHPMAILER_LANG['empty_message'] = 'Không có nội dung'; -$PHPMAILER_LANG['encoding'] = 'Mã hóa không xác định: '; -$PHPMAILER_LANG['execute'] = 'Không thực hiện được: '; -$PHPMAILER_LANG['file_access'] = 'Không thể truy cập tệp tin '; -$PHPMAILER_LANG['file_open'] = 'Lỗi Tập tin: Không thể mở tệp tin: '; -$PHPMAILER_LANG['from_failed'] = 'Lỗi địa chỉ gửi đi: '; -$PHPMAILER_LANG['instantiate'] = 'Không dùng được các hàm gửi thư.'; -$PHPMAILER_LANG['invalid_address'] = 'Đại chỉ emai không đúng: '; -$PHPMAILER_LANG['mailer_not_supported'] = ' trình gửi thư không được hỗ trợ.'; -$PHPMAILER_LANG['provide_address'] = 'Bạn phải cung cấp ít nhất một địa chỉ người nhận.'; -$PHPMAILER_LANG['recipients_failed'] = 'Lỗi SMTP: lỗi địa chỉ người nhận: '; -$PHPMAILER_LANG['signing'] = 'Lỗi đăng nhập: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'Lỗi kết nối với SMTP'; -$PHPMAILER_LANG['smtp_error'] = 'Lỗi máy chủ smtp '; -$PHPMAILER_LANG['variable_set'] = 'Không thể thiết lập hoặc thiết lập lại biến: '; -//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-zh.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-zh.php deleted file mode 100755 index 3e9e358ceb554cc3151006ef15dcf940b335db89..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-zh.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php -/** - * Traditional Chinese PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author liqwei <liqwei@liqwei.com> - * @author Peter Dave Hello <@PeterDaveHello/> - * @author Jason Chiang <xcojad@gmail.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP 錯誤:登入失敗。'; -$PHPMAILER_LANG['connect_host'] = 'SMTP 錯誤:無法連線到 SMTP 主機。'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 錯誤:無法接受的資料。'; -$PHPMAILER_LANG['empty_message'] = '郵件內容為空'; -$PHPMAILER_LANG['encoding'] = '未知編碼: '; -$PHPMAILER_LANG['execute'] = '無法執行:'; -$PHPMAILER_LANG['file_access'] = '無法存取檔案:'; -$PHPMAILER_LANG['file_open'] = '檔案錯誤:無法開啟檔案:'; -$PHPMAILER_LANG['from_failed'] = '發送地址錯誤:'; -$PHPMAILER_LANG['instantiate'] = '未知函數呼叫。'; -$PHPMAILER_LANG['invalid_address'] = '因為電子郵件地址無效,無法傳送: '; -$PHPMAILER_LANG['mailer_not_supported'] = '不支援的發信客戶端。'; -$PHPMAILER_LANG['provide_address'] = '必須提供至少一個收件人地址。'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP 錯誤:以下收件人地址錯誤:'; -$PHPMAILER_LANG['signing'] = '電子簽章錯誤: '; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP 連線失敗'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP 伺服器錯誤: '; -$PHPMAILER_LANG['variable_set'] = '無法設定或重設變數: '; -$PHPMAILER_LANG['extension_missing'] = '遺失模組 Extension: '; diff --git a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-zh_cn.php b/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-zh_cn.php deleted file mode 100755 index 37537802aa71c8b7c95bf936a59bdbbfd7cdd689..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/language/phpmailer.lang-zh_cn.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php -/** - * Simplified Chinese PHPMailer language file: refer to English translation for definitive list - * @package PHPMailer - * @author liqwei <liqwei@liqwei.com> - * @author young <masxy@foxmail.com> - * @author Teddysun <i@teddysun.com> - */ - -$PHPMAILER_LANG['authenticate'] = 'SMTP 错误:登录失败。'; -$PHPMAILER_LANG['connect_host'] = 'SMTP 错误:无法连接到 SMTP 主机。'; -$PHPMAILER_LANG['data_not_accepted'] = 'SMTP 错误:数据不被接受。'; -$PHPMAILER_LANG['empty_message'] = '邮件正文为空。'; -$PHPMAILER_LANG['encoding'] = '未知编码:'; -$PHPMAILER_LANG['execute'] = '无法执行:'; -$PHPMAILER_LANG['file_access'] = '无法访问文件:'; -$PHPMAILER_LANG['file_open'] = '文件错误:无法打开文件:'; -$PHPMAILER_LANG['from_failed'] = '发送地址错误:'; -$PHPMAILER_LANG['instantiate'] = '未知函数调用。'; -$PHPMAILER_LANG['invalid_address'] = '发送失败,电子邮箱地址是无效的:'; -$PHPMAILER_LANG['mailer_not_supported'] = '发信客户端不被支持。'; -$PHPMAILER_LANG['provide_address'] = '必须提供至少一个收件人地址。'; -$PHPMAILER_LANG['recipients_failed'] = 'SMTP 错误:收件人地址错误:'; -$PHPMAILER_LANG['signing'] = '登录失败:'; -$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP服务器连接失败。'; -$PHPMAILER_LANG['smtp_error'] = 'SMTP服务器出错:'; -$PHPMAILER_LANG['variable_set'] = '无法设置或重置变量:'; -$PHPMAILER_LANG['extension_missing'] = '丢失模块 Extension:'; diff --git a/src/vitis/vas/rest/class/PHPMailer/src/Exception.php b/src/vitis/vas/rest/class/PHPMailer/src/Exception.php deleted file mode 100755 index 9a05dec3ca869c06256c9bc66f2c82ac48b272aa..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/src/Exception.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php -/** - * PHPMailer Exception class. - * PHP Version 5.5. - * - * @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project - * - * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> - * @author Jim Jagielski (jimjag) <jimjag@gmail.com> - * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * PHPMailer exception handler. - * - * @author Marcus Bointon <phpmailer@synchromedia.co.uk> - */ -class Exception extends \Exception -{ - /** - * Prettify error message output. - * - * @return string - */ - public function errorMessage() - { - return '<strong>' . htmlspecialchars($this->getMessage()) . "</strong><br />\n"; - } -} diff --git a/src/vitis/vas/rest/class/PHPMailer/src/OAuth.php b/src/vitis/vas/rest/class/PHPMailer/src/OAuth.php deleted file mode 100755 index 0bce7e3468c69c458b110178c0988490d747176d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/src/OAuth.php +++ /dev/null @@ -1,138 +0,0 @@ -<?php -/** - * PHPMailer - PHP email creation and transport class. - * PHP Version 5.5. - * - * @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project - * - * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> - * @author Jim Jagielski (jimjag) <jimjag@gmail.com> - * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2015 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -use League\OAuth2\Client\Grant\RefreshToken; -use League\OAuth2\Client\Provider\AbstractProvider; -use League\OAuth2\Client\Token\AccessToken; - -/** - * OAuth - OAuth2 authentication wrapper class. - * Uses the oauth2-client package from the League of Extraordinary Packages. - * - * @see http://oauth2-client.thephpleague.com - * - * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> - */ -class OAuth -{ - /** - * An instance of the League OAuth Client Provider. - * - * @var AbstractProvider - */ - protected $provider; - - /** - * The current OAuth access token. - * - * @var AccessToken - */ - protected $oauthToken; - - /** - * The user's email address, usually used as the login ID - * and also the from address when sending email. - * - * @var string - */ - protected $oauthUserEmail = ''; - - /** - * The client secret, generated in the app definition of the service you're connecting to. - * - * @var string - */ - protected $oauthClientSecret = ''; - - /** - * The client ID, generated in the app definition of the service you're connecting to. - * - * @var string - */ - protected $oauthClientId = ''; - - /** - * The refresh token, used to obtain new AccessTokens. - * - * @var string - */ - protected $oauthRefreshToken = ''; - - /** - * OAuth constructor. - * - * @param array $options Associative array containing - * `provider`, `userName`, `clientSecret`, `clientId` and `refreshToken` elements - */ - public function __construct($options) - { - $this->provider = $options['provider']; - $this->oauthUserEmail = $options['userName']; - $this->oauthClientSecret = $options['clientSecret']; - $this->oauthClientId = $options['clientId']; - $this->oauthRefreshToken = $options['refreshToken']; - } - - /** - * Get a new RefreshToken. - * - * @return RefreshToken - */ - protected function getGrant() - { - return new RefreshToken(); - } - - /** - * Get a new AccessToken. - * - * @return AccessToken - */ - protected function getToken() - { - return $this->provider->getAccessToken( - $this->getGrant(), - ['refresh_token' => $this->oauthRefreshToken] - ); - } - - /** - * Generate a base64-encoded OAuth token. - * - * @return string - */ - public function getOauth64() - { - // Get a new token if it's not available or has expired - if (null === $this->oauthToken or $this->oauthToken->hasExpired()) { - $this->oauthToken = $this->getToken(); - } - - return base64_encode( - 'user=' . - $this->oauthUserEmail . - "\001auth=Bearer " . - $this->oauthToken . - "\001\001" - ); - } -} diff --git a/src/vitis/vas/rest/class/PHPMailer/src/PHPMailer.php b/src/vitis/vas/rest/class/PHPMailer/src/PHPMailer.php deleted file mode 100755 index eb12b17120467f7fd3ee50b13efa3da433240492..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/src/PHPMailer.php +++ /dev/null @@ -1,4420 +0,0 @@ -<?php -/** - * PHPMailer - PHP email creation and transport class. - * PHP Version 5.5. - * - * @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project - * - * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> - * @author Jim Jagielski (jimjag) <jimjag@gmail.com> - * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * PHPMailer - PHP email creation and transport class. - * - * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> - * @author Jim Jagielski (jimjag) <jimjag@gmail.com> - * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> - * @author Brent R. Matzelle (original founder) - */ -class PHPMailer -{ - /** - * Email priority. - * Options: null (default), 1 = High, 3 = Normal, 5 = low. - * When null, the header is not set at all. - * - * @var int - */ - public $Priority; - - /** - * The character set of the message. - * - * @var string - */ - public $CharSet = 'iso-8859-1'; - - /** - * The MIME Content-type of the message. - * - * @var string - */ - public $ContentType = 'text/plain'; - - /** - * The message encoding. - * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable". - * - * @var string - */ - public $Encoding = '8bit'; - - /** - * Holds the most recent mailer error message. - * - * @var string - */ - public $ErrorInfo = ''; - - /** - * The From email address for the message. - * - * @var string - */ - public $From = 'root@localhost'; - - /** - * The From name of the message. - * - * @var string - */ - public $FromName = 'Root User'; - - /** - * The envelope sender of the message. - * This will usually be turned into a Return-Path header by the receiver, - * and is the address that bounces will be sent to. - * If not empty, will be passed via `-f` to sendmail or as the 'MAIL FROM' value over SMTP. - * - * @var string - */ - public $Sender = ''; - - /** - * The Subject of the message. - * - * @var string - */ - public $Subject = ''; - - /** - * An HTML or plain text message body. - * If HTML then call isHTML(true). - * - * @var string - */ - public $Body = ''; - - /** - * The plain-text message body. - * This body can be read by mail clients that do not have HTML email - * capability such as mutt & Eudora. - * Clients that can read HTML will view the normal Body. - * - * @var string - */ - public $AltBody = ''; - - /** - * An iCal message part body. - * Only supported in simple alt or alt_inline message types - * To generate iCal event structures, use classes like EasyPeasyICS or iCalcreator. - * - * @see http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/ - * @see http://kigkonsult.se/iCalcreator/ - * - * @var string - */ - public $Ical = ''; - - /** - * The complete compiled MIME message body. - * - * @var string - */ - protected $MIMEBody = ''; - - /** - * The complete compiled MIME message headers. - * - * @var string - */ - protected $MIMEHeader = ''; - - /** - * Extra headers that createHeader() doesn't fold in. - * - * @var string - */ - protected $mailHeader = ''; - - /** - * Word-wrap the message body to this number of chars. - * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance. - * - * @see static::STD_LINE_LENGTH - * - * @var int - */ - public $WordWrap = 0; - - /** - * Which method to use to send mail. - * Options: "mail", "sendmail", or "smtp". - * - * @var string - */ - public $Mailer = 'mail'; - - /** - * The path to the sendmail program. - * - * @var string - */ - public $Sendmail = '/usr/sbin/sendmail'; - - /** - * Whether mail() uses a fully sendmail-compatible MTA. - * One which supports sendmail's "-oi -f" options. - * - * @var bool - */ - public $UseSendmailOptions = true; - - /** - * The email address that a reading confirmation should be sent to, also known as read receipt. - * - * @var string - */ - public $ConfirmReadingTo = ''; - - /** - * The hostname to use in the Message-ID header and as default HELO string. - * If empty, PHPMailer attempts to find one with, in order, - * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value - * 'localhost.localdomain'. - * - * @var string - */ - public $Hostname = ''; - - /** - * An ID to be used in the Message-ID header. - * If empty, a unique id will be generated. - * You can set your own, but it must be in the format "<id@domain>", - * as defined in RFC5322 section 3.6.4 or it will be ignored. - * - * @see https://tools.ietf.org/html/rfc5322#section-3.6.4 - * - * @var string - */ - public $MessageID = ''; - - /** - * The message Date to be used in the Date header. - * If empty, the current date will be added. - * - * @var string - */ - public $MessageDate = ''; - - /** - * SMTP hosts. - * Either a single hostname or multiple semicolon-delimited hostnames. - * You can also specify a different port - * for each host by using this format: [hostname:port] - * (e.g. "smtp1.example.com:25;smtp2.example.com"). - * You can also specify encryption type, for example: - * (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465"). - * Hosts will be tried in order. - * - * @var string - */ - public $Host = 'localhost'; - - /** - * The default SMTP server port. - * - * @var int - */ - public $Port = 25; - - /** - * The SMTP HELO of the message. - * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find - * one with the same method described above for $Hostname. - * - * @see PHPMailer::$Hostname - * - * @var string - */ - public $Helo = ''; - - /** - * What kind of encryption to use on the SMTP connection. - * Options: '', 'ssl' or 'tls'. - * - * @var string - */ - public $SMTPSecure = ''; - - /** - * Whether to enable TLS encryption automatically if a server supports it, - * even if `SMTPSecure` is not set to 'tls'. - * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid. - * - * @var bool - */ - public $SMTPAutoTLS = true; - - /** - * Whether to use SMTP authentication. - * Uses the Username and Password properties. - * - * @see PHPMailer::$Username - * @see PHPMailer::$Password - * - * @var bool - */ - public $SMTPAuth = false; - - /** - * Options array passed to stream_context_create when connecting via SMTP. - * - * @var array - */ - public $SMTPOptions = []; - - /** - * SMTP username. - * - * @var string - */ - public $Username = ''; - - /** - * SMTP password. - * - * @var string - */ - public $Password = ''; - - /** - * SMTP auth type. - * Options are CRAM-MD5, LOGIN, PLAIN, XOAUTH2, attempted in that order if not specified. - * - * @var string - */ - public $AuthType = ''; - - /** - * An instance of the PHPMailer OAuth class. - * - * @var OAuth - */ - protected $oauth; - - /** - * The SMTP server timeout in seconds. - * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2. - * - * @var int - */ - public $Timeout = 300; - - /** - * SMTP class debug output mode. - * Debug output level. - * Options: - * * `0` No output - * * `1` Commands - * * `2` Data and commands - * * `3` As 2 plus connection status - * * `4` Low-level data output. - * - * @see SMTP::$do_debug - * - * @var int - */ - public $SMTPDebug = 0; - - /** - * How to handle debug output. - * Options: - * * `echo` Output plain-text as-is, appropriate for CLI - * * `html` Output escaped, line breaks converted to `<br>`, appropriate for browser output - * * `error_log` Output to error log as configured in php.ini - * By default PHPMailer will use `echo` if run from a `cli` or `cli-server` SAPI, `html` otherwise. - * Alternatively, you can provide a callable expecting two params: a message string and the debug level: - * - * ```php - * $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; - * ``` - * - * Alternatively, you can pass in an instance of a PSR-3 compatible logger, though only `debug` - * level output is used: - * - * ```php - * $mail->Debugoutput = new myPsr3Logger; - * ``` - * - * @see SMTP::$Debugoutput - * - * @var string|callable|\Psr\Log\LoggerInterface - */ - public $Debugoutput = 'echo'; - - /** - * Whether to keep SMTP connection open after each message. - * If this is set to true then to close the connection - * requires an explicit call to smtpClose(). - * - * @var bool - */ - public $SMTPKeepAlive = false; - - /** - * Whether to split multiple to addresses into multiple messages - * or send them all in one message. - * Only supported in `mail` and `sendmail` transports, not in SMTP. - * - * @var bool - */ - public $SingleTo = false; - - /** - * Storage for addresses when SingleTo is enabled. - * - * @var array - */ - protected $SingleToArray = []; - - /** - * Whether to generate VERP addresses on send. - * Only applicable when sending via SMTP. - * - * @see https://en.wikipedia.org/wiki/Variable_envelope_return_path - * @see http://www.postfix.org/VERP_README.html Postfix VERP info - * - * @var bool - */ - public $do_verp = false; - - /** - * Whether to allow sending messages with an empty body. - * - * @var bool - */ - public $AllowEmpty = false; - - /** - * DKIM selector. - * - * @var string - */ - public $DKIM_selector = ''; - - /** - * DKIM Identity. - * Usually the email address used as the source of the email. - * - * @var string - */ - public $DKIM_identity = ''; - - /** - * DKIM passphrase. - * Used if your key is encrypted. - * - * @var string - */ - public $DKIM_passphrase = ''; - - /** - * DKIM signing domain name. - * - * @example 'example.com' - * - * @var string - */ - public $DKIM_domain = ''; - - /** - * DKIM private key file path. - * - * @var string - */ - public $DKIM_private = ''; - - /** - * DKIM private key string. - * - * If set, takes precedence over `$DKIM_private`. - * - * @var string - */ - public $DKIM_private_string = ''; - - /** - * Callback Action function name. - * - * The function that handles the result of the send email action. - * It is called out by send() for each email sent. - * - * Value can be any php callable: http://www.php.net/is_callable - * - * Parameters: - * bool $result result of the send action - * array $to email addresses of the recipients - * array $cc cc email addresses - * array $bcc bcc email addresses - * string $subject the subject - * string $body the email body - * string $from email address of sender - * string $extra extra information of possible use - * "smtp_transaction_id' => last smtp transaction id - * - * @var string - */ - public $action_function = ''; - - /** - * What to put in the X-Mailer header. - * Options: An empty string for PHPMailer default, whitespace for none, or a string to use. - * - * @var string - */ - public $XMailer = ''; - - /** - * Which validator to use by default when validating email addresses. - * May be a callable to inject your own validator, but there are several built-in validators. - * The default validator uses PHP's FILTER_VALIDATE_EMAIL filter_var option. - * - * @see PHPMailer::validateAddress() - * - * @var string|callable - */ - public static $validator = 'php'; - - /** - * An instance of the SMTP sender class. - * - * @var SMTP - */ - protected $smtp; - - /** - * The array of 'to' names and addresses. - * - * @var array - */ - protected $to = []; - - /** - * The array of 'cc' names and addresses. - * - * @var array - */ - protected $cc = []; - - /** - * The array of 'bcc' names and addresses. - * - * @var array - */ - protected $bcc = []; - - /** - * The array of reply-to names and addresses. - * - * @var array - */ - protected $ReplyTo = []; - - /** - * An array of all kinds of addresses. - * Includes all of $to, $cc, $bcc. - * - * @see PHPMailer::$to - * @see PHPMailer::$cc - * @see PHPMailer::$bcc - * - * @var array - */ - protected $all_recipients = []; - - /** - * An array of names and addresses queued for validation. - * In send(), valid and non duplicate entries are moved to $all_recipients - * and one of $to, $cc, or $bcc. - * This array is used only for addresses with IDN. - * - * @see PHPMailer::$to - * @see PHPMailer::$cc - * @see PHPMailer::$bcc - * @see PHPMailer::$all_recipients - * - * @var array - */ - protected $RecipientsQueue = []; - - /** - * An array of reply-to names and addresses queued for validation. - * In send(), valid and non duplicate entries are moved to $ReplyTo. - * This array is used only for addresses with IDN. - * - * @see PHPMailer::$ReplyTo - * - * @var array - */ - protected $ReplyToQueue = []; - - /** - * The array of attachments. - * - * @var array - */ - protected $attachment = []; - - /** - * The array of custom headers. - * - * @var array - */ - protected $CustomHeader = []; - - /** - * The most recent Message-ID (including angular brackets). - * - * @var string - */ - protected $lastMessageID = ''; - - /** - * The message's MIME type. - * - * @var string - */ - protected $message_type = ''; - - /** - * The array of MIME boundary strings. - * - * @var array - */ - protected $boundary = []; - - /** - * The array of available languages. - * - * @var array - */ - protected $language = []; - - /** - * The number of errors encountered. - * - * @var int - */ - protected $error_count = 0; - - /** - * The S/MIME certificate file path. - * - * @var string - */ - protected $sign_cert_file = ''; - - /** - * The S/MIME key file path. - * - * @var string - */ - protected $sign_key_file = ''; - - /** - * The optional S/MIME extra certificates ("CA Chain") file path. - * - * @var string - */ - protected $sign_extracerts_file = ''; - - /** - * The S/MIME password for the key. - * Used only if the key is encrypted. - * - * @var string - */ - protected $sign_key_pass = ''; - - /** - * Whether to throw exceptions for errors. - * - * @var bool - */ - protected $exceptions = false; - - /** - * Unique ID used for message ID and boundaries. - * - * @var string - */ - protected $uniqueid = ''; - - /** - * The PHPMailer Version number. - * - * @var string - */ - const VERSION = '6.0.3'; - - /** - * Error severity: message only, continue processing. - * - * @var int - */ - const STOP_MESSAGE = 0; - - /** - * Error severity: message, likely ok to continue processing. - * - * @var int - */ - const STOP_CONTINUE = 1; - - /** - * Error severity: message, plus full stop, critical error reached. - * - * @var int - */ - const STOP_CRITICAL = 2; - - /** - * SMTP RFC standard line ending. - * - * @var string - */ - protected static $LE = "\r\n"; - - /** - * The maximum line length allowed by RFC 2822 section 2.1.1. - * - * @var int - */ - const MAX_LINE_LENGTH = 998; - - /** - * The lower maximum line length allowed by RFC 2822 section 2.1.1. - * This length does NOT include the line break - * 76 means that lines will be 77 or 78 chars depending on whether - * the line break format is LF or CRLF; both are valid. - * - * @var int - */ - const STD_LINE_LENGTH = 76; - - /** - * Constructor. - * - * @param bool $exceptions Should we throw external exceptions? - */ - public function __construct($exceptions = null) - { - if (null !== $exceptions) { - $this->exceptions = (bool) $exceptions; - } - //Pick an appropriate debug output format automatically - $this->Debugoutput = (strpos(PHP_SAPI, 'cli') !== false ? 'echo' : 'html'); - } - - /** - * Destructor. - */ - public function __destruct() - { - //Close any open SMTP connection nicely - $this->smtpClose(); - } - - /** - * Call mail() in a safe_mode-aware fashion. - * Also, unless sendmail_path points to sendmail (or something that - * claims to be sendmail), don't pass params (not a perfect fix, - * but it will do). - * - * @param string $to To - * @param string $subject Subject - * @param string $body Message Body - * @param string $header Additional Header(s) - * @param string|null $params Params - * - * @return bool - */ - private function mailPassthru($to, $subject, $body, $header, $params) - { - //Check overloading of mail function to avoid double-encoding - if (ini_get('mbstring.func_overload') & 1) { - $subject = $this->secureHeader($subject); - } else { - $subject = $this->encodeHeader($this->secureHeader($subject)); - } - //Calling mail() with null params breaks - if (!$this->UseSendmailOptions or null === $params) { - $result = @mail($to, $subject, $body, $header); - } else { - $result = @mail($to, $subject, $body, $header, $params); - } - - return $result; - } - - /** - * Output debugging info via user-defined method. - * Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug). - * - * @see PHPMailer::$Debugoutput - * @see PHPMailer::$SMTPDebug - * - * @param string $str - */ - protected function edebug($str) - { - if ($this->SMTPDebug <= 0) { - return; - } - //Is this a PSR-3 logger? - if ($this->Debugoutput instanceof \Psr\Log\LoggerInterface) { - $this->Debugoutput->debug($str); - - return; - } - //Avoid clash with built-in function names - if (!in_array($this->Debugoutput, ['error_log', 'html', 'echo']) and is_callable($this->Debugoutput)) { - call_user_func($this->Debugoutput, $str, $this->SMTPDebug); - - return; - } - switch ($this->Debugoutput) { - case 'error_log': - //Don't output, just log - error_log($str); - break; - case 'html': - //Cleans up output a bit for a better looking, HTML-safe output - echo htmlentities( - preg_replace('/[\r\n]+/', '', $str), - ENT_QUOTES, - 'UTF-8' - ), "<br>\n"; - break; - case 'echo': - default: - //Normalize line breaks - $str = preg_replace('/\r\n|\r/ms', "\n", $str); - echo gmdate('Y-m-d H:i:s'), - "\t", - //Trim trailing space - trim( - //Indent for readability, except for trailing break - str_replace( - "\n", - "\n \t ", - trim($str) - ) - ), - "\n"; - } - } - - /** - * Sets message type to HTML or plain. - * - * @param bool $isHtml True for HTML mode - */ - public function isHTML($isHtml = true) - { - if ($isHtml) { - $this->ContentType = 'text/html'; - } else { - $this->ContentType = 'text/plain'; - } - } - - /** - * Send messages using SMTP. - */ - public function isSMTP() - { - $this->Mailer = 'smtp'; - } - - /** - * Send messages using PHP's mail() function. - */ - public function isMail() - { - $this->Mailer = 'mail'; - } - - /** - * Send messages using $Sendmail. - */ - public function isSendmail() - { - $ini_sendmail_path = ini_get('sendmail_path'); - - if (false === stripos($ini_sendmail_path, 'sendmail')) { - $this->Sendmail = '/usr/sbin/sendmail'; - } else { - $this->Sendmail = $ini_sendmail_path; - } - $this->Mailer = 'sendmail'; - } - - /** - * Send messages using qmail. - */ - public function isQmail() - { - $ini_sendmail_path = ini_get('sendmail_path'); - - if (false === stripos($ini_sendmail_path, 'qmail')) { - $this->Sendmail = '/var/qmail/bin/qmail-inject'; - } else { - $this->Sendmail = $ini_sendmail_path; - } - $this->Mailer = 'qmail'; - } - - /** - * Add a "To" address. - * - * @param string $address The email address to send to - * @param string $name - * - * @return bool true on success, false if address already used or invalid in some way - */ - public function addAddress($address, $name = '') - { - return $this->addOrEnqueueAnAddress('to', $address, $name); - } - - /** - * Add a "CC" address. - * - * @param string $address The email address to send to - * @param string $name - * - * @return bool true on success, false if address already used or invalid in some way - */ - public function addCC($address, $name = '') - { - return $this->addOrEnqueueAnAddress('cc', $address, $name); - } - - /** - * Add a "BCC" address. - * - * @param string $address The email address to send to - * @param string $name - * - * @return bool true on success, false if address already used or invalid in some way - */ - public function addBCC($address, $name = '') - { - return $this->addOrEnqueueAnAddress('bcc', $address, $name); - } - - /** - * Add a "Reply-To" address. - * - * @param string $address The email address to reply to - * @param string $name - * - * @return bool true on success, false if address already used or invalid in some way - */ - public function addReplyTo($address, $name = '') - { - return $this->addOrEnqueueAnAddress('Reply-To', $address, $name); - } - - /** - * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer - * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still - * be modified after calling this function), addition of such addresses is delayed until send(). - * Addresses that have been added already return false, but do not throw exceptions. - * - * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' - * @param string $address The email address to send, resp. to reply to - * @param string $name - * - * @throws Exception - * - * @return bool true on success, false if address already used or invalid in some way - */ - protected function addOrEnqueueAnAddress($kind, $address, $name) - { - $address = trim($address); - $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - $pos = strrpos($address, '@'); - if (false === $pos) { - // At-sign is missing. - $error_message = sprintf('%s (%s): %s', - $this->lang('invalid_address'), - $kind, - $address); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - $params = [$kind, $address, $name]; - // Enqueue addresses with IDN until we know the PHPMailer::$CharSet. - if ($this->has8bitChars(substr($address, ++$pos)) and static::idnSupported()) { - if ('Reply-To' != $kind) { - if (!array_key_exists($address, $this->RecipientsQueue)) { - $this->RecipientsQueue[$address] = $params; - - return true; - } - } else { - if (!array_key_exists($address, $this->ReplyToQueue)) { - $this->ReplyToQueue[$address] = $params; - - return true; - } - } - - return false; - } - - // Immediately add standard addresses without IDN. - return call_user_func_array([$this, 'addAnAddress'], $params); - } - - /** - * Add an address to one of the recipient arrays or to the ReplyTo array. - * Addresses that have been added already return false, but do not throw exceptions. - * - * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' - * @param string $address The email address to send, resp. to reply to - * @param string $name - * - * @throws Exception - * - * @return bool true on success, false if address already used or invalid in some way - */ - protected function addAnAddress($kind, $address, $name = '') - { - if (!in_array($kind, ['to', 'cc', 'bcc', 'Reply-To'])) { - $error_message = sprintf('%s: %s', - $this->lang('Invalid recipient kind'), - $kind); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - if (!static::validateAddress($address)) { - $error_message = sprintf('%s (%s): %s', - $this->lang('invalid_address'), - $kind, - $address); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - if ('Reply-To' != $kind) { - if (!array_key_exists(strtolower($address), $this->all_recipients)) { - $this->{$kind}[] = [$address, $name]; - $this->all_recipients[strtolower($address)] = true; - - return true; - } - } else { - if (!array_key_exists(strtolower($address), $this->ReplyTo)) { - $this->ReplyTo[strtolower($address)] = [$address, $name]; - - return true; - } - } - - return false; - } - - /** - * Parse and validate a string containing one or more RFC822-style comma-separated email addresses - * of the form "display name <address>" into an array of name/address pairs. - * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available. - * Note that quotes in the name part are removed. - * - * @see http://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation - * - * @param string $addrstr The address list string - * @param bool $useimap Whether to use the IMAP extension to parse the list - * - * @return array - */ - public static function parseAddresses($addrstr, $useimap = true) - { - $addresses = []; - if ($useimap and function_exists('imap_rfc822_parse_adrlist')) { - //Use this built-in parser if it's available - $list = imap_rfc822_parse_adrlist($addrstr, ''); - foreach ($list as $address) { - if ('.SYNTAX-ERROR.' != $address->host) { - if (static::validateAddress($address->mailbox . '@' . $address->host)) { - $addresses[] = [ - 'name' => (property_exists($address, 'personal') ? $address->personal : ''), - 'address' => $address->mailbox . '@' . $address->host, - ]; - } - } - } - } else { - //Use this simpler parser - $list = explode(',', $addrstr); - foreach ($list as $address) { - $address = trim($address); - //Is there a separate name part? - if (strpos($address, '<') === false) { - //No separate name, just use the whole thing - if (static::validateAddress($address)) { - $addresses[] = [ - 'name' => '', - 'address' => $address, - ]; - } - } else { - list($name, $email) = explode('<', $address); - $email = trim(str_replace('>', '', $email)); - if (static::validateAddress($email)) { - $addresses[] = [ - 'name' => trim(str_replace(['"', "'"], '', $name)), - 'address' => $email, - ]; - } - } - } - } - - return $addresses; - } - - /** - * Set the From and FromName properties. - * - * @param string $address - * @param string $name - * @param bool $auto Whether to also set the Sender address, defaults to true - * - * @throws Exception - * - * @return bool - */ - public function setFrom($address, $name = '', $auto = true) - { - $address = trim($address); - $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - // Don't validate now addresses with IDN. Will be done in send(). - $pos = strrpos($address, '@'); - if (false === $pos or - (!$this->has8bitChars(substr($address, ++$pos)) or !static::idnSupported()) and - !static::validateAddress($address)) { - $error_message = sprintf('%s (From): %s', - $this->lang('invalid_address'), - $address); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - $this->From = $address; - $this->FromName = $name; - if ($auto) { - if (empty($this->Sender)) { - $this->Sender = $address; - } - } - - return true; - } - - /** - * Return the Message-ID header of the last email. - * Technically this is the value from the last time the headers were created, - * but it's also the message ID of the last sent message except in - * pathological cases. - * - * @return string - */ - public function getLastMessageID() - { - return $this->lastMessageID; - } - - /** - * Check that a string looks like an email address. - * Validation patterns supported: - * * `auto` Pick best pattern automatically; - * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0; - * * `pcre` Use old PCRE implementation; - * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; - * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements. - * * `noregex` Don't use a regex: super fast, really dumb. - * Alternatively you may pass in a callable to inject your own validator, for example: - * - * ```php - * PHPMailer::validateAddress('user@example.com', function($address) { - * return (strpos($address, '@') !== false); - * }); - * ``` - * - * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator. - * - * @param string $address The email address to check - * @param string|callable $patternselect Which pattern to use - * - * @return bool - */ - public static function validateAddress($address, $patternselect = null) - { - if (null === $patternselect) { - $patternselect = static::$validator; - } - if (is_callable($patternselect)) { - return call_user_func($patternselect, $address); - } - //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 - if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) { - return false; - } - switch ($patternselect) { - case 'pcre': //Kept for BC - case 'pcre8': - /* - * A more complex and more permissive version of the RFC5322 regex on which FILTER_VALIDATE_EMAIL - * is based. - * In addition to the addresses allowed by filter_var, also permits: - * * dotless domains: `a@b` - * * comments: `1234 @ local(blah) .machine .example` - * * quoted elements: `'"test blah"@example.org'` - * * numeric TLDs: `a@b.123` - * * unbracketed IPv4 literals: `a@192.168.0.1` - * * IPv6 literals: 'first.last@[IPv6:a1::]' - * Not all of these will necessarily work for sending! - * - * @see http://squiloople.com/2009/12/20/email-address-validation/ - * @copyright 2009-2010 Michael Rushton - * Feel free to use and redistribute this code. But please keep this copyright notice. - */ - return (bool) preg_match( - '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' . - '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' . - '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' . - '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' . - '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' . - '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' . - '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' . - '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' . - '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', - $address - ); - case 'html5': - /* - * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. - * - * @see http://www.whatwg.org/specs/web-apps/current-work/#e-mail-state-(type=email) - */ - return (bool) preg_match( - '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . - '[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD', - $address - ); - case 'php': - default: - return (bool) filter_var($address, FILTER_VALIDATE_EMAIL); - } - } - - /** - * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the - * `intl` and `mbstring` PHP extensions. - * - * @return bool `true` if required functions for IDN support are present - */ - public static function idnSupported() - { - return function_exists('idn_to_ascii') and function_exists('mb_convert_encoding'); - } - - /** - * Converts IDN in given email address to its ASCII form, also known as punycode, if possible. - * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet. - * This function silently returns unmodified address if: - * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form) - * - Conversion to punycode is impossible (e.g. required PHP functions are not available) - * or fails for any reason (e.g. domain contains characters not allowed in an IDN). - * - * @see PHPMailer::$CharSet - * - * @param string $address The email address to convert - * - * @return string The encoded address in ASCII form - */ - public function punyencodeAddress($address) - { - // Verify we have required functions, CharSet, and at-sign. - $pos = strrpos($address, '@'); - if (static::idnSupported() and - !empty($this->CharSet) and - false !== $pos - ) { - $domain = substr($address, ++$pos); - // Verify CharSet string is a valid one, and domain properly encoded in this CharSet. - if ($this->has8bitChars($domain) and @mb_check_encoding($domain, $this->CharSet)) { - $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet); - //Ignore IDE complaints about this line - method signature changed in PHP 5.4 - $errorcode = 0; - $punycode = idn_to_ascii($domain, $errorcode, INTL_IDNA_VARIANT_UTS46); - if (false !== $punycode) { - return substr($address, 0, $pos) . $punycode; - } - } - } - - return $address; - } - - /** - * Create a message and send it. - * Uses the sending method specified by $Mailer. - * - * @throws Exception - * - * @return bool false on error - See the ErrorInfo property for details of the error - */ - public function send() - { - try { - if (!$this->preSend()) { - return false; - } - - return $this->postSend(); - } catch (Exception $exc) { - $this->mailHeader = ''; - $this->setError($exc->getMessage()); - if ($this->exceptions) { - throw $exc; - } - - return false; - } - } - - /** - * Prepare a message for sending. - * - * @throws Exception - * - * @return bool - */ - public function preSend() - { - if ('smtp' == $this->Mailer or - ('mail' == $this->Mailer and stripos(PHP_OS, 'WIN') === 0) - ) { - //SMTP mandates RFC-compliant line endings - //and it's also used with mail() on Windows - static::setLE("\r\n"); - } else { - //Maintain backward compatibility with legacy Linux command line mailers - static::setLE(PHP_EOL); - } - //Check for buggy PHP versions that add a header with an incorrect line break - if (ini_get('mail.add_x_header') == 1 - and 'mail' == $this->Mailer - and stripos(PHP_OS, 'WIN') === 0 - and ((version_compare(PHP_VERSION, '7.0.0', '>=') - and version_compare(PHP_VERSION, '7.0.17', '<')) - or (version_compare(PHP_VERSION, '7.1.0', '>=') - and version_compare(PHP_VERSION, '7.1.3', '<'))) - ) { - trigger_error( - 'Your version of PHP is affected by a bug that may result in corrupted messages.' . - ' To fix it, switch to sending using SMTP, disable the mail.add_x_header option in' . - ' your php.ini, switch to MacOS or Linux, or upgrade your PHP to version 7.0.17+ or 7.1.3+.', - E_USER_WARNING - ); - } - - try { - $this->error_count = 0; // Reset errors - $this->mailHeader = ''; - - // Dequeue recipient and Reply-To addresses with IDN - foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { - $params[1] = $this->punyencodeAddress($params[1]); - call_user_func_array([$this, 'addAnAddress'], $params); - } - if (count($this->to) + count($this->cc) + count($this->bcc) < 1) { - throw new Exception($this->lang('provide_address'), self::STOP_CRITICAL); - } - - // Validate From, Sender, and ConfirmReadingTo addresses - foreach (['From', 'Sender', 'ConfirmReadingTo'] as $address_kind) { - $this->$address_kind = trim($this->$address_kind); - if (empty($this->$address_kind)) { - continue; - } - $this->$address_kind = $this->punyencodeAddress($this->$address_kind); - if (!static::validateAddress($this->$address_kind)) { - $error_message = sprintf('%s (%s): %s', - $this->lang('invalid_address'), - $address_kind, - $this->$address_kind); - $this->setError($error_message); - $this->edebug($error_message); - if ($this->exceptions) { - throw new Exception($error_message); - } - - return false; - } - } - - // Set whether the message is multipart/alternative - if ($this->alternativeExists()) { - $this->ContentType = 'multipart/alternative'; - } - - $this->setMessageType(); - // Refuse to send an empty message unless we are specifically allowing it - if (!$this->AllowEmpty and empty($this->Body)) { - throw new Exception($this->lang('empty_message'), self::STOP_CRITICAL); - } - - //Trim subject consistently - $this->Subject = trim($this->Subject); - // Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) - $this->MIMEHeader = ''; - $this->MIMEBody = $this->createBody(); - // createBody may have added some headers, so retain them - $tempheaders = $this->MIMEHeader; - $this->MIMEHeader = $this->createHeader(); - $this->MIMEHeader .= $tempheaders; - - // To capture the complete message when using mail(), create - // an extra header list which createHeader() doesn't fold in - if ('mail' == $this->Mailer) { - if (count($this->to) > 0) { - $this->mailHeader .= $this->addrAppend('To', $this->to); - } else { - $this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;'); - } - $this->mailHeader .= $this->headerLine( - 'Subject', - $this->encodeHeader($this->secureHeader($this->Subject)) - ); - } - - // Sign with DKIM if enabled - if (!empty($this->DKIM_domain) - and !empty($this->DKIM_selector) - and (!empty($this->DKIM_private_string) - or (!empty($this->DKIM_private) and file_exists($this->DKIM_private)) - ) - ) { - $header_dkim = $this->DKIM_Add( - $this->MIMEHeader . $this->mailHeader, - $this->encodeHeader($this->secureHeader($this->Subject)), - $this->MIMEBody - ); - $this->MIMEHeader = rtrim($this->MIMEHeader, "\r\n ") . static::$LE . - static::normalizeBreaks($header_dkim) . static::$LE; - } - - return true; - } catch (Exception $exc) { - $this->setError($exc->getMessage()); - if ($this->exceptions) { - throw $exc; - } - - return false; - } - } - - /** - * Actually send a message via the selected mechanism. - * - * @throws Exception - * - * @return bool - */ - public function postSend() - { - try { - // Choose the mailer and send through it - switch ($this->Mailer) { - case 'sendmail': - case 'qmail': - return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody); - case 'smtp': - return $this->smtpSend($this->MIMEHeader, $this->MIMEBody); - case 'mail': - return $this->mailSend($this->MIMEHeader, $this->MIMEBody); - default: - $sendMethod = $this->Mailer . 'Send'; - if (method_exists($this, $sendMethod)) { - return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody); - } - - return $this->mailSend($this->MIMEHeader, $this->MIMEBody); - } - } catch (Exception $exc) { - $this->setError($exc->getMessage()); - $this->edebug($exc->getMessage()); - if ($this->exceptions) { - throw $exc; - } - } - - return false; - } - - /** - * Send mail using the $Sendmail program. - * - * @see PHPMailer::$Sendmail - * - * @param string $header The message headers - * @param string $body The message body - * - * @throws Exception - * - * @return bool - */ - protected function sendmailSend($header, $body) - { - // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. - if (!empty($this->Sender) and self::isShellSafe($this->Sender)) { - if ('qmail' == $this->Mailer) { - $sendmailFmt = '%s -f%s'; - } else { - $sendmailFmt = '%s -oi -f%s -t'; - } - } else { - if ('qmail' == $this->Mailer) { - $sendmailFmt = '%s'; - } else { - $sendmailFmt = '%s -oi -t'; - } - } - - $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender); - - if ($this->SingleTo) { - foreach ($this->SingleToArray as $toAddr) { - $mail = @popen($sendmail, 'w'); - if (!$mail) { - throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - fwrite($mail, 'To: ' . $toAddr . "\n"); - fwrite($mail, $header); - fwrite($mail, $body); - $result = pclose($mail); - $this->doCallback( - ($result == 0), - [$toAddr], - $this->cc, - $this->bcc, - $this->Subject, - $body, - $this->From, - [] - ); - if (0 !== $result) { - throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - } - } else { - $mail = @popen($sendmail, 'w'); - if (!$mail) { - throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - fwrite($mail, $header); - fwrite($mail, $body); - $result = pclose($mail); - $this->doCallback( - ($result == 0), - $this->to, - $this->cc, - $this->bcc, - $this->Subject, - $body, - $this->From, - [] - ); - if (0 !== $result) { - throw new Exception($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - } - - return true; - } - - /** - * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters. - * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows. - * - * @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report - * - * @param string $string The string to be validated - * - * @return bool - */ - protected static function isShellSafe($string) - { - // Future-proof - if (escapeshellcmd($string) !== $string - or !in_array(escapeshellarg($string), ["'$string'", "\"$string\""]) - ) { - return false; - } - - $length = strlen($string); - - for ($i = 0; $i < $length; ++$i) { - $c = $string[$i]; - - // All other characters have a special meaning in at least one common shell, including = and +. - // Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. - // Note that this does permit non-Latin alphanumeric characters based on the current locale. - if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { - return false; - } - } - - return true; - } - - /** - * Send mail using the PHP mail() function. - * - * @see http://www.php.net/manual/en/book.mail.php - * - * @param string $header The message headers - * @param string $body The message body - * - * @throws Exception - * - * @return bool - */ - protected function mailSend($header, $body) - { - $toArr = []; - foreach ($this->to as $toaddr) { - $toArr[] = $this->addrFormat($toaddr); - } - $to = implode(', ', $toArr); - - $params = null; - //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver - if (!empty($this->Sender) and static::validateAddress($this->Sender)) { - //A space after `-f` is optional, but there is a long history of its presence - //causing problems, so we don't use one - //Exim docs: http://www.exim.org/exim-html-current/doc/html/spec_html/ch-the_exim_command_line.html - //Sendmail docs: http://www.sendmail.org/~ca/email/man/sendmail.html - //Qmail docs: http://www.qmail.org/man/man8/qmail-inject.html - //Example problem: https://www.drupal.org/node/1057954 - // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. - if (self::isShellSafe($this->Sender)) { - $params = sprintf('-f%s', $this->Sender); - } - } - if (!empty($this->Sender) and static::validateAddress($this->Sender)) { - $old_from = ini_get('sendmail_from'); - ini_set('sendmail_from', $this->Sender); - } - $result = false; - if ($this->SingleTo and count($toArr) > 1) { - foreach ($toArr as $toAddr) { - $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params); - $this->doCallback($result, [$toAddr], $this->cc, $this->bcc, $this->Subject, $body, $this->From, []); - } - } else { - $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params); - $this->doCallback($result, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From, []); - } - if (isset($old_from)) { - ini_set('sendmail_from', $old_from); - } - if (!$result) { - throw new Exception($this->lang('instantiate'), self::STOP_CRITICAL); - } - - return true; - } - - /** - * Get an instance to use for SMTP operations. - * Override this function to load your own SMTP implementation, - * or set one with setSMTPInstance. - * - * @return SMTP - */ - public function getSMTPInstance() - { - if (!is_object($this->smtp)) { - $this->smtp = new SMTP(); - } - - return $this->smtp; - } - - /** - * Provide an instance to use for SMTP operations. - * - * @param SMTP $smtp - * - * @return SMTP - */ - public function setSMTPInstance(SMTP $smtp) - { - $this->smtp = $smtp; - - return $this->smtp; - } - - /** - * Send mail via SMTP. - * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. - * - * @see PHPMailer::setSMTPInstance() to use a different class. - * - * @uses \PHPMailer\PHPMailer\SMTP - * - * @param string $header The message headers - * @param string $body The message body - * - * @throws Exception - * - * @return bool - */ - protected function smtpSend($header, $body) - { - $bad_rcpt = []; - if (!$this->smtpConnect($this->SMTPOptions)) { - throw new Exception($this->lang('smtp_connect_failed'), self::STOP_CRITICAL); - } - //Sender already validated in preSend() - if ('' == $this->Sender) { - $smtp_from = $this->From; - } else { - $smtp_from = $this->Sender; - } - if (!$this->smtp->mail($smtp_from)) { - $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError())); - throw new Exception($this->ErrorInfo, self::STOP_CRITICAL); - } - - $callbacks = []; - // Attempt to send to all recipients - foreach ([$this->to, $this->cc, $this->bcc] as $togroup) { - foreach ($togroup as $to) { - if (!$this->smtp->recipient($to[0])) { - $error = $this->smtp->getError(); - $bad_rcpt[] = ['to' => $to[0], 'error' => $error['detail']]; - $isSent = false; - } else { - $isSent = true; - } - - $callbacks[] = ['issent'=>$isSent, 'to'=>$to[0]]; - } - } - - // Only send the DATA command if we have viable recipients - if ((count($this->all_recipients) > count($bad_rcpt)) and !$this->smtp->data($header . $body)) { - throw new Exception($this->lang('data_not_accepted'), self::STOP_CRITICAL); - } - - $smtp_transaction_id = $this->smtp->getLastTransactionID(); - - if ($this->SMTPKeepAlive) { - $this->smtp->reset(); - } else { - $this->smtp->quit(); - $this->smtp->close(); - } - - foreach ($callbacks as $cb) { - $this->doCallback( - $cb['issent'], - [$cb['to']], - [], - [], - $this->Subject, - $body, - $this->From, - ['smtp_transaction_id' => $smtp_transaction_id] - ); - } - - //Create error message for any bad addresses - if (count($bad_rcpt) > 0) { - $errstr = ''; - foreach ($bad_rcpt as $bad) { - $errstr .= $bad['to'] . ': ' . $bad['error']; - } - throw new Exception( - $this->lang('recipients_failed') . $errstr, - self::STOP_CONTINUE - ); - } - - return true; - } - - /** - * Initiate a connection to an SMTP server. - * Returns false if the operation failed. - * - * @param array $options An array of options compatible with stream_context_create() - * - * @throws Exception - * - * @uses \PHPMailer\PHPMailer\SMTP - * - * @return bool - */ - public function smtpConnect($options = null) - { - if (null === $this->smtp) { - $this->smtp = $this->getSMTPInstance(); - } - - //If no options are provided, use whatever is set in the instance - if (null === $options) { - $options = $this->SMTPOptions; - } - - // Already connected? - if ($this->smtp->connected()) { - return true; - } - - $this->smtp->setTimeout($this->Timeout); - $this->smtp->setDebugLevel($this->SMTPDebug); - $this->smtp->setDebugOutput($this->Debugoutput); - $this->smtp->setVerp($this->do_verp); - $hosts = explode(';', $this->Host); - $lastexception = null; - - foreach ($hosts as $hostentry) { - $hostinfo = []; - if (!preg_match( - '/^((ssl|tls):\/\/)*([a-zA-Z0-9\.-]*|\[[a-fA-F0-9:]+\]):?([0-9]*)$/', - trim($hostentry), - $hostinfo - )) { - static::edebug($this->lang('connect_host') . ' ' . $hostentry); - // Not a valid host entry - continue; - } - // $hostinfo[2]: optional ssl or tls prefix - // $hostinfo[3]: the hostname - // $hostinfo[4]: optional port number - // The host string prefix can temporarily override the current setting for SMTPSecure - // If it's not specified, the default value is used - - //Check the host name is a valid name or IP address before trying to use it - if (!static::isValidHost($hostinfo[3])) { - static::edebug($this->lang('connect_host') . ' ' . $hostentry); - continue; - } - $prefix = ''; - $secure = $this->SMTPSecure; - $tls = ('tls' == $this->SMTPSecure); - if ('ssl' == $hostinfo[2] or ('' == $hostinfo[2] and 'ssl' == $this->SMTPSecure)) { - $prefix = 'ssl://'; - $tls = false; // Can't have SSL and TLS at the same time - $secure = 'ssl'; - } elseif ('tls' == $hostinfo[2]) { - $tls = true; - // tls doesn't use a prefix - $secure = 'tls'; - } - //Do we need the OpenSSL extension? - $sslext = defined('OPENSSL_ALGO_SHA256'); - if ('tls' === $secure or 'ssl' === $secure) { - //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled - if (!$sslext) { - throw new Exception($this->lang('extension_missing') . 'openssl', self::STOP_CRITICAL); - } - } - $host = $hostinfo[3]; - $port = $this->Port; - $tport = (int) $hostinfo[4]; - if ($tport > 0 and $tport < 65536) { - $port = $tport; - } - if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { - try { - if ($this->Helo) { - $hello = $this->Helo; - } else { - $hello = $this->serverHostname(); - } - $this->smtp->hello($hello); - //Automatically enable TLS encryption if: - // * it's not disabled - // * we have openssl extension - // * we are not already using SSL - // * the server offers STARTTLS - if ($this->SMTPAutoTLS and $sslext and 'ssl' != $secure and $this->smtp->getServerExt('STARTTLS')) { - $tls = true; - } - if ($tls) { - if (!$this->smtp->startTLS()) { - throw new Exception($this->lang('connect_host')); - } - // We must resend EHLO after TLS negotiation - $this->smtp->hello($hello); - } - if ($this->SMTPAuth) { - if (!$this->smtp->authenticate( - $this->Username, - $this->Password, - $this->AuthType, - $this->oauth - ) - ) { - throw new Exception($this->lang('authenticate')); - } - } - - return true; - } catch (Exception $exc) { - $lastexception = $exc; - $this->edebug($exc->getMessage()); - // We must have connected, but then failed TLS or Auth, so close connection nicely - $this->smtp->quit(); - } - } - } - // If we get here, all connection attempts have failed, so close connection hard - $this->smtp->close(); - // As we've caught all exceptions, just report whatever the last one was - if ($this->exceptions and null !== $lastexception) { - throw $lastexception; - } - - return false; - } - - /** - * Close the active SMTP session if one exists. - */ - public function smtpClose() - { - if (null !== $this->smtp) { - if ($this->smtp->connected()) { - $this->smtp->quit(); - $this->smtp->close(); - } - } - } - - /** - * Set the language for error messages. - * Returns false if it cannot load the language file. - * The default language is English. - * - * @param string $langcode ISO 639-1 2-character language code (e.g. French is "fr") - * @param string $lang_path Path to the language file directory, with trailing separator (slash) - * - * @return bool - */ - public function setLanguage($langcode = 'en', $lang_path = '') - { - // Backwards compatibility for renamed language codes - $renamed_langcodes = [ - 'br' => 'pt_br', - 'cz' => 'cs', - 'dk' => 'da', - 'no' => 'nb', - 'se' => 'sv', - 'sr' => 'rs', - ]; - - if (isset($renamed_langcodes[$langcode])) { - $langcode = $renamed_langcodes[$langcode]; - } - - // Define full set of translatable strings in English - $PHPMAILER_LANG = [ - 'authenticate' => 'SMTP Error: Could not authenticate.', - 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', - 'data_not_accepted' => 'SMTP Error: data not accepted.', - 'empty_message' => 'Message body empty', - 'encoding' => 'Unknown encoding: ', - 'execute' => 'Could not execute: ', - 'file_access' => 'Could not access file: ', - 'file_open' => 'File Error: Could not open file: ', - 'from_failed' => 'The following From address failed: ', - 'instantiate' => 'Could not instantiate mail function.', - 'invalid_address' => 'Invalid address: ', - 'mailer_not_supported' => ' mailer is not supported.', - 'provide_address' => 'You must provide at least one recipient email address.', - 'recipients_failed' => 'SMTP Error: The following recipients failed: ', - 'signing' => 'Signing Error: ', - 'smtp_connect_failed' => 'SMTP connect() failed.', - 'smtp_error' => 'SMTP server error: ', - 'variable_set' => 'Cannot set or reset variable: ', - 'extension_missing' => 'Extension missing: ', - ]; - if (empty($lang_path)) { - // Calculate an absolute path so it can work if CWD is not here - $lang_path = __DIR__ . DIRECTORY_SEPARATOR . 'language' . DIRECTORY_SEPARATOR; - } - //Validate $langcode - if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) { - $langcode = 'en'; - } - $foundlang = true; - $lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php'; - // There is no English translation file - if ('en' != $langcode) { - // Make sure language file path is readable - if (!file_exists($lang_file)) { - $foundlang = false; - } else { - // Overwrite language-specific strings. - // This way we'll never have missing translation keys. - $foundlang = include $lang_file; - } - } - $this->language = $PHPMAILER_LANG; - - return (bool) $foundlang; // Returns false if language not found - } - - /** - * Get the array of strings for the current language. - * - * @return array - */ - public function getTranslations() - { - return $this->language; - } - - /** - * Create recipient headers. - * - * @param string $type - * @param array $addr An array of recipients, - * where each recipient is a 2-element indexed array with element 0 containing an address - * and element 1 containing a name, like: - * [['joe@example.com', 'Joe User'], ['zoe@example.com', 'Zoe User']] - * - * @return string - */ - public function addrAppend($type, $addr) - { - $addresses = []; - foreach ($addr as $address) { - $addresses[] = $this->addrFormat($address); - } - - return $type . ': ' . implode(', ', $addresses) . static::$LE; - } - - /** - * Format an address for use in a message header. - * - * @param array $addr A 2-element indexed array, element 0 containing an address, element 1 containing a name like - * ['joe@example.com', 'Joe User'] - * - * @return string - */ - public function addrFormat($addr) - { - if (empty($addr[1])) { // No name provided - return $this->secureHeader($addr[0]); - } - - return $this->encodeHeader($this->secureHeader($addr[1]), 'phrase') . ' <' . $this->secureHeader( - $addr[0] - ) . '>'; - } - - /** - * Word-wrap message. - * For use with mailers that do not automatically perform wrapping - * and for quoted-printable encoded messages. - * Original written by philippe. - * - * @param string $message The message to wrap - * @param int $length The line length to wrap to - * @param bool $qp_mode Whether to run in Quoted-Printable mode - * - * @return string - */ - public function wrapText($message, $length, $qp_mode = false) - { - if ($qp_mode) { - $soft_break = sprintf(' =%s', static::$LE); - } else { - $soft_break = static::$LE; - } - // If utf-8 encoding is used, we will need to make sure we don't - // split multibyte characters when we wrap - $is_utf8 = 'utf-8' == strtolower($this->CharSet); - $lelen = strlen(static::$LE); - $crlflen = strlen(static::$LE); - - $message = static::normalizeBreaks($message); - //Remove a trailing line break - if (substr($message, -$lelen) == static::$LE) { - $message = substr($message, 0, -$lelen); - } - - //Split message into lines - $lines = explode(static::$LE, $message); - //Message will be rebuilt in here - $message = ''; - foreach ($lines as $line) { - $words = explode(' ', $line); - $buf = ''; - $firstword = true; - foreach ($words as $word) { - if ($qp_mode and (strlen($word) > $length)) { - $space_left = $length - strlen($buf) - $crlflen; - if (!$firstword) { - if ($space_left > 20) { - $len = $space_left; - if ($is_utf8) { - $len = $this->utf8CharBoundary($word, $len); - } elseif ('=' == substr($word, $len - 1, 1)) { - --$len; - } elseif ('=' == substr($word, $len - 2, 1)) { - $len -= 2; - } - $part = substr($word, 0, $len); - $word = substr($word, $len); - $buf .= ' ' . $part; - $message .= $buf . sprintf('=%s', static::$LE); - } else { - $message .= $buf . $soft_break; - } - $buf = ''; - } - while (strlen($word) > 0) { - if ($length <= 0) { - break; - } - $len = $length; - if ($is_utf8) { - $len = $this->utf8CharBoundary($word, $len); - } elseif ('=' == substr($word, $len - 1, 1)) { - --$len; - } elseif ('=' == substr($word, $len - 2, 1)) { - $len -= 2; - } - $part = substr($word, 0, $len); - $word = substr($word, $len); - - if (strlen($word) > 0) { - $message .= $part . sprintf('=%s', static::$LE); - } else { - $buf = $part; - } - } - } else { - $buf_o = $buf; - if (!$firstword) { - $buf .= ' '; - } - $buf .= $word; - - if (strlen($buf) > $length and '' != $buf_o) { - $message .= $buf_o . $soft_break; - $buf = $word; - } - } - $firstword = false; - } - $message .= $buf . static::$LE; - } - - return $message; - } - - /** - * Find the last character boundary prior to $maxLength in a utf-8 - * quoted-printable encoded string. - * Original written by Colin Brown. - * - * @param string $encodedText utf-8 QP text - * @param int $maxLength Find the last character boundary prior to this length - * - * @return int - */ - public function utf8CharBoundary($encodedText, $maxLength) - { - $foundSplitPos = false; - $lookBack = 3; - while (!$foundSplitPos) { - $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); - $encodedCharPos = strpos($lastChunk, '='); - if (false !== $encodedCharPos) { - // Found start of encoded character byte within $lookBack block. - // Check the encoded byte value (the 2 chars after the '=') - $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); - $dec = hexdec($hex); - if ($dec < 128) { - // Single byte character. - // If the encoded char was found at pos 0, it will fit - // otherwise reduce maxLength to start of the encoded char - if ($encodedCharPos > 0) { - $maxLength -= $lookBack - $encodedCharPos; - } - $foundSplitPos = true; - } elseif ($dec >= 192) { - // First byte of a multi byte character - // Reduce maxLength to split at start of character - $maxLength -= $lookBack - $encodedCharPos; - $foundSplitPos = true; - } elseif ($dec < 192) { - // Middle byte of a multi byte character, look further back - $lookBack += 3; - } - } else { - // No encoded character found - $foundSplitPos = true; - } - } - - return $maxLength; - } - - /** - * Apply word wrapping to the message body. - * Wraps the message body to the number of chars set in the WordWrap property. - * You should only do this to plain-text bodies as wrapping HTML tags may break them. - * This is called automatically by createBody(), so you don't need to call it yourself. - */ - public function setWordWrap() - { - if ($this->WordWrap < 1) { - return; - } - - switch ($this->message_type) { - case 'alt': - case 'alt_inline': - case 'alt_attach': - case 'alt_inline_attach': - $this->AltBody = $this->wrapText($this->AltBody, $this->WordWrap); - break; - default: - $this->Body = $this->wrapText($this->Body, $this->WordWrap); - break; - } - } - - /** - * Assemble message headers. - * - * @return string The assembled headers - */ - public function createHeader() - { - $result = ''; - - $result .= $this->headerLine('Date', '' == $this->MessageDate ? self::rfcDate() : $this->MessageDate); - - // To be created automatically by mail() - if ($this->SingleTo) { - if ('mail' != $this->Mailer) { - foreach ($this->to as $toaddr) { - $this->SingleToArray[] = $this->addrFormat($toaddr); - } - } - } else { - if (count($this->to) > 0) { - if ('mail' != $this->Mailer) { - $result .= $this->addrAppend('To', $this->to); - } - } elseif (count($this->cc) == 0) { - $result .= $this->headerLine('To', 'undisclosed-recipients:;'); - } - } - - $result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]); - - // sendmail and mail() extract Cc from the header before sending - if (count($this->cc) > 0) { - $result .= $this->addrAppend('Cc', $this->cc); - } - - // sendmail and mail() extract Bcc from the header before sending - if (( - 'sendmail' == $this->Mailer or 'qmail' == $this->Mailer or 'mail' == $this->Mailer - ) - and count($this->bcc) > 0 - ) { - $result .= $this->addrAppend('Bcc', $this->bcc); - } - - if (count($this->ReplyTo) > 0) { - $result .= $this->addrAppend('Reply-To', $this->ReplyTo); - } - - // mail() sets the subject itself - if ('mail' != $this->Mailer) { - $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject))); - } - - // Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4 - // https://tools.ietf.org/html/rfc5322#section-3.6.4 - if ('' != $this->MessageID and preg_match('/^<.*@.*>$/', $this->MessageID)) { - $this->lastMessageID = $this->MessageID; - } else { - $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname()); - } - $result .= $this->headerLine('Message-ID', $this->lastMessageID); - if (null !== $this->Priority) { - $result .= $this->headerLine('X-Priority', $this->Priority); - } - if ('' == $this->XMailer) { - $result .= $this->headerLine( - 'X-Mailer', - 'PHPMailer ' . self::VERSION . ' (https://github.com/PHPMailer/PHPMailer)' - ); - } else { - $myXmailer = trim($this->XMailer); - if ($myXmailer) { - $result .= $this->headerLine('X-Mailer', $myXmailer); - } - } - - if ('' != $this->ConfirmReadingTo) { - $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>'); - } - - // Add custom headers - foreach ($this->CustomHeader as $header) { - $result .= $this->headerLine( - trim($header[0]), - $this->encodeHeader(trim($header[1])) - ); - } - if (!$this->sign_key_file) { - $result .= $this->headerLine('MIME-Version', '1.0'); - $result .= $this->getMailMIME(); - } - - return $result; - } - - /** - * Get the message MIME type headers. - * - * @return string - */ - public function getMailMIME() - { - $result = ''; - $ismultipart = true; - switch ($this->message_type) { - case 'inline': - $result .= $this->headerLine('Content-Type', 'multipart/related;'); - $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); - break; - case 'attach': - case 'inline_attach': - case 'alt_attach': - case 'alt_inline_attach': - $result .= $this->headerLine('Content-Type', 'multipart/mixed;'); - $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); - break; - case 'alt': - case 'alt_inline': - $result .= $this->headerLine('Content-Type', 'multipart/alternative;'); - $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); - break; - default: - // Catches case 'plain': and case '': - $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet); - $ismultipart = false; - break; - } - // RFC1341 part 5 says 7bit is assumed if not specified - if ('7bit' != $this->Encoding) { - // RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE - if ($ismultipart) { - if ('8bit' == $this->Encoding) { - $result .= $this->headerLine('Content-Transfer-Encoding', '8bit'); - } - // The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible - } else { - $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding); - } - } - - if ('mail' != $this->Mailer) { - $result .= static::$LE; - } - - return $result; - } - - /** - * Returns the whole MIME message. - * Includes complete headers and body. - * Only valid post preSend(). - * - * @see PHPMailer::preSend() - * - * @return string - */ - public function getSentMIMEMessage() - { - return rtrim($this->MIMEHeader . $this->mailHeader, "\n\r") . static::$LE . static::$LE . $this->MIMEBody; - } - - /** - * Create a unique ID to use for boundaries. - * - * @return string - */ - protected function generateId() - { - $len = 32; //32 bytes = 256 bits - if (function_exists('random_bytes')) { - $bytes = random_bytes($len); - } elseif (function_exists('openssl_random_pseudo_bytes')) { - $bytes = openssl_random_pseudo_bytes($len); - } else { - //Use a hash to force the length to the same as the other methods - $bytes = hash('sha256', uniqid((string) mt_rand(), true), true); - } - - //We don't care about messing up base64 format here, just want a random string - return str_replace(['=', '+', '/'], '', base64_encode(hash('sha256', $bytes, true))); - } - - /** - * Assemble the message body. - * Returns an empty string on failure. - * - * @throws Exception - * - * @return string The assembled message body - */ - public function createBody() - { - $body = ''; - //Create unique IDs and preset boundaries - $this->uniqueid = $this->generateId(); - $this->boundary[1] = 'b1_' . $this->uniqueid; - $this->boundary[2] = 'b2_' . $this->uniqueid; - $this->boundary[3] = 'b3_' . $this->uniqueid; - - if ($this->sign_key_file) { - $body .= $this->getMailMIME() . static::$LE; - } - - $this->setWordWrap(); - - $bodyEncoding = $this->Encoding; - $bodyCharSet = $this->CharSet; - //Can we do a 7-bit downgrade? - if ('8bit' == $bodyEncoding and !$this->has8bitChars($this->Body)) { - $bodyEncoding = '7bit'; - //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit - $bodyCharSet = 'us-ascii'; - } - //If lines are too long, and we're not already using an encoding that will shorten them, - //change to quoted-printable transfer encoding for the body part only - if ('base64' != $this->Encoding and static::hasLineLongerThanMax($this->Body)) { - $bodyEncoding = 'quoted-printable'; - } - - $altBodyEncoding = $this->Encoding; - $altBodyCharSet = $this->CharSet; - //Can we do a 7-bit downgrade? - if ('8bit' == $altBodyEncoding and !$this->has8bitChars($this->AltBody)) { - $altBodyEncoding = '7bit'; - //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit - $altBodyCharSet = 'us-ascii'; - } - //If lines are too long, and we're not already using an encoding that will shorten them, - //change to quoted-printable transfer encoding for the alt body part only - if ('base64' != $altBodyEncoding and static::hasLineLongerThanMax($this->AltBody)) { - $altBodyEncoding = 'quoted-printable'; - } - //Use this as a preamble in all multipart message types - $mimepre = 'This is a multi-part message in MIME format.' . static::$LE; - switch ($this->message_type) { - case 'inline': - $body .= $mimepre; - $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding); - $body .= $this->encodeString($this->Body, $bodyEncoding); - $body .= static::$LE; - $body .= $this->attachAll('inline', $this->boundary[1]); - break; - case 'attach': - $body .= $mimepre; - $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding); - $body .= $this->encodeString($this->Body, $bodyEncoding); - $body .= static::$LE; - $body .= $this->attachAll('attachment', $this->boundary[1]); - break; - case 'inline_attach': - $body .= $mimepre; - $body .= $this->textLine('--' . $this->boundary[1]); - $body .= $this->headerLine('Content-Type', 'multipart/related;'); - $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= static::$LE; - $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, '', $bodyEncoding); - $body .= $this->encodeString($this->Body, $bodyEncoding); - $body .= static::$LE; - $body .= $this->attachAll('inline', $this->boundary[2]); - $body .= static::$LE; - $body .= $this->attachAll('attachment', $this->boundary[1]); - break; - case 'alt': - $body .= $mimepre; - $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text/plain', $altBodyEncoding); - $body .= $this->encodeString($this->AltBody, $altBodyEncoding); - $body .= static::$LE; - $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, 'text/html', $bodyEncoding); - $body .= $this->encodeString($this->Body, $bodyEncoding); - $body .= static::$LE; - if (!empty($this->Ical)) { - $body .= $this->getBoundary($this->boundary[1], '', 'text/calendar; method=REQUEST', ''); - $body .= $this->encodeString($this->Ical, $this->Encoding); - $body .= static::$LE; - } - $body .= $this->endBoundary($this->boundary[1]); - break; - case 'alt_inline': - $body .= $mimepre; - $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text/plain', $altBodyEncoding); - $body .= $this->encodeString($this->AltBody, $altBodyEncoding); - $body .= static::$LE; - $body .= $this->textLine('--' . $this->boundary[1]); - $body .= $this->headerLine('Content-Type', 'multipart/related;'); - $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= static::$LE; - $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text/html', $bodyEncoding); - $body .= $this->encodeString($this->Body, $bodyEncoding); - $body .= static::$LE; - $body .= $this->attachAll('inline', $this->boundary[2]); - $body .= static::$LE; - $body .= $this->endBoundary($this->boundary[1]); - break; - case 'alt_attach': - $body .= $mimepre; - $body .= $this->textLine('--' . $this->boundary[1]); - $body .= $this->headerLine('Content-Type', 'multipart/alternative;'); - $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= static::$LE; - $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text/plain', $altBodyEncoding); - $body .= $this->encodeString($this->AltBody, $altBodyEncoding); - $body .= static::$LE; - $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text/html', $bodyEncoding); - $body .= $this->encodeString($this->Body, $bodyEncoding); - $body .= static::$LE; - if (!empty($this->Ical)) { - $body .= $this->getBoundary($this->boundary[2], '', 'text/calendar; method=REQUEST', ''); - $body .= $this->encodeString($this->Ical, $this->Encoding); - } - $body .= $this->endBoundary($this->boundary[2]); - $body .= static::$LE; - $body .= $this->attachAll('attachment', $this->boundary[1]); - break; - case 'alt_inline_attach': - $body .= $mimepre; - $body .= $this->textLine('--' . $this->boundary[1]); - $body .= $this->headerLine('Content-Type', 'multipart/alternative;'); - $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= static::$LE; - $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text/plain', $altBodyEncoding); - $body .= $this->encodeString($this->AltBody, $altBodyEncoding); - $body .= static::$LE; - $body .= $this->textLine('--' . $this->boundary[2]); - $body .= $this->headerLine('Content-Type', 'multipart/related;'); - $body .= $this->textLine("\tboundary=\"" . $this->boundary[3] . '"'); - $body .= static::$LE; - $body .= $this->getBoundary($this->boundary[3], $bodyCharSet, 'text/html', $bodyEncoding); - $body .= $this->encodeString($this->Body, $bodyEncoding); - $body .= static::$LE; - $body .= $this->attachAll('inline', $this->boundary[3]); - $body .= static::$LE; - $body .= $this->endBoundary($this->boundary[2]); - $body .= static::$LE; - $body .= $this->attachAll('attachment', $this->boundary[1]); - break; - default: - // Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types - //Reset the `Encoding` property in case we changed it for line length reasons - $this->Encoding = $bodyEncoding; - $body .= $this->encodeString($this->Body, $this->Encoding); - break; - } - - if ($this->isError()) { - $body = ''; - if ($this->exceptions) { - throw new Exception($this->lang('empty_message'), self::STOP_CRITICAL); - } - } elseif ($this->sign_key_file) { - try { - if (!defined('PKCS7_TEXT')) { - throw new Exception($this->lang('extension_missing') . 'openssl'); - } - // @TODO would be nice to use php://temp streams here - $file = tempnam(sys_get_temp_dir(), 'mail'); - if (false === file_put_contents($file, $body)) { - throw new Exception($this->lang('signing') . ' Could not write temp file'); - } - $signed = tempnam(sys_get_temp_dir(), 'signed'); - //Workaround for PHP bug https://bugs.php.net/bug.php?id=69197 - if (empty($this->sign_extracerts_file)) { - $sign = @openssl_pkcs7_sign( - $file, - $signed, - 'file://' . realpath($this->sign_cert_file), - ['file://' . realpath($this->sign_key_file), $this->sign_key_pass], - [] - ); - } else { - $sign = @openssl_pkcs7_sign( - $file, - $signed, - 'file://' . realpath($this->sign_cert_file), - ['file://' . realpath($this->sign_key_file), $this->sign_key_pass], - [], - PKCS7_DETACHED, - $this->sign_extracerts_file - ); - } - @unlink($file); - if ($sign) { - $body = file_get_contents($signed); - @unlink($signed); - //The message returned by openssl contains both headers and body, so need to split them up - $parts = explode("\n\n", $body, 2); - $this->MIMEHeader .= $parts[0] . static::$LE . static::$LE; - $body = $parts[1]; - } else { - @unlink($signed); - throw new Exception($this->lang('signing') . openssl_error_string()); - } - } catch (Exception $exc) { - $body = ''; - if ($this->exceptions) { - throw $exc; - } - } - } - - return $body; - } - - /** - * Return the start of a message boundary. - * - * @param string $boundary - * @param string $charSet - * @param string $contentType - * @param string $encoding - * - * @return string - */ - protected function getBoundary($boundary, $charSet, $contentType, $encoding) - { - $result = ''; - if ('' == $charSet) { - $charSet = $this->CharSet; - } - if ('' == $contentType) { - $contentType = $this->ContentType; - } - if ('' == $encoding) { - $encoding = $this->Encoding; - } - $result .= $this->textLine('--' . $boundary); - $result .= sprintf('Content-Type: %s; charset=%s', $contentType, $charSet); - $result .= static::$LE; - // RFC1341 part 5 says 7bit is assumed if not specified - if ('7bit' != $encoding) { - $result .= $this->headerLine('Content-Transfer-Encoding', $encoding); - } - $result .= static::$LE; - - return $result; - } - - /** - * Return the end of a message boundary. - * - * @param string $boundary - * - * @return string - */ - protected function endBoundary($boundary) - { - return static::$LE . '--' . $boundary . '--' . static::$LE; - } - - /** - * Set the message type. - * PHPMailer only supports some preset message types, not arbitrary MIME structures. - */ - protected function setMessageType() - { - $type = []; - if ($this->alternativeExists()) { - $type[] = 'alt'; - } - if ($this->inlineImageExists()) { - $type[] = 'inline'; - } - if ($this->attachmentExists()) { - $type[] = 'attach'; - } - $this->message_type = implode('_', $type); - if ('' == $this->message_type) { - //The 'plain' message_type refers to the message having a single body element, not that it is plain-text - $this->message_type = 'plain'; - } - } - - /** - * Format a header line. - * - * @param string $name - * @param string|int $value - * - * @return string - */ - public function headerLine($name, $value) - { - return $name . ': ' . $value . static::$LE; - } - - /** - * Return a formatted mail line. - * - * @param string $value - * - * @return string - */ - public function textLine($value) - { - return $value . static::$LE; - } - - /** - * Add an attachment from a path on the filesystem. - * Never use a user-supplied path to a file! - * Returns false if the file could not be found or read. - * - * @param string $path Path to the attachment - * @param string $name Overrides the attachment name - * @param string $encoding File encoding (see $Encoding) - * @param string $type File extension (MIME) type - * @param string $disposition Disposition to use - * - * @throws Exception - * - * @return bool - */ - public function addAttachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment') - { - try { - if (!@is_file($path)) { - throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE); - } - - // If a MIME type is not specified, try to work it out from the file name - if ('' == $type) { - $type = static::filenameToType($path); - } - - $filename = basename($path); - if ('' == $name) { - $name = $filename; - } - - $this->attachment[] = [ - 0 => $path, - 1 => $filename, - 2 => $name, - 3 => $encoding, - 4 => $type, - 5 => false, // isStringAttachment - 6 => $disposition, - 7 => $name, - ]; - } catch (Exception $exc) { - $this->setError($exc->getMessage()); - $this->edebug($exc->getMessage()); - if ($this->exceptions) { - throw $exc; - } - - return false; - } - - return true; - } - - /** - * Return the array of attachments. - * - * @return array - */ - public function getAttachments() - { - return $this->attachment; - } - - /** - * Attach all file, string, and binary attachments to the message. - * Returns an empty string on failure. - * - * @param string $disposition_type - * @param string $boundary - * - * @return string - */ - protected function attachAll($disposition_type, $boundary) - { - // Return text of body - $mime = []; - $cidUniq = []; - $incl = []; - - // Add all attachments - foreach ($this->attachment as $attachment) { - // Check if it is a valid disposition_filter - if ($attachment[6] == $disposition_type) { - // Check for string attachment - $string = ''; - $path = ''; - $bString = $attachment[5]; - if ($bString) { - $string = $attachment[0]; - } else { - $path = $attachment[0]; - } - - $inclhash = hash('sha256', serialize($attachment)); - if (in_array($inclhash, $incl)) { - continue; - } - $incl[] = $inclhash; - $name = $attachment[2]; - $encoding = $attachment[3]; - $type = $attachment[4]; - $disposition = $attachment[6]; - $cid = $attachment[7]; - if ('inline' == $disposition and array_key_exists($cid, $cidUniq)) { - continue; - } - $cidUniq[$cid] = true; - - $mime[] = sprintf('--%s%s', $boundary, static::$LE); - //Only include a filename property if we have one - if (!empty($name)) { - $mime[] = sprintf( - 'Content-Type: %s; name="%s"%s', - $type, - $this->encodeHeader($this->secureHeader($name)), - static::$LE - ); - } else { - $mime[] = sprintf( - 'Content-Type: %s%s', - $type, - static::$LE - ); - } - // RFC1341 part 5 says 7bit is assumed if not specified - if ('7bit' != $encoding) { - $mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, static::$LE); - } - - if (!empty($cid)) { - $mime[] = sprintf('Content-ID: <%s>%s', $cid, static::$LE); - } - - // If a filename contains any of these chars, it should be quoted, - // but not otherwise: RFC2183 & RFC2045 5.1 - // Fixes a warning in IETF's msglint MIME checker - // Allow for bypassing the Content-Disposition header totally - if (!(empty($disposition))) { - $encoded_name = $this->encodeHeader($this->secureHeader($name)); - if (preg_match('/[ \(\)<>@,;:\\"\/\[\]\?=]/', $encoded_name)) { - $mime[] = sprintf( - 'Content-Disposition: %s; filename="%s"%s', - $disposition, - $encoded_name, - static::$LE . static::$LE - ); - } else { - if (!empty($encoded_name)) { - $mime[] = sprintf( - 'Content-Disposition: %s; filename=%s%s', - $disposition, - $encoded_name, - static::$LE . static::$LE - ); - } else { - $mime[] = sprintf( - 'Content-Disposition: %s%s', - $disposition, - static::$LE . static::$LE - ); - } - } - } else { - $mime[] = static::$LE; - } - - // Encode as string attachment - if ($bString) { - $mime[] = $this->encodeString($string, $encoding); - } else { - $mime[] = $this->encodeFile($path, $encoding); - } - if ($this->isError()) { - return ''; - } - $mime[] = static::$LE; - } - } - - $mime[] = sprintf('--%s--%s', $boundary, static::$LE); - - return implode('', $mime); - } - - /** - * Encode a file attachment in requested format. - * Returns an empty string on failure. - * - * @param string $path The full path to the file - * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' - * - * @throws Exception - * - * @return string - */ - protected function encodeFile($path, $encoding = 'base64') - { - try { - if (!file_exists($path)) { - throw new Exception($this->lang('file_open') . $path, self::STOP_CONTINUE); - } - $file_buffer = file_get_contents($path); - if (false === $file_buffer) { - throw new Exception($this->lang('file_open') . $path, self::STOP_CONTINUE); - } - $file_buffer = $this->encodeString($file_buffer, $encoding); - - return $file_buffer; - } catch (Exception $exc) { - $this->setError($exc->getMessage()); - - return ''; - } - } - - /** - * Encode a string in requested format. - * Returns an empty string on failure. - * - * @param string $str The text to encode - * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable - * - * @return string - */ - public function encodeString($str, $encoding = 'base64') - { - $encoded = ''; - switch (strtolower($encoding)) { - case 'base64': - $encoded = chunk_split( - base64_encode($str), - static::STD_LINE_LENGTH, - static::$LE - ); - break; - case '7bit': - case '8bit': - $encoded = static::normalizeBreaks($str); - // Make sure it ends with a line break - if (substr($encoded, -(strlen(static::$LE))) != static::$LE) { - $encoded .= static::$LE; - } - break; - case 'binary': - $encoded = $str; - break; - case 'quoted-printable': - $encoded = $this->encodeQP($str); - break; - default: - $this->setError($this->lang('encoding') . $encoding); - break; - } - - return $encoded; - } - - /** - * Encode a header value (not including its label) optimally. - * Picks shortest of Q, B, or none. Result includes folding if needed. - * See RFC822 definitions for phrase, comment and text positions. - * - * @param string $str The header value to encode - * @param string $position What context the string will be used in - * - * @return string - */ - public function encodeHeader($str, $position = 'text') - { - $matchcount = 0; - switch (strtolower($position)) { - case 'phrase': - if (!preg_match('/[\200-\377]/', $str)) { - // Can't use addslashes as we don't know the value of magic_quotes_sybase - $encoded = addcslashes($str, "\0..\37\177\\\""); - if (($str == $encoded) and !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { - return $encoded; - } - - return "\"$encoded\""; - } - $matchcount = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); - break; - /* @noinspection PhpMissingBreakStatementInspection */ - case 'comment': - $matchcount = preg_match_all('/[()"]/', $str, $matches); - //fallthrough - case 'text': - default: - $matchcount += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); - break; - } - - //RFCs specify a maximum line length of 78 chars, however mail() will sometimes - //corrupt messages with headers longer than 65 chars. See #818 - $lengthsub = 'mail' == $this->Mailer ? 13 : 0; - $maxlen = static::STD_LINE_LENGTH - $lengthsub; - // Try to select the encoding which should produce the shortest output - if ($matchcount > strlen($str) / 3) { - // More than a third of the content will need encoding, so B encoding will be most efficient - $encoding = 'B'; - //This calculation is: - // max line length - // - shorten to avoid mail() corruption - // - Q/B encoding char overhead ("` =?<charset>?[QB]?<content>?=`") - // - charset name length - $maxlen = static::STD_LINE_LENGTH - $lengthsub - 8 - strlen($this->CharSet); - if ($this->hasMultiBytes($str)) { - // Use a custom function which correctly encodes and wraps long - // multibyte strings without breaking lines within a character - $encoded = $this->base64EncodeWrapMB($str, "\n"); - } else { - $encoded = base64_encode($str); - $maxlen -= $maxlen % 4; - $encoded = trim(chunk_split($encoded, $maxlen, "\n")); - } - $encoded = preg_replace('/^(.*)$/m', ' =?' . $this->CharSet . "?$encoding?\\1?=", $encoded); - } elseif ($matchcount > 0) { - //1 or more chars need encoding, use Q-encode - $encoding = 'Q'; - //Recalc max line length for Q encoding - see comments on B encode - $maxlen = static::STD_LINE_LENGTH - $lengthsub - 8 - strlen($this->CharSet); - $encoded = $this->encodeQ($str, $position); - $encoded = $this->wrapText($encoded, $maxlen, true); - $encoded = str_replace('=' . static::$LE, "\n", trim($encoded)); - $encoded = preg_replace('/^(.*)$/m', ' =?' . $this->CharSet . "?$encoding?\\1?=", $encoded); - } elseif (strlen($str) > $maxlen) { - //No chars need encoding, but line is too long, so fold it - $encoded = trim($this->wrapText($str, $maxlen, false)); - if ($str == $encoded) { - //Wrapping nicely didn't work, wrap hard instead - $encoded = trim(chunk_split($str, static::STD_LINE_LENGTH, static::$LE)); - } - $encoded = str_replace(static::$LE, "\n", trim($encoded)); - $encoded = preg_replace('/^(.*)$/m', ' \\1', $encoded); - } else { - //No reformatting needed - return $str; - } - - return trim(static::normalizeBreaks($encoded)); - } - - /** - * Check if a string contains multi-byte characters. - * - * @param string $str multi-byte text to wrap encode - * - * @return bool - */ - public function hasMultiBytes($str) - { - if (function_exists('mb_strlen')) { - return strlen($str) > mb_strlen($str, $this->CharSet); - } - - // Assume no multibytes (we can't handle without mbstring functions anyway) - return false; - } - - /** - * Does a string contain any 8-bit chars (in any charset)? - * - * @param string $text - * - * @return bool - */ - public function has8bitChars($text) - { - return (bool) preg_match('/[\x80-\xFF]/', $text); - } - - /** - * Encode and wrap long multibyte strings for mail headers - * without breaking lines within a character. - * Adapted from a function by paravoid. - * - * @see http://www.php.net/manual/en/function.mb-encode-mimeheader.php#60283 - * - * @param string $str multi-byte text to wrap encode - * @param string $linebreak string to use as linefeed/end-of-line - * - * @return string - */ - public function base64EncodeWrapMB($str, $linebreak = null) - { - $start = '=?' . $this->CharSet . '?B?'; - $end = '?='; - $encoded = ''; - if (null === $linebreak) { - $linebreak = static::$LE; - } - - $mb_length = mb_strlen($str, $this->CharSet); - // Each line must have length <= 75, including $start and $end - $length = 75 - strlen($start) - strlen($end); - // Average multi-byte ratio - $ratio = $mb_length / strlen($str); - // Base64 has a 4:3 ratio - $avgLength = floor($length * $ratio * .75); - - for ($i = 0; $i < $mb_length; $i += $offset) { - $lookBack = 0; - do { - $offset = $avgLength - $lookBack; - $chunk = mb_substr($str, $i, $offset, $this->CharSet); - $chunk = base64_encode($chunk); - ++$lookBack; - } while (strlen($chunk) > $length); - $encoded .= $chunk . $linebreak; - } - - // Chomp the last linefeed - return substr($encoded, 0, -strlen($linebreak)); - } - - /** - * Encode a string in quoted-printable format. - * According to RFC2045 section 6.7. - * - * @param string $string The text to encode - * - * @return string - */ - public function encodeQP($string) - { - return static::normalizeBreaks(quoted_printable_encode($string)); - } - - /** - * Encode a string using Q encoding. - * - * @see http://tools.ietf.org/html/rfc2047#section-4.2 - * - * @param string $str the text to encode - * @param string $position Where the text is going to be used, see the RFC for what that means - * - * @return string - */ - public function encodeQ($str, $position = 'text') - { - // There should not be any EOL in the string - $pattern = ''; - $encoded = str_replace(["\r", "\n"], '', $str); - switch (strtolower($position)) { - case 'phrase': - // RFC 2047 section 5.3 - $pattern = '^A-Za-z0-9!*+\/ -'; - break; - /* - * RFC 2047 section 5.2. - * Build $pattern without including delimiters and [] - */ - /* @noinspection PhpMissingBreakStatementInspection */ - case 'comment': - $pattern = '\(\)"'; - /* Intentional fall through */ - case 'text': - default: - // RFC 2047 section 5.1 - // Replace every high ascii, control, =, ? and _ characters - /** @noinspection SuspiciousAssignmentsInspection */ - $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern; - break; - } - $matches = []; - if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) { - // If the string contains an '=', make sure it's the first thing we replace - // so as to avoid double-encoding - $eqkey = array_search('=', $matches[0]); - if (false !== $eqkey) { - unset($matches[0][$eqkey]); - array_unshift($matches[0], '='); - } - foreach (array_unique($matches[0]) as $char) { - $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded); - } - } - // Replace spaces with _ (more readable than =20) - // RFC 2047 section 4.2(2) - return str_replace(' ', '_', $encoded); - } - - /** - * Add a string or binary attachment (non-filesystem). - * This method can be used to attach ascii or binary data, - * such as a BLOB record from a database. - * - * @param string $string String attachment data - * @param string $filename Name of the attachment - * @param string $encoding File encoding (see $Encoding) - * @param string $type File extension (MIME) type - * @param string $disposition Disposition to use - */ - public function addStringAttachment( - $string, - $filename, - $encoding = 'base64', - $type = '', - $disposition = 'attachment' - ) { - // If a MIME type is not specified, try to work it out from the file name - if ('' == $type) { - $type = static::filenameToType($filename); - } - // Append to $attachment array - $this->attachment[] = [ - 0 => $string, - 1 => $filename, - 2 => basename($filename), - 3 => $encoding, - 4 => $type, - 5 => true, // isStringAttachment - 6 => $disposition, - 7 => 0, - ]; - } - - /** - * Add an embedded (inline) attachment from a file. - * This can include images, sounds, and just about any other document type. - * These differ from 'regular' attachments in that they are intended to be - * displayed inline with the message, not just attached for download. - * This is used in HTML messages that embed the images - * the HTML refers to using the $cid value. - * Never use a user-supplied path to a file! - * - * @param string $path Path to the attachment - * @param string $cid Content ID of the attachment; Use this to reference - * the content when using an embedded image in HTML - * @param string $name Overrides the attachment name - * @param string $encoding File encoding (see $Encoding) - * @param string $type File MIME type - * @param string $disposition Disposition to use - * - * @return bool True on successfully adding an attachment - */ - public function addEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = '', $disposition = 'inline') - { - if (!@is_file($path)) { - $this->setError($this->lang('file_access') . $path); - - return false; - } - - // If a MIME type is not specified, try to work it out from the file name - if ('' == $type) { - $type = static::filenameToType($path); - } - - $filename = basename($path); - if ('' == $name) { - $name = $filename; - } - - // Append to $attachment array - $this->attachment[] = [ - 0 => $path, - 1 => $filename, - 2 => $name, - 3 => $encoding, - 4 => $type, - 5 => false, // isStringAttachment - 6 => $disposition, - 7 => $cid, - ]; - - return true; - } - - /** - * Add an embedded stringified attachment. - * This can include images, sounds, and just about any other document type. - * If your filename doesn't contain an extension, be sure to set the $type to an appropriate MIME type. - * - * @param string $string The attachment binary data - * @param string $cid Content ID of the attachment; Use this to reference - * the content when using an embedded image in HTML - * @param string $name A filename for the attachment. If this contains an extension, - * PHPMailer will attempt to set a MIME type for the attachment. - * For example 'file.jpg' would get an 'image/jpeg' MIME type. - * @param string $encoding File encoding (see $Encoding), defaults to 'base64' - * @param string $type MIME type - will be used in preference to any automatically derived type - * @param string $disposition Disposition to use - * - * @return bool True on successfully adding an attachment - */ - public function addStringEmbeddedImage( - $string, - $cid, - $name = '', - $encoding = 'base64', - $type = '', - $disposition = 'inline' - ) { - // If a MIME type is not specified, try to work it out from the name - if ('' == $type and !empty($name)) { - $type = static::filenameToType($name); - } - - // Append to $attachment array - $this->attachment[] = [ - 0 => $string, - 1 => $name, - 2 => $name, - 3 => $encoding, - 4 => $type, - 5 => true, // isStringAttachment - 6 => $disposition, - 7 => $cid, - ]; - - return true; - } - - /** - * Check if an embedded attachment is present with this cid. - * - * @param string $cid - * - * @return bool - */ - protected function cidExists($cid) - { - foreach ($this->attachment as $attachment) { - if ('inline' == $attachment[6] and $cid == $attachment[7]) { - return true; - } - } - - return false; - } - - /** - * Check if an inline attachment is present. - * - * @return bool - */ - public function inlineImageExists() - { - foreach ($this->attachment as $attachment) { - if ('inline' == $attachment[6]) { - return true; - } - } - - return false; - } - - /** - * Check if an attachment (non-inline) is present. - * - * @return bool - */ - public function attachmentExists() - { - foreach ($this->attachment as $attachment) { - if ('attachment' == $attachment[6]) { - return true; - } - } - - return false; - } - - /** - * Check if this message has an alternative body set. - * - * @return bool - */ - public function alternativeExists() - { - return !empty($this->AltBody); - } - - /** - * Clear queued addresses of given kind. - * - * @param string $kind 'to', 'cc', or 'bcc' - */ - public function clearQueuedAddresses($kind) - { - $this->RecipientsQueue = array_filter( - $this->RecipientsQueue, - function ($params) use ($kind) { - return $params[0] != $kind; - } - ); - } - - /** - * Clear all To recipients. - */ - public function clearAddresses() - { - foreach ($this->to as $to) { - unset($this->all_recipients[strtolower($to[0])]); - } - $this->to = []; - $this->clearQueuedAddresses('to'); - } - - /** - * Clear all CC recipients. - */ - public function clearCCs() - { - foreach ($this->cc as $cc) { - unset($this->all_recipients[strtolower($cc[0])]); - } - $this->cc = []; - $this->clearQueuedAddresses('cc'); - } - - /** - * Clear all BCC recipients. - */ - public function clearBCCs() - { - foreach ($this->bcc as $bcc) { - unset($this->all_recipients[strtolower($bcc[0])]); - } - $this->bcc = []; - $this->clearQueuedAddresses('bcc'); - } - - /** - * Clear all ReplyTo recipients. - */ - public function clearReplyTos() - { - $this->ReplyTo = []; - $this->ReplyToQueue = []; - } - - /** - * Clear all recipient types. - */ - public function clearAllRecipients() - { - $this->to = []; - $this->cc = []; - $this->bcc = []; - $this->all_recipients = []; - $this->RecipientsQueue = []; - } - - /** - * Clear all filesystem, string, and binary attachments. - */ - public function clearAttachments() - { - $this->attachment = []; - } - - /** - * Clear all custom headers. - */ - public function clearCustomHeaders() - { - $this->CustomHeader = []; - } - - /** - * Add an error message to the error container. - * - * @param string $msg - */ - protected function setError($msg) - { - ++$this->error_count; - if ('smtp' == $this->Mailer and null !== $this->smtp) { - $lasterror = $this->smtp->getError(); - if (!empty($lasterror['error'])) { - $msg .= $this->lang('smtp_error') . $lasterror['error']; - if (!empty($lasterror['detail'])) { - $msg .= ' Detail: ' . $lasterror['detail']; - } - if (!empty($lasterror['smtp_code'])) { - $msg .= ' SMTP code: ' . $lasterror['smtp_code']; - } - if (!empty($lasterror['smtp_code_ex'])) { - $msg .= ' Additional SMTP info: ' . $lasterror['smtp_code_ex']; - } - } - } - $this->ErrorInfo = $msg; - } - - /** - * Return an RFC 822 formatted date. - * - * @return string - */ - public static function rfcDate() - { - // Set the time zone to whatever the default is to avoid 500 errors - // Will default to UTC if it's not set properly in php.ini - date_default_timezone_set(@date_default_timezone_get()); - - return date('D, j M Y H:i:s O'); - } - - /** - * Get the server hostname. - * Returns 'localhost.localdomain' if unknown. - * - * @return string - */ - protected function serverHostname() - { - $result = ''; - if (!empty($this->Hostname)) { - $result = $this->Hostname; - } elseif (isset($_SERVER) and array_key_exists('SERVER_NAME', $_SERVER)) { - $result = $_SERVER['SERVER_NAME']; - } elseif (function_exists('gethostname') and gethostname() !== false) { - $result = gethostname(); - } elseif (php_uname('n') !== false) { - $result = php_uname('n'); - } - if (!static::isValidHost($result)) { - return 'localhost.localdomain'; - } - - return $result; - } - - /** - * Validate whether a string contains a valid value to use as a hostname or IP address. - * IPv6 addresses must include [], e.g. `[::1]`, not just `::1`. - * - * @param string $host The host name or IP address to check - * - * @return bool - */ - public static function isValidHost($host) - { - //Simple syntax limits - if (empty($host) - or !is_string($host) - or strlen($host) > 256 - ) { - return false; - } - //Looks like a bracketed IPv6 address - if (trim($host, '[]') != $host) { - return (bool) filter_var(trim($host, '[]'), FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); - } - //If removing all the dots results in a numeric string, it must be an IPv4 address. - //Need to check this first because otherwise things like `999.0.0.0` are considered valid host names - if (is_numeric(str_replace('.', '', $host))) { - //Is it a valid IPv4 address? - return (bool) filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); - } - if (filter_var('http://' . $host, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) { - //Is it a syntactically valid hostname? - return true; - } - - return false; - } - - /** - * Get an error message in the current language. - * - * @param string $key - * - * @return string - */ - protected function lang($key) - { - if (count($this->language) < 1) { - $this->setLanguage('en'); // set the default language - } - - if (array_key_exists($key, $this->language)) { - if ('smtp_connect_failed' == $key) { - //Include a link to troubleshooting docs on SMTP connection failure - //this is by far the biggest cause of support questions - //but it's usually not PHPMailer's fault. - return $this->language[$key] . ' https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting'; - } - - return $this->language[$key]; - } - - //Return the key as a fallback - return $key; - } - - /** - * Check if an error occurred. - * - * @return bool True if an error did occur - */ - public function isError() - { - return $this->error_count > 0; - } - - /** - * Add a custom header. - * $name value can be overloaded to contain - * both header name and value (name:value). - * - * @param string $name Custom header name - * @param string|null $value Header value - */ - public function addCustomHeader($name, $value = null) - { - if (null === $value) { - // Value passed in as name:value - $this->CustomHeader[] = explode(':', $name, 2); - } else { - $this->CustomHeader[] = [$name, $value]; - } - } - - /** - * Returns all custom headers. - * - * @return array - */ - public function getCustomHeaders() - { - return $this->CustomHeader; - } - - /** - * Create a message body from an HTML string. - * Automatically inlines images and creates a plain-text version by converting the HTML, - * overwriting any existing values in Body and AltBody. - * Do not source $message content from user input! - * $basedir is prepended when handling relative URLs, e.g. <img src="/images/a.png"> and must not be empty - * will look for an image file in $basedir/images/a.png and convert it to inline. - * If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email) - * Converts data-uri images into embedded attachments. - * If you don't want to apply these transformations to your HTML, just set Body and AltBody directly. - * - * @param string $message HTML message string - * @param string $basedir Absolute path to a base directory to prepend to relative paths to images - * @param bool|callable $advanced Whether to use the internal HTML to text converter - * or your own custom converter @see PHPMailer::html2text() - * - * @return string $message The transformed message Body - */ - public function msgHTML($message, $basedir = '', $advanced = false) - { - preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images); - if (array_key_exists(2, $images)) { - if (strlen($basedir) > 1 && '/' != substr($basedir, -1)) { - // Ensure $basedir has a trailing / - $basedir .= '/'; - } - foreach ($images[2] as $imgindex => $url) { - // Convert data URIs into embedded images - //e.g. "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" - if (preg_match('#^data:(image/(?:jpe?g|gif|png));?(base64)?,(.+)#', $url, $match)) { - if (count($match) == 4 and 'base64' == $match[2]) { - $data = base64_decode($match[3]); - } elseif ('' == $match[2]) { - $data = rawurldecode($match[3]); - } else { - //Not recognised so leave it alone - continue; - } - //Hash the decoded data, not the URL so that the same data-URI image used in multiple places - //will only be embedded once, even if it used a different encoding - $cid = hash('sha256', $data) . '@phpmailer.0'; // RFC2392 S 2 - - if (!$this->cidExists($cid)) { - $this->addStringEmbeddedImage($data, $cid, 'embed' . $imgindex, 'base64', $match[1]); - } - $message = str_replace( - $images[0][$imgindex], - $images[1][$imgindex] . '="cid:' . $cid . '"', - $message - ); - continue; - } - if (// Only process relative URLs if a basedir is provided (i.e. no absolute local paths) - !empty($basedir) - // Ignore URLs containing parent dir traversal (..) - and (strpos($url, '..') === false) - // Do not change urls that are already inline images - and 0 !== strpos($url, 'cid:') - // Do not change absolute URLs, including anonymous protocol - and !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url) - ) { - $filename = basename($url); - $directory = dirname($url); - if ('.' == $directory) { - $directory = ''; - } - $cid = hash('sha256', $url) . '@phpmailer.0'; // RFC2392 S 2 - if (strlen($basedir) > 1 and '/' != substr($basedir, -1)) { - $basedir .= '/'; - } - if (strlen($directory) > 1 and '/' != substr($directory, -1)) { - $directory .= '/'; - } - if ($this->addEmbeddedImage( - $basedir . $directory . $filename, - $cid, - $filename, - 'base64', - static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION)) - ) - ) { - $message = preg_replace( - '/' . $images[1][$imgindex] . '=["\']' . preg_quote($url, '/') . '["\']/Ui', - $images[1][$imgindex] . '="cid:' . $cid . '"', - $message - ); - } - } - } - } - $this->isHTML(true); - // Convert all message body line breaks to LE, makes quoted-printable encoding work much better - $this->Body = static::normalizeBreaks($message); - $this->AltBody = static::normalizeBreaks($this->html2text($message, $advanced)); - if (!$this->alternativeExists()) { - $this->AltBody = 'This is an HTML-only message. To view it, activate HTML in your email application.' - . static::$LE; - } - - return $this->Body; - } - - /** - * Convert an HTML string into plain text. - * This is used by msgHTML(). - * Note - older versions of this function used a bundled advanced converter - * which was removed for license reasons in #232. - * Example usage: - * - * ```php - * // Use default conversion - * $plain = $mail->html2text($html); - * // Use your own custom converter - * $plain = $mail->html2text($html, function($html) { - * $converter = new MyHtml2text($html); - * return $converter->get_text(); - * }); - * ``` - * - * @param string $html The HTML text to convert - * @param bool|callable $advanced Any boolean value to use the internal converter, - * or provide your own callable for custom conversion - * - * @return string - */ - public function html2text($html, $advanced = false) - { - if (is_callable($advanced)) { - return call_user_func($advanced, $html); - } - - return html_entity_decode( - trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/si', '', $html))), - ENT_QUOTES, - $this->CharSet - ); - } - - /** - * Get the MIME type for a file extension. - * - * @param string $ext File extension - * - * @return string MIME type of file - */ - public static function _mime_types($ext = '') - { - $mimes = [ - 'xl' => 'application/excel', - 'js' => 'application/javascript', - 'hqx' => 'application/mac-binhex40', - 'cpt' => 'application/mac-compactpro', - 'bin' => 'application/macbinary', - 'doc' => 'application/msword', - 'word' => 'application/msword', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', - 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', - 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', - 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', - 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', - 'class' => 'application/octet-stream', - 'dll' => 'application/octet-stream', - 'dms' => 'application/octet-stream', - 'exe' => 'application/octet-stream', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'psd' => 'application/octet-stream', - 'sea' => 'application/octet-stream', - 'so' => 'application/octet-stream', - 'oda' => 'application/oda', - 'pdf' => 'application/pdf', - 'ai' => 'application/postscript', - 'eps' => 'application/postscript', - 'ps' => 'application/postscript', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'mif' => 'application/vnd.mif', - 'xls' => 'application/vnd.ms-excel', - 'ppt' => 'application/vnd.ms-powerpoint', - 'wbxml' => 'application/vnd.wap.wbxml', - 'wmlc' => 'application/vnd.wap.wmlc', - 'dcr' => 'application/x-director', - 'dir' => 'application/x-director', - 'dxr' => 'application/x-director', - 'dvi' => 'application/x-dvi', - 'gtar' => 'application/x-gtar', - 'php3' => 'application/x-httpd-php', - 'php4' => 'application/x-httpd-php', - 'php' => 'application/x-httpd-php', - 'phtml' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'swf' => 'application/x-shockwave-flash', - 'sit' => 'application/x-stuffit', - 'tar' => 'application/x-tar', - 'tgz' => 'application/x-tar', - 'xht' => 'application/xhtml+xml', - 'xhtml' => 'application/xhtml+xml', - 'zip' => 'application/zip', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mp2' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'm4a' => 'audio/mp4', - 'mpga' => 'audio/mpeg', - 'aif' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'ram' => 'audio/x-pn-realaudio', - 'rm' => 'audio/x-pn-realaudio', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'ra' => 'audio/x-realaudio', - 'wav' => 'audio/x-wav', - 'mka' => 'audio/x-matroska', - 'bmp' => 'image/bmp', - 'gif' => 'image/gif', - 'jpeg' => 'image/jpeg', - 'jpe' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'png' => 'image/png', - 'tiff' => 'image/tiff', - 'tif' => 'image/tiff', - 'webp' => 'image/webp', - 'heif' => 'image/heif', - 'heifs' => 'image/heif-sequence', - 'heic' => 'image/heic', - 'heics' => 'image/heic-sequence', - 'eml' => 'message/rfc822', - 'css' => 'text/css', - 'html' => 'text/html', - 'htm' => 'text/html', - 'shtml' => 'text/html', - 'log' => 'text/plain', - 'text' => 'text/plain', - 'txt' => 'text/plain', - 'rtx' => 'text/richtext', - 'rtf' => 'text/rtf', - 'vcf' => 'text/vcard', - 'vcard' => 'text/vcard', - 'ics' => 'text/calendar', - 'xml' => 'text/xml', - 'xsl' => 'text/xml', - 'wmv' => 'video/x-ms-wmv', - 'mpeg' => 'video/mpeg', - 'mpe' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mp4' => 'video/mp4', - 'm4v' => 'video/mp4', - 'mov' => 'video/quicktime', - 'qt' => 'video/quicktime', - 'rv' => 'video/vnd.rn-realvideo', - 'avi' => 'video/x-msvideo', - 'movie' => 'video/x-sgi-movie', - 'webm' => 'video/webm', - 'mkv' => 'video/x-matroska', - ]; - $ext = strtolower($ext); - if (array_key_exists($ext, $mimes)) { - return $mimes[$ext]; - } - - return 'application/octet-stream'; - } - - /** - * Map a file name to a MIME type. - * Defaults to 'application/octet-stream', i.e.. arbitrary binary data. - * - * @param string $filename A file name or full path, does not need to exist as a file - * - * @return string - */ - public static function filenameToType($filename) - { - // In case the path is a URL, strip any query string before getting extension - $qpos = strpos($filename, '?'); - if (false !== $qpos) { - $filename = substr($filename, 0, $qpos); - } - $ext = static::mb_pathinfo($filename, PATHINFO_EXTENSION); - - return static::_mime_types($ext); - } - - /** - * Multi-byte-safe pathinfo replacement. - * Drop-in replacement for pathinfo(), but multibyte- and cross-platform-safe. - * - * @see http://www.php.net/manual/en/function.pathinfo.php#107461 - * - * @param string $path A filename or path, does not need to exist as a file - * @param int|string $options Either a PATHINFO_* constant, - * or a string name to return only the specified piece - * - * @return string|array - */ - public static function mb_pathinfo($path, $options = null) - { - $ret = ['dirname' => '', 'basename' => '', 'extension' => '', 'filename' => '']; - $pathinfo = []; - if (preg_match('#^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$#im', $path, $pathinfo)) { - if (array_key_exists(1, $pathinfo)) { - $ret['dirname'] = $pathinfo[1]; - } - if (array_key_exists(2, $pathinfo)) { - $ret['basename'] = $pathinfo[2]; - } - if (array_key_exists(5, $pathinfo)) { - $ret['extension'] = $pathinfo[5]; - } - if (array_key_exists(3, $pathinfo)) { - $ret['filename'] = $pathinfo[3]; - } - } - switch ($options) { - case PATHINFO_DIRNAME: - case 'dirname': - return $ret['dirname']; - case PATHINFO_BASENAME: - case 'basename': - return $ret['basename']; - case PATHINFO_EXTENSION: - case 'extension': - return $ret['extension']; - case PATHINFO_FILENAME: - case 'filename': - return $ret['filename']; - default: - return $ret; - } - } - - /** - * Set or reset instance properties. - * You should avoid this function - it's more verbose, less efficient, more error-prone and - * harder to debug than setting properties directly. - * Usage Example: - * `$mail->set('SMTPSecure', 'tls');` - * is the same as: - * `$mail->SMTPSecure = 'tls';`. - * - * @param string $name The property name to set - * @param mixed $value The value to set the property to - * - * @return bool - */ - public function set($name, $value = '') - { - if (property_exists($this, $name)) { - $this->$name = $value; - - return true; - } - $this->setError($this->lang('variable_set') . $name); - - return false; - } - - /** - * Strip newlines to prevent header injection. - * - * @param string $str - * - * @return string - */ - public function secureHeader($str) - { - return trim(str_replace(["\r", "\n"], '', $str)); - } - - /** - * Normalize line breaks in a string. - * Converts UNIX LF, Mac CR and Windows CRLF line breaks into a single line break format. - * Defaults to CRLF (for message bodies) and preserves consecutive breaks. - * - * @param string $text - * @param string $breaktype What kind of line break to use; defaults to static::$LE - * - * @return string - */ - public static function normalizeBreaks($text, $breaktype = null) - { - if (null === $breaktype) { - $breaktype = static::$LE; - } - // Normalise to \n - $text = str_replace(["\r\n", "\r"], "\n", $text); - // Now convert LE as needed - if ("\n" !== $breaktype) { - $text = str_replace("\n", $breaktype, $text); - } - - return $text; - } - - /** - * Return the current line break format string. - * - * @return string - */ - public static function getLE() - { - return static::$LE; - } - - /** - * Set the line break format string, e.g. "\r\n". - * - * @param string $le - */ - protected static function setLE($le) - { - static::$LE = $le; - } - - /** - * Set the public and private key files and password for S/MIME signing. - * - * @param string $cert_filename - * @param string $key_filename - * @param string $key_pass Password for private key - * @param string $extracerts_filename Optional path to chain certificate - */ - public function sign($cert_filename, $key_filename, $key_pass, $extracerts_filename = '') - { - $this->sign_cert_file = $cert_filename; - $this->sign_key_file = $key_filename; - $this->sign_key_pass = $key_pass; - $this->sign_extracerts_file = $extracerts_filename; - } - - /** - * Quoted-Printable-encode a DKIM header. - * - * @param string $txt - * - * @return string - */ - public function DKIM_QP($txt) - { - $line = ''; - $len = strlen($txt); - for ($i = 0; $i < $len; ++$i) { - $ord = ord($txt[$i]); - if (((0x21 <= $ord) and ($ord <= 0x3A)) or $ord == 0x3C or ((0x3E <= $ord) and ($ord <= 0x7E))) { - $line .= $txt[$i]; - } else { - $line .= '=' . sprintf('%02X', $ord); - } - } - - return $line; - } - - /** - * Generate a DKIM signature. - * - * @param string $signHeader - * - * @throws Exception - * - * @return string The DKIM signature value - */ - public function DKIM_Sign($signHeader) - { - if (!defined('PKCS7_TEXT')) { - if ($this->exceptions) { - throw new Exception($this->lang('extension_missing') . 'openssl'); - } - - return ''; - } - $privKeyStr = !empty($this->DKIM_private_string) ? - $this->DKIM_private_string : - file_get_contents($this->DKIM_private); - if ('' != $this->DKIM_passphrase) { - $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase); - } else { - $privKey = openssl_pkey_get_private($privKeyStr); - } - if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { - openssl_pkey_free($privKey); - - return base64_encode($signature); - } - openssl_pkey_free($privKey); - - return ''; - } - - /** - * Generate a DKIM canonicalization header. - * Uses the 'relaxed' algorithm from RFC6376 section 3.4.2. - * Canonicalized headers should *always* use CRLF, regardless of mailer setting. - * - * @see https://tools.ietf.org/html/rfc6376#section-3.4.2 - * - * @param string $signHeader Header - * - * @return string - */ - public function DKIM_HeaderC($signHeader) - { - //Unfold all header continuation lines - //Also collapses folded whitespace. - //Note PCRE \s is too broad a definition of whitespace; RFC5322 defines it as `[ \t]` - //@see https://tools.ietf.org/html/rfc5322#section-2.2 - //That means this may break if you do something daft like put vertical tabs in your headers. - $signHeader = preg_replace('/\r\n[ \t]+/', ' ', $signHeader); - $lines = explode("\r\n", $signHeader); - foreach ($lines as $key => $line) { - //If the header is missing a :, skip it as it's invalid - //This is likely to happen because the explode() above will also split - //on the trailing LE, leaving an empty line - if (strpos($line, ':') === false) { - continue; - } - list($heading, $value) = explode(':', $line, 2); - //Lower-case header name - $heading = strtolower($heading); - //Collapse white space within the value - $value = preg_replace('/[ \t]{2,}/', ' ', $value); - //RFC6376 is slightly unclear here - it says to delete space at the *end* of each value - //But then says to delete space before and after the colon. - //Net result is the same as trimming both ends of the value. - //by elimination, the same applies to the field name - $lines[$key] = trim($heading, " \t") . ':' . trim($value, " \t"); - } - - return implode("\r\n", $lines); - } - - /** - * Generate a DKIM canonicalization body. - * Uses the 'simple' algorithm from RFC6376 section 3.4.3. - * Canonicalized bodies should *always* use CRLF, regardless of mailer setting. - * - * @see https://tools.ietf.org/html/rfc6376#section-3.4.3 - * - * @param string $body Message Body - * - * @return string - */ - public function DKIM_BodyC($body) - { - if (empty($body)) { - return "\r\n"; - } - // Normalize line endings to CRLF - $body = static::normalizeBreaks($body, "\r\n"); - - //Reduce multiple trailing line breaks to a single one - return rtrim($body, "\r\n") . "\r\n"; - } - - /** - * Create the DKIM header and body in a new message header. - * - * @param string $headers_line Header lines - * @param string $subject Subject - * @param string $body Body - * - * @return string - */ - public function DKIM_Add($headers_line, $subject, $body) - { - $DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms - $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body - $DKIMquery = 'dns/txt'; // Query method - $DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone) - $subject_header = "Subject: $subject"; - $headers = explode(static::$LE, $headers_line); - $from_header = ''; - $to_header = ''; - $date_header = ''; - $current = ''; - foreach ($headers as $header) { - if (strpos($header, 'From:') === 0) { - $from_header = $header; - $current = 'from_header'; - } elseif (strpos($header, 'To:') === 0) { - $to_header = $header; - $current = 'to_header'; - } elseif (strpos($header, 'Date:') === 0) { - $date_header = $header; - $current = 'date_header'; - } else { - if (!empty($$current) and strpos($header, ' =?') === 0) { - $$current .= $header; - } else { - $current = ''; - } - } - } - $from = str_replace('|', '=7C', $this->DKIM_QP($from_header)); - $to = str_replace('|', '=7C', $this->DKIM_QP($to_header)); - $date = str_replace('|', '=7C', $this->DKIM_QP($date_header)); - $subject = str_replace( - '|', - '=7C', - $this->DKIM_QP($subject_header) - ); // Copied header fields (dkim-quoted-printable) - $body = $this->DKIM_BodyC($body); - $DKIMlen = strlen($body); // Length of body - $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body - if ('' == $this->DKIM_identity) { - $ident = ''; - } else { - $ident = ' i=' . $this->DKIM_identity . ';'; - } - $dkimhdrs = 'DKIM-Signature: v=1; a=' . - $DKIMsignatureType . '; q=' . - $DKIMquery . '; l=' . - $DKIMlen . '; s=' . - $this->DKIM_selector . - ";\r\n" . - "\tt=" . $DKIMtime . '; c=' . $DKIMcanonicalization . ";\r\n" . - "\th=From:To:Date:Subject;\r\n" . - "\td=" . $this->DKIM_domain . ';' . $ident . "\r\n" . - "\tz=$from\r\n" . - "\t|$to\r\n" . - "\t|$date\r\n" . - "\t|$subject;\r\n" . - "\tbh=" . $DKIMb64 . ";\r\n" . - "\tb="; - $toSign = $this->DKIM_HeaderC( - $from_header . "\r\n" . - $to_header . "\r\n" . - $date_header . "\r\n" . - $subject_header . "\r\n" . - $dkimhdrs - ); - $signed = $this->DKIM_Sign($toSign); - - return static::normalizeBreaks($dkimhdrs . $signed) . static::$LE; - } - - /** - * Detect if a string contains a line longer than the maximum line length - * allowed by RFC 2822 section 2.1.1. - * - * @param string $str - * - * @return bool - */ - public static function hasLineLongerThanMax($str) - { - return (bool) preg_match('/^(.{' . (self::MAX_LINE_LENGTH + strlen(static::$LE)) . ',})/m', $str); - } - - /** - * Allows for public read access to 'to' property. - * Before the send() call, queued addresses (i.e. with IDN) are not yet included. - * - * @return array - */ - public function getToAddresses() - { - return $this->to; - } - - /** - * Allows for public read access to 'cc' property. - * Before the send() call, queued addresses (i.e. with IDN) are not yet included. - * - * @return array - */ - public function getCcAddresses() - { - return $this->cc; - } - - /** - * Allows for public read access to 'bcc' property. - * Before the send() call, queued addresses (i.e. with IDN) are not yet included. - * - * @return array - */ - public function getBccAddresses() - { - return $this->bcc; - } - - /** - * Allows for public read access to 'ReplyTo' property. - * Before the send() call, queued addresses (i.e. with IDN) are not yet included. - * - * @return array - */ - public function getReplyToAddresses() - { - return $this->ReplyTo; - } - - /** - * Allows for public read access to 'all_recipients' property. - * Before the send() call, queued addresses (i.e. with IDN) are not yet included. - * - * @return array - */ - public function getAllRecipientAddresses() - { - return $this->all_recipients; - } - - /** - * Perform a callback. - * - * @param bool $isSent - * @param array $to - * @param array $cc - * @param array $bcc - * @param string $subject - * @param string $body - * @param string $from - * @param array $extra - */ - protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from, $extra) - { - if (!empty($this->action_function) and is_callable($this->action_function)) { - call_user_func($this->action_function, $isSent, $to, $cc, $bcc, $subject, $body, $from, $extra); - } - } - - /** - * Get the OAuth instance. - * - * @return OAuth - */ - public function getOAuth() - { - return $this->oauth; - } - - /** - * Set an OAuth instance. - * - * @param OAuth $oauth - */ - public function setOAuth(OAuth $oauth) - { - $this->oauth = $oauth; - } -} diff --git a/src/vitis/vas/rest/class/PHPMailer/src/POP3.php b/src/vitis/vas/rest/class/PHPMailer/src/POP3.php deleted file mode 100755 index 47aa39490976000b3bcf868637a8620200cb3062..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/src/POP3.php +++ /dev/null @@ -1,419 +0,0 @@ -<?php -/** - * PHPMailer POP-Before-SMTP Authentication Class. - * PHP Version 5.5. - * - * @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project - * - * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> - * @author Jim Jagielski (jimjag) <jimjag@gmail.com> - * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * PHPMailer POP-Before-SMTP Authentication Class. - * Specifically for PHPMailer to use for RFC1939 POP-before-SMTP authentication. - * 1) This class does not support APOP authentication. - * 2) Opening and closing lots of POP3 connections can be quite slow. If you need - * to send a batch of emails then just perform the authentication once at the start, - * and then loop through your mail sending script. Providing this process doesn't - * take longer than the verification period lasts on your POP3 server, you should be fine. - * 3) This is really ancient technology; you should only need to use it to talk to very old systems. - * 4) This POP3 class is deliberately lightweight and incomplete, and implements just - * enough to do authentication. - * If you want a more complete class there are other POP3 classes for PHP available. - * - * @author Richard Davey (original author) <rich@corephp.co.uk> - * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> - * @author Jim Jagielski (jimjag) <jimjag@gmail.com> - * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> - */ -class POP3 -{ - /** - * The POP3 PHPMailer Version number. - * - * @var string - */ - const VERSION = '6.0.3'; - - /** - * Default POP3 port number. - * - * @var int - */ - const DEFAULT_PORT = 110; - - /** - * Default timeout in seconds. - * - * @var int - */ - const DEFAULT_TIMEOUT = 30; - - /** - * Debug display level. - * Options: 0 = no, 1+ = yes. - * - * @var int - */ - public $do_debug = 0; - - /** - * POP3 mail server hostname. - * - * @var string - */ - public $host; - - /** - * POP3 port number. - * - * @var int - */ - public $port; - - /** - * POP3 Timeout Value in seconds. - * - * @var int - */ - public $tval; - - /** - * POP3 username. - * - * @var string - */ - public $username; - - /** - * POP3 password. - * - * @var string - */ - public $password; - - /** - * Resource handle for the POP3 connection socket. - * - * @var resource - */ - protected $pop_conn; - - /** - * Are we connected? - * - * @var bool - */ - protected $connected = false; - - /** - * Error container. - * - * @var array - */ - protected $errors = []; - - /** - * Line break constant. - */ - const LE = "\r\n"; - - /** - * Simple static wrapper for all-in-one POP before SMTP. - * - * @param string $host The hostname to connect to - * @param int|bool $port The port number to connect to - * @param int|bool $timeout The timeout value - * @param string $username - * @param string $password - * @param int $debug_level - * - * @return bool - */ - public static function popBeforeSmtp( - $host, - $port = false, - $timeout = false, - $username = '', - $password = '', - $debug_level = 0 - ) { - $pop = new self(); - - return $pop->authorise($host, $port, $timeout, $username, $password, $debug_level); - } - - /** - * Authenticate with a POP3 server. - * A connect, login, disconnect sequence - * appropriate for POP-before SMTP authorisation. - * - * @param string $host The hostname to connect to - * @param int|bool $port The port number to connect to - * @param int|bool $timeout The timeout value - * @param string $username - * @param string $password - * @param int $debug_level - * - * @return bool - */ - public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0) - { - $this->host = $host; - // If no port value provided, use default - if (false === $port) { - $this->port = static::DEFAULT_PORT; - } else { - $this->port = (int) $port; - } - // If no timeout value provided, use default - if (false === $timeout) { - $this->tval = static::DEFAULT_TIMEOUT; - } else { - $this->tval = (int) $timeout; - } - $this->do_debug = $debug_level; - $this->username = $username; - $this->password = $password; - // Reset the error log - $this->errors = []; - // connect - $result = $this->connect($this->host, $this->port, $this->tval); - if ($result) { - $login_result = $this->login($this->username, $this->password); - if ($login_result) { - $this->disconnect(); - - return true; - } - } - // We need to disconnect regardless of whether the login succeeded - $this->disconnect(); - - return false; - } - - /** - * Connect to a POP3 server. - * - * @param string $host - * @param int|bool $port - * @param int $tval - * - * @return bool - */ - public function connect($host, $port = false, $tval = 30) - { - // Are we already connected? - if ($this->connected) { - return true; - } - - //On Windows this will raise a PHP Warning error if the hostname doesn't exist. - //Rather than suppress it with @fsockopen, capture it cleanly instead - set_error_handler([$this, 'catchWarning']); - - if (false === $port) { - $port = static::DEFAULT_PORT; - } - - // connect to the POP3 server - $this->pop_conn = fsockopen( - $host, // POP3 Host - $port, // Port # - $errno, // Error Number - $errstr, // Error Message - $tval - ); // Timeout (seconds) - // Restore the error handler - restore_error_handler(); - - // Did we connect? - if (false === $this->pop_conn) { - // It would appear not... - $this->setError( - "Failed to connect to server $host on port $port. errno: $errno; errstr: $errstr" - ); - - return false; - } - - // Increase the stream time-out - stream_set_timeout($this->pop_conn, $tval, 0); - - // Get the POP3 server response - $pop3_response = $this->getResponse(); - // Check for the +OK - if ($this->checkResponse($pop3_response)) { - // The connection is established and the POP3 server is talking - $this->connected = true; - - return true; - } - - return false; - } - - /** - * Log in to the POP3 server. - * Does not support APOP (RFC 2828, 4949). - * - * @param string $username - * @param string $password - * - * @return bool - */ - public function login($username = '', $password = '') - { - if (!$this->connected) { - $this->setError('Not connected to POP3 server'); - } - if (empty($username)) { - $username = $this->username; - } - if (empty($password)) { - $password = $this->password; - } - - // Send the Username - $this->sendString("USER $username" . static::LE); - $pop3_response = $this->getResponse(); - if ($this->checkResponse($pop3_response)) { - // Send the Password - $this->sendString("PASS $password" . static::LE); - $pop3_response = $this->getResponse(); - if ($this->checkResponse($pop3_response)) { - return true; - } - } - - return false; - } - - /** - * Disconnect from the POP3 server. - */ - public function disconnect() - { - $this->sendString('QUIT'); - //The QUIT command may cause the daemon to exit, which will kill our connection - //So ignore errors here - try { - @fclose($this->pop_conn); - } catch (Exception $e) { - //Do nothing - } - } - - /** - * Get a response from the POP3 server. - * - * @param int $size The maximum number of bytes to retrieve - * - * @return string - */ - protected function getResponse($size = 128) - { - $response = fgets($this->pop_conn, $size); - if ($this->do_debug >= 1) { - echo 'Server -> Client: ', $response; - } - - return $response; - } - - /** - * Send raw data to the POP3 server. - * - * @param string $string - * - * @return int - */ - protected function sendString($string) - { - if ($this->pop_conn) { - if ($this->do_debug >= 2) { //Show client messages when debug >= 2 - echo 'Client -> Server: ', $string; - } - - return fwrite($this->pop_conn, $string, strlen($string)); - } - - return 0; - } - - /** - * Checks the POP3 server response. - * Looks for for +OK or -ERR. - * - * @param string $string - * - * @return bool - */ - protected function checkResponse($string) - { - if (substr($string, 0, 3) !== '+OK') { - $this->setError("Server reported an error: $string"); - - return false; - } - - return true; - } - - /** - * Add an error to the internal error store. - * Also display debug output if it's enabled. - * - * @param string $error - */ - protected function setError($error) - { - $this->errors[] = $error; - if ($this->do_debug >= 1) { - echo '<pre>'; - foreach ($this->errors as $e) { - print_r($e); - } - echo '</pre>'; - } - } - - /** - * Get an array of error messages, if any. - * - * @return array - */ - public function getErrors() - { - return $this->errors; - } - - /** - * POP3 connection error handler. - * - * @param int $errno - * @param string $errstr - * @param string $errfile - * @param int $errline - */ - protected function catchWarning($errno, $errstr, $errfile, $errline) - { - $this->setError( - 'Connecting to the POP3 server raised a PHP warning:' . - "errno: $errno errstr: $errstr; errfile: $errfile; errline: $errline" - ); - } -} diff --git a/src/vitis/vas/rest/class/PHPMailer/src/SMTP.php b/src/vitis/vas/rest/class/PHPMailer/src/SMTP.php deleted file mode 100755 index 27b752ec30031c8fa7ca2587e39bc4e99dbccd02..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/PHPMailer/src/SMTP.php +++ /dev/null @@ -1,1325 +0,0 @@ -<?php -/** - * PHPMailer RFC821 SMTP email transport class. - * PHP Version 5.5. - * - * @see https://github.com/PHPMailer/PHPMailer/ The PHPMailer GitHub project - * - * @author Marcus Bointon (Synchro/coolbru) <phpmailer@synchromedia.co.uk> - * @author Jim Jagielski (jimjag) <jimjag@gmail.com> - * @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net> - * @author Brent R. Matzelle (original founder) - * @copyright 2012 - 2017 Marcus Bointon - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - * @note This program is distributed in the hope that it will be useful - WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. - */ - -namespace PHPMailer\PHPMailer; - -/** - * PHPMailer RFC821 SMTP email transport class. - * Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server. - * - * @author Chris Ryan - * @author Marcus Bointon <phpmailer@synchromedia.co.uk> - */ -class SMTP -{ - /** - * The PHPMailer SMTP version number. - * - * @var string - */ - const VERSION = '6.0.3'; - - /** - * SMTP line break constant. - * - * @var string - */ - const LE = "\r\n"; - - /** - * The SMTP port to use if one is not specified. - * - * @var int - */ - const DEFAULT_PORT = 25; - - /** - * The maximum line length allowed by RFC 2822 section 2.1.1. - * - * @var int - */ - const MAX_LINE_LENGTH = 998; - - /** - * Debug level for no output. - */ - const DEBUG_OFF = 0; - - /** - * Debug level to show client -> server messages. - */ - const DEBUG_CLIENT = 1; - - /** - * Debug level to show client -> server and server -> client messages. - */ - const DEBUG_SERVER = 2; - - /** - * Debug level to show connection status, client -> server and server -> client messages. - */ - const DEBUG_CONNECTION = 3; - - /** - * Debug level to show all messages. - */ - const DEBUG_LOWLEVEL = 4; - - /** - * Debug output level. - * Options: - * * self::DEBUG_OFF (`0`) No debug output, default - * * self::DEBUG_CLIENT (`1`) Client commands - * * self::DEBUG_SERVER (`2`) Client commands and server responses - * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status - * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages. - * - * @var int - */ - public $do_debug = self::DEBUG_OFF; - - /** - * How to handle debug output. - * Options: - * * `echo` Output plain-text as-is, appropriate for CLI - * * `html` Output escaped, line breaks converted to `<br>`, appropriate for browser output - * * `error_log` Output to error log as configured in php.ini - * Alternatively, you can provide a callable expecting two params: a message string and the debug level: - * - * ```php - * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; - * ``` - * - * Alternatively, you can pass in an instance of a PSR-3 compatible logger, though only `debug` - * level output is used: - * - * ```php - * $mail->Debugoutput = new myPsr3Logger; - * ``` - * - * @var string|callable|\Psr\Log\LoggerInterface - */ - public $Debugoutput = 'echo'; - - /** - * Whether to use VERP. - * - * @see http://en.wikipedia.org/wiki/Variable_envelope_return_path - * @see http://www.postfix.org/VERP_README.html Info on VERP - * - * @var bool - */ - public $do_verp = false; - - /** - * The timeout value for connection, in seconds. - * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2. - * This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure. - * - * @see http://tools.ietf.org/html/rfc2821#section-4.5.3.2 - * - * @var int - */ - public $Timeout = 300; - - /** - * How long to wait for commands to complete, in seconds. - * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2. - * - * @var int - */ - public $Timelimit = 300; - - /** - * Patterns to extract an SMTP transaction id from reply to a DATA command. - * The first capture group in each regex will be used as the ID. - * MS ESMTP returns the message ID, which may not be correct for internal tracking. - * - * @var string[] - */ - protected $smtp_transaction_id_patterns = [ - 'exim' => '/[0-9]{3} OK id=(.*)/', - 'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/', - 'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/', - 'Microsoft_ESMTP' => '/[0-9]{3} 2.[0-9].0 (.*)@(?:.*) Queued mail for delivery/', - 'Amazon_SES' => '/[0-9]{3} Ok (.*)/', - 'SendGrid' => '/[0-9]{3} Ok: queued as (.*)/', - ]; - - /** - * The last transaction ID issued in response to a DATA command, - * if one was detected. - * - * @var string|bool|null - */ - protected $last_smtp_transaction_id; - - /** - * The socket for the server connection. - * - * @var ?resource - */ - protected $smtp_conn; - - /** - * Error information, if any, for the last SMTP command. - * - * @var array - */ - protected $error = [ - 'error' => '', - 'detail' => '', - 'smtp_code' => '', - 'smtp_code_ex' => '', - ]; - - /** - * The reply the server sent to us for HELO. - * If null, no HELO string has yet been received. - * - * @var string|null - */ - protected $helo_rply = null; - - /** - * The set of SMTP extensions sent in reply to EHLO command. - * Indexes of the array are extension names. - * Value at index 'HELO' or 'EHLO' (according to command that was sent) - * represents the server name. In case of HELO it is the only element of the array. - * Other values can be boolean TRUE or an array containing extension options. - * If null, no HELO/EHLO string has yet been received. - * - * @var array|null - */ - protected $server_caps = null; - - /** - * The most recent reply received from the server. - * - * @var string - */ - protected $last_reply = ''; - - /** - * Output debugging info via a user-selected method. - * - * @param string $str Debug string to output - * @param int $level The debug level of this message; see DEBUG_* constants - * - * @see SMTP::$Debugoutput - * @see SMTP::$do_debug - */ - protected function edebug($str, $level = 0) - { - if ($level > $this->do_debug) { - return; - } - //Is this a PSR-3 logger? - if ($this->Debugoutput instanceof \Psr\Log\LoggerInterface) { - $this->Debugoutput->debug($str); - - return; - } - //Avoid clash with built-in function names - if (!in_array($this->Debugoutput, ['error_log', 'html', 'echo']) and is_callable($this->Debugoutput)) { - call_user_func($this->Debugoutput, $str, $level); - - return; - } - switch ($this->Debugoutput) { - case 'error_log': - //Don't output, just log - error_log($str); - break; - case 'html': - //Cleans up output a bit for a better looking, HTML-safe output - echo gmdate('Y-m-d H:i:s'), ' ', htmlentities( - preg_replace('/[\r\n]+/', '', $str), - ENT_QUOTES, - 'UTF-8' - ), "<br>\n"; - break; - case 'echo': - default: - //Normalize line breaks - $str = preg_replace('/\r\n|\r/ms', "\n", $str); - echo gmdate('Y-m-d H:i:s'), - "\t", - //Trim trailing space - trim( - //Indent for readability, except for trailing break - str_replace( - "\n", - "\n \t ", - trim($str) - ) - ), - "\n"; - } - } - - /** - * Connect to an SMTP server. - * - * @param string $host SMTP server IP or host name - * @param int $port The port number to connect to - * @param int $timeout How long to wait for the connection to open - * @param array $options An array of options for stream_context_create() - * - * @return bool - */ - public function connect($host, $port = null, $timeout = 30, $options = []) - { - static $streamok; - //This is enabled by default since 5.0.0 but some providers disable it - //Check this once and cache the result - if (null === $streamok) { - $streamok = function_exists('stream_socket_client'); - } - // Clear errors to avoid confusion - $this->setError(''); - // Make sure we are __not__ connected - if ($this->connected()) { - // Already connected, generate error - $this->setError('Already connected to a server'); - - return false; - } - if (empty($port)) { - $port = self::DEFAULT_PORT; - } - // Connect to the SMTP server - $this->edebug( - "Connection: opening to $host:$port, timeout=$timeout, options=" . - (count($options) > 0 ? var_export($options, true) : 'array()'), - self::DEBUG_CONNECTION - ); - $errno = 0; - $errstr = ''; - if ($streamok) { - $socket_context = stream_context_create($options); - set_error_handler([$this, 'errorHandler']); - $this->smtp_conn = stream_socket_client( - $host . ':' . $port, - $errno, - $errstr, - $timeout, - STREAM_CLIENT_CONNECT, - $socket_context - ); - restore_error_handler(); - } else { - //Fall back to fsockopen which should work in more places, but is missing some features - $this->edebug( - 'Connection: stream_socket_client not available, falling back to fsockopen', - self::DEBUG_CONNECTION - ); - set_error_handler([$this, 'errorHandler']); - $this->smtp_conn = fsockopen( - $host, - $port, - $errno, - $errstr, - $timeout - ); - restore_error_handler(); - } - // Verify we connected properly - if (!is_resource($this->smtp_conn)) { - $this->setError( - 'Failed to connect to server', - '', - (string) $errno, - (string) $errstr - ); - $this->edebug( - 'SMTP ERROR: ' . $this->error['error'] - . ": $errstr ($errno)", - self::DEBUG_CLIENT - ); - - return false; - } - $this->edebug('Connection: opened', self::DEBUG_CONNECTION); - // SMTP server can take longer to respond, give longer timeout for first read - // Windows does not have support for this timeout function - if (substr(PHP_OS, 0, 3) != 'WIN') { - $max = ini_get('max_execution_time'); - // Don't bother if unlimited - if (0 != $max and $timeout > $max) { - @set_time_limit($timeout); - } - stream_set_timeout($this->smtp_conn, $timeout, 0); - } - // Get any announcement - $announce = $this->get_lines(); - $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER); - - return true; - } - - /** - * Initiate a TLS (encrypted) session. - * - * @return bool - */ - public function startTLS() - { - if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) { - return false; - } - - //Allow the best TLS version(s) we can - $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; - - //PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT - //so add them back in manually if we can - if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { - $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; - $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; - } - - // Begin encrypted connection - set_error_handler([$this, 'errorHandler']); - $crypto_ok = stream_socket_enable_crypto( - $this->smtp_conn, - true, - $crypto_method - ); - restore_error_handler(); - - return (bool) $crypto_ok; - } - - /** - * Perform SMTP authentication. - * Must be run after hello(). - * - * @see hello() - * - * @param string $username The user name - * @param string $password The password - * @param string $authtype The auth type (CRAM-MD5, PLAIN, LOGIN, XOAUTH2) - * @param OAuth $OAuth An optional OAuth instance for XOAUTH2 authentication - * - * @return bool True if successfully authenticated - */ - public function authenticate( - $username, - $password, - $authtype = null, - $OAuth = null - ) { - if (!$this->server_caps) { - $this->setError('Authentication is not allowed before HELO/EHLO'); - - return false; - } - - if (array_key_exists('EHLO', $this->server_caps)) { - // SMTP extensions are available; try to find a proper authentication method - if (!array_key_exists('AUTH', $this->server_caps)) { - $this->setError('Authentication is not allowed at this stage'); - // 'at this stage' means that auth may be allowed after the stage changes - // e.g. after STARTTLS - - return false; - } - - $this->edebug('Auth method requested: ' . ($authtype ? $authtype : 'UNKNOWN'), self::DEBUG_LOWLEVEL); - $this->edebug( - 'Auth methods available on the server: ' . implode(',', $this->server_caps['AUTH']), - self::DEBUG_LOWLEVEL - ); - - //If we have requested a specific auth type, check the server supports it before trying others - if (!in_array($authtype, $this->server_caps['AUTH'])) { - $this->edebug('Requested auth method not available: ' . $authtype, self::DEBUG_LOWLEVEL); - $authtype = null; - } - - if (empty($authtype)) { - //If no auth mechanism is specified, attempt to use these, in this order - //Try CRAM-MD5 first as it's more secure than the others - foreach (['CRAM-MD5', 'LOGIN', 'PLAIN', 'XOAUTH2'] as $method) { - if (in_array($method, $this->server_caps['AUTH'])) { - $authtype = $method; - break; - } - } - if (empty($authtype)) { - $this->setError('No supported authentication methods found'); - - return false; - } - self::edebug('Auth method selected: ' . $authtype, self::DEBUG_LOWLEVEL); - } - - if (!in_array($authtype, $this->server_caps['AUTH'])) { - $this->setError("The requested authentication method \"$authtype\" is not supported by the server"); - - return false; - } - } elseif (empty($authtype)) { - $authtype = 'LOGIN'; - } - switch ($authtype) { - case 'PLAIN': - // Start authentication - if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) { - return false; - } - // Send encoded username and password - if (!$this->sendCommand( - 'User & Password', - base64_encode("\0" . $username . "\0" . $password), - 235 - ) - ) { - return false; - } - break; - case 'LOGIN': - // Start authentication - if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) { - return false; - } - if (!$this->sendCommand('Username', base64_encode($username), 334)) { - return false; - } - if (!$this->sendCommand('Password', base64_encode($password), 235)) { - return false; - } - break; - case 'CRAM-MD5': - // Start authentication - if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) { - return false; - } - // Get the challenge - $challenge = base64_decode(substr($this->last_reply, 4)); - - // Build the response - $response = $username . ' ' . $this->hmac($challenge, $password); - - // send encoded credentials - return $this->sendCommand('Username', base64_encode($response), 235); - case 'XOAUTH2': - //The OAuth instance must be set up prior to requesting auth. - if (null === $OAuth) { - return false; - } - $oauth = $OAuth->getOauth64(); - - // Start authentication - if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) { - return false; - } - break; - default: - $this->setError("Authentication method \"$authtype\" is not supported"); - - return false; - } - - return true; - } - - /** - * Calculate an MD5 HMAC hash. - * Works like hash_hmac('md5', $data, $key) - * in case that function is not available. - * - * @param string $data The data to hash - * @param string $key The key to hash with - * - * @return string - */ - protected function hmac($data, $key) - { - if (function_exists('hash_hmac')) { - return hash_hmac('md5', $data, $key); - } - - // The following borrowed from - // http://php.net/manual/en/function.mhash.php#27225 - - // RFC 2104 HMAC implementation for php. - // Creates an md5 HMAC. - // Eliminates the need to install mhash to compute a HMAC - // by Lance Rushing - - $bytelen = 64; // byte length for md5 - if (strlen($key) > $bytelen) { - $key = pack('H*', md5($key)); - } - $key = str_pad($key, $bytelen, chr(0x00)); - $ipad = str_pad('', $bytelen, chr(0x36)); - $opad = str_pad('', $bytelen, chr(0x5c)); - $k_ipad = $key ^ $ipad; - $k_opad = $key ^ $opad; - - return md5($k_opad . pack('H*', md5($k_ipad . $data))); - } - - /** - * Check connection state. - * - * @return bool True if connected - */ - public function connected() - { - if (is_resource($this->smtp_conn)) { - $sock_status = stream_get_meta_data($this->smtp_conn); - if ($sock_status['eof']) { - // The socket is valid but we are not connected - $this->edebug( - 'SMTP NOTICE: EOF caught while checking if connected', - self::DEBUG_CLIENT - ); - $this->close(); - - return false; - } - - return true; // everything looks good - } - - return false; - } - - /** - * Close the socket and clean up the state of the class. - * Don't use this function without first trying to use QUIT. - * - * @see quit() - */ - public function close() - { - $this->setError(''); - $this->server_caps = null; - $this->helo_rply = null; - if (is_resource($this->smtp_conn)) { - // close the connection and cleanup - fclose($this->smtp_conn); - $this->smtp_conn = null; //Makes for cleaner serialization - $this->edebug('Connection: closed', self::DEBUG_CONNECTION); - } - } - - /** - * Send an SMTP DATA command. - * Issues a data command and sends the msg_data to the server, - * finializing the mail transaction. $msg_data is the message - * that is to be send with the headers. Each header needs to be - * on a single line followed by a <CRLF> with the message headers - * and the message body being separated by an additional <CRLF>. - * Implements RFC 821: DATA <CRLF>. - * - * @param string $msg_data Message data to send - * - * @return bool - */ - public function data($msg_data) - { - //This will use the standard timelimit - if (!$this->sendCommand('DATA', 'DATA', 354)) { - return false; - } - - /* The server is ready to accept data! - * According to rfc821 we should not send more than 1000 characters on a single line (including the LE) - * so we will break the data up into lines by \r and/or \n then if needed we will break each of those into - * smaller lines to fit within the limit. - * We will also look for lines that start with a '.' and prepend an additional '.'. - * NOTE: this does not count towards line-length limit. - */ - - // Normalize line breaks before exploding - $lines = explode("\n", str_replace(["\r\n", "\r"], "\n", $msg_data)); - - /* To distinguish between a complete RFC822 message and a plain message body, we check if the first field - * of the first line (':' separated) does not contain a space then it _should_ be a header and we will - * process all lines before a blank line as headers. - */ - - $field = substr($lines[0], 0, strpos($lines[0], ':')); - $in_headers = false; - if (!empty($field) and strpos($field, ' ') === false) { - $in_headers = true; - } - - foreach ($lines as $line) { - $lines_out = []; - if ($in_headers and $line == '') { - $in_headers = false; - } - //Break this line up into several smaller lines if it's too long - //Micro-optimisation: isset($str[$len]) is faster than (strlen($str) > $len), - while (isset($line[self::MAX_LINE_LENGTH])) { - //Working backwards, try to find a space within the last MAX_LINE_LENGTH chars of the line to break on - //so as to avoid breaking in the middle of a word - $pos = strrpos(substr($line, 0, self::MAX_LINE_LENGTH), ' '); - //Deliberately matches both false and 0 - if (!$pos) { - //No nice break found, add a hard break - $pos = self::MAX_LINE_LENGTH - 1; - $lines_out[] = substr($line, 0, $pos); - $line = substr($line, $pos); - } else { - //Break at the found point - $lines_out[] = substr($line, 0, $pos); - //Move along by the amount we dealt with - $line = substr($line, $pos + 1); - } - //If processing headers add a LWSP-char to the front of new line RFC822 section 3.1.1 - if ($in_headers) { - $line = "\t" . $line; - } - } - $lines_out[] = $line; - - //Send the lines to the server - foreach ($lines_out as $line_out) { - //RFC2821 section 4.5.2 - if (!empty($line_out) and $line_out[0] == '.') { - $line_out = '.' . $line_out; - } - $this->client_send($line_out . static::LE, 'DATA'); - } - } - - //Message data has been sent, complete the command - //Increase timelimit for end of DATA command - $savetimelimit = $this->Timelimit; - $this->Timelimit = $this->Timelimit * 2; - $result = $this->sendCommand('DATA END', '.', 250); - $this->recordLastTransactionID(); - //Restore timelimit - $this->Timelimit = $savetimelimit; - - return $result; - } - - /** - * Send an SMTP HELO or EHLO command. - * Used to identify the sending server to the receiving server. - * This makes sure that client and server are in a known state. - * Implements RFC 821: HELO <SP> <domain> <CRLF> - * and RFC 2821 EHLO. - * - * @param string $host The host name or IP to connect to - * - * @return bool - */ - public function hello($host = '') - { - //Try extended hello first (RFC 2821) - return (bool) ($this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host)); - } - - /** - * Send an SMTP HELO or EHLO command. - * Low-level implementation used by hello(). - * - * @param string $hello The HELO string - * @param string $host The hostname to say we are - * - * @return bool - * - * @see hello() - */ - protected function sendHello($hello, $host) - { - $noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250); - $this->helo_rply = $this->last_reply; - if ($noerror) { - $this->parseHelloFields($hello); - } else { - $this->server_caps = null; - } - - return $noerror; - } - - /** - * Parse a reply to HELO/EHLO command to discover server extensions. - * In case of HELO, the only parameter that can be discovered is a server name. - * - * @param string $type `HELO` or `EHLO` - */ - protected function parseHelloFields($type) - { - $this->server_caps = []; - $lines = explode("\n", $this->helo_rply); - - foreach ($lines as $n => $s) { - //First 4 chars contain response code followed by - or space - $s = trim(substr($s, 4)); - if (empty($s)) { - continue; - } - $fields = explode(' ', $s); - if (!empty($fields)) { - if (!$n) { - $name = $type; - $fields = $fields[0]; - } else { - $name = array_shift($fields); - switch ($name) { - case 'SIZE': - $fields = ($fields ? $fields[0] : 0); - break; - case 'AUTH': - if (!is_array($fields)) { - $fields = []; - } - break; - default: - $fields = true; - } - } - $this->server_caps[$name] = $fields; - } - } - } - - /** - * Send an SMTP MAIL command. - * Starts a mail transaction from the email address specified in - * $from. Returns true if successful or false otherwise. If True - * the mail transaction is started and then one or more recipient - * commands may be called followed by a data command. - * Implements RFC 821: MAIL <SP> FROM:<reverse-path> <CRLF>. - * - * @param string $from Source address of this message - * - * @return bool - */ - public function mail($from) - { - $useVerp = ($this->do_verp ? ' XVERP' : ''); - - return $this->sendCommand( - 'MAIL FROM', - 'MAIL FROM:<' . $from . '>' . $useVerp, - 250 - ); - } - - /** - * Send an SMTP QUIT command. - * Closes the socket if there is no error or the $close_on_error argument is true. - * Implements from RFC 821: QUIT <CRLF>. - * - * @param bool $close_on_error Should the connection close if an error occurs? - * - * @return bool - */ - public function quit($close_on_error = true) - { - $noerror = $this->sendCommand('QUIT', 'QUIT', 221); - $err = $this->error; //Save any error - if ($noerror or $close_on_error) { - $this->close(); - $this->error = $err; //Restore any error from the quit command - } - - return $noerror; - } - - /** - * Send an SMTP RCPT command. - * Sets the TO argument to $toaddr. - * Returns true if the recipient was accepted false if it was rejected. - * Implements from RFC 821: RCPT <SP> TO:<forward-path> <CRLF>. - * - * @param string $address The address the message is being sent to - * - * @return bool - */ - public function recipient($address) - { - return $this->sendCommand( - 'RCPT TO', - 'RCPT TO:<' . $address . '>', - [250, 251] - ); - } - - /** - * Send an SMTP RSET command. - * Abort any transaction that is currently in progress. - * Implements RFC 821: RSET <CRLF>. - * - * @return bool True on success - */ - public function reset() - { - return $this->sendCommand('RSET', 'RSET', 250); - } - - /** - * Send a command to an SMTP server and check its return code. - * - * @param string $command The command name - not sent to the server - * @param string $commandstring The actual command to send - * @param int|array $expect One or more expected integer success codes - * - * @return bool True on success - */ - protected function sendCommand($command, $commandstring, $expect) - { - if (!$this->connected()) { - $this->setError("Called $command without being connected"); - - return false; - } - //Reject line breaks in all commands - if (strpos($commandstring, "\n") !== false or strpos($commandstring, "\r") !== false) { - $this->setError("Command '$command' contained line breaks"); - - return false; - } - $this->client_send($commandstring . static::LE, $command); - - $this->last_reply = $this->get_lines(); - // Fetch SMTP code and possible error code explanation - $matches = []; - if (preg_match('/^([0-9]{3})[ -](?:([0-9]\\.[0-9]\\.[0-9]) )?/', $this->last_reply, $matches)) { - $code = $matches[1]; - $code_ex = (count($matches) > 2 ? $matches[2] : null); - // Cut off error code from each response line - $detail = preg_replace( - "/{$code}[ -]" . - ($code_ex ? str_replace('.', '\\.', $code_ex) . ' ' : '') . '/m', - '', - $this->last_reply - ); - } else { - // Fall back to simple parsing if regex fails - $code = substr($this->last_reply, 0, 3); - $code_ex = null; - $detail = substr($this->last_reply, 4); - } - - $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER); - - if (!in_array($code, (array) $expect)) { - $this->setError( - "$command command failed", - $detail, - $code, - $code_ex - ); - $this->edebug( - 'SMTP ERROR: ' . $this->error['error'] . ': ' . $this->last_reply, - self::DEBUG_CLIENT - ); - - return false; - } - - $this->setError(''); - - return true; - } - - /** - * Send an SMTP SAML command. - * Starts a mail transaction from the email address specified in $from. - * Returns true if successful or false otherwise. If True - * the mail transaction is started and then one or more recipient - * commands may be called followed by a data command. This command - * will send the message to the users terminal if they are logged - * in and send them an email. - * Implements RFC 821: SAML <SP> FROM:<reverse-path> <CRLF>. - * - * @param string $from The address the message is from - * - * @return bool - */ - public function sendAndMail($from) - { - return $this->sendCommand('SAML', "SAML FROM:$from", 250); - } - - /** - * Send an SMTP VRFY command. - * - * @param string $name The name to verify - * - * @return bool - */ - public function verify($name) - { - return $this->sendCommand('VRFY', "VRFY $name", [250, 251]); - } - - /** - * Send an SMTP NOOP command. - * Used to keep keep-alives alive, doesn't actually do anything. - * - * @return bool - */ - public function noop() - { - return $this->sendCommand('NOOP', 'NOOP', 250); - } - - /** - * Send an SMTP TURN command. - * This is an optional command for SMTP that this class does not support. - * This method is here to make the RFC821 Definition complete for this class - * and _may_ be implemented in future. - * Implements from RFC 821: TURN <CRLF>. - * - * @return bool - */ - public function turn() - { - $this->setError('The SMTP TURN command is not implemented'); - $this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT); - - return false; - } - - /** - * Send raw data to the server. - * - * @param string $data The data to send - * @param string $command Optionally, the command this is part of, used only for controlling debug output - * - * @return int|bool The number of bytes sent to the server or false on error - */ - public function client_send($data, $command = '') - { - //If SMTP transcripts are left enabled, or debug output is posted online - //it can leak credentials, so hide credentials in all but lowest level - if (self::DEBUG_LOWLEVEL > $this->do_debug and - in_array($command, ['User & Password', 'Username', 'Password'], true)) { - $this->edebug('CLIENT -> SERVER: <credentials hidden>', self::DEBUG_CLIENT); - } else { - $this->edebug('CLIENT -> SERVER: ' . $data, self::DEBUG_CLIENT); - } - set_error_handler([$this, 'errorHandler']); - $result = fwrite($this->smtp_conn, $data); - restore_error_handler(); - - return $result; - } - - /** - * Get the latest error. - * - * @return array - */ - public function getError() - { - return $this->error; - } - - /** - * Get SMTP extensions available on the server. - * - * @return array|null - */ - public function getServerExtList() - { - return $this->server_caps; - } - - /** - * Get metadata about the SMTP server from its HELO/EHLO response. - * The method works in three ways, dependent on argument value and current state: - * 1. HELO/EHLO has not been sent - returns null and populates $this->error. - * 2. HELO has been sent - - * $name == 'HELO': returns server name - * $name == 'EHLO': returns boolean false - * $name == any other string: returns null and populates $this->error - * 3. EHLO has been sent - - * $name == 'HELO'|'EHLO': returns the server name - * $name == any other string: if extension $name exists, returns True - * or its options (e.g. AUTH mechanisms supported). Otherwise returns False. - * - * @param string $name Name of SMTP extension or 'HELO'|'EHLO' - * - * @return mixed - */ - public function getServerExt($name) - { - if (!$this->server_caps) { - $this->setError('No HELO/EHLO was sent'); - - return; - } - - if (!array_key_exists($name, $this->server_caps)) { - if ('HELO' == $name) { - return $this->server_caps['EHLO']; - } - if ('EHLO' == $name || array_key_exists('EHLO', $this->server_caps)) { - return false; - } - $this->setError('HELO handshake was used; No information about server extensions available'); - - return; - } - - return $this->server_caps[$name]; - } - - /** - * Get the last reply from the server. - * - * @return string - */ - public function getLastReply() - { - return $this->last_reply; - } - - /** - * Read the SMTP server's response. - * Either before eof or socket timeout occurs on the operation. - * With SMTP we can tell if we have more lines to read if the - * 4th character is '-' symbol. If it is a space then we don't - * need to read anything else. - * - * @return string - */ - protected function get_lines() - { - // If the connection is bad, give up straight away - if (!is_resource($this->smtp_conn)) { - return ''; - } - $data = ''; - $endtime = 0; - stream_set_timeout($this->smtp_conn, $this->Timeout); - if ($this->Timelimit > 0) { - $endtime = time() + $this->Timelimit; - } - $selR = [$this->smtp_conn]; - $selW = null; - while (is_resource($this->smtp_conn) and !feof($this->smtp_conn)) { - //Must pass vars in here as params are by reference - if (!stream_select($selR, $selW, $selW, $this->Timelimit)) { - $this->edebug( - 'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)', - self::DEBUG_LOWLEVEL - ); - break; - } - //Deliberate noise suppression - errors are handled afterwards - $str = @fgets($this->smtp_conn, 515); - $this->edebug('SMTP INBOUND: "' . trim($str) . '"', self::DEBUG_LOWLEVEL); - $data .= $str; - // If response is only 3 chars (not valid, but RFC5321 S4.2 says it must be handled), - // or 4th character is a space, we are done reading, break the loop, - // string array access is a micro-optimisation over strlen - if (!isset($str[3]) or (isset($str[3]) and $str[3] == ' ')) { - break; - } - // Timed-out? Log and break - $info = stream_get_meta_data($this->smtp_conn); - if ($info['timed_out']) { - $this->edebug( - 'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)', - self::DEBUG_LOWLEVEL - ); - break; - } - // Now check if reads took too long - if ($endtime and time() > $endtime) { - $this->edebug( - 'SMTP -> get_lines(): timelimit reached (' . - $this->Timelimit . ' sec)', - self::DEBUG_LOWLEVEL - ); - break; - } - } - - return $data; - } - - /** - * Enable or disable VERP address generation. - * - * @param bool $enabled - */ - public function setVerp($enabled = false) - { - $this->do_verp = $enabled; - } - - /** - * Get VERP address generation mode. - * - * @return bool - */ - public function getVerp() - { - return $this->do_verp; - } - - /** - * Set error messages and codes. - * - * @param string $message The error message - * @param string $detail Further detail on the error - * @param string $smtp_code An associated SMTP error code - * @param string $smtp_code_ex Extended SMTP code - */ - protected function setError($message, $detail = '', $smtp_code = '', $smtp_code_ex = '') - { - $this->error = [ - 'error' => $message, - 'detail' => $detail, - 'smtp_code' => $smtp_code, - 'smtp_code_ex' => $smtp_code_ex, - ]; - } - - /** - * Set debug output method. - * - * @param string|callable $method The name of the mechanism to use for debugging output, or a callable to handle it - */ - public function setDebugOutput($method = 'echo') - { - $this->Debugoutput = $method; - } - - /** - * Get debug output method. - * - * @return string - */ - public function getDebugOutput() - { - return $this->Debugoutput; - } - - /** - * Set debug output level. - * - * @param int $level - */ - public function setDebugLevel($level = 0) - { - $this->do_debug = $level; - } - - /** - * Get debug output level. - * - * @return int - */ - public function getDebugLevel() - { - return $this->do_debug; - } - - /** - * Set SMTP timeout. - * - * @param int $timeout The timeout duration in seconds - */ - public function setTimeout($timeout = 0) - { - $this->Timeout = $timeout; - } - - /** - * Get SMTP timeout. - * - * @return int - */ - public function getTimeout() - { - return $this->Timeout; - } - - /** - * Reports an error number and string. - * - * @param int $errno The error number returned by PHP - * @param string $errmsg The error message returned by PHP - * @param string $errfile The file the error occurred in - * @param int $errline The line number the error occurred on - */ - protected function errorHandler($errno, $errmsg, $errfile = '', $errline = 0) - { - $notice = 'Connection failed.'; - $this->setError( - $notice, - $errmsg, - (string) $errno - ); - $this->edebug( - "$notice Error #$errno: $errmsg [$errfile line $errline]", - self::DEBUG_CONNECTION - ); - } - - /** - * Extract and return the ID of the last SMTP transaction based on - * a list of patterns provided in SMTP::$smtp_transaction_id_patterns. - * Relies on the host providing the ID in response to a DATA command. - * If no reply has been received yet, it will return null. - * If no pattern was matched, it will return false. - * - * @return bool|null|string - */ - protected function recordLastTransactionID() - { - $reply = $this->getLastReply(); - - if (empty($reply)) { - $this->last_smtp_transaction_id = null; - } else { - $this->last_smtp_transaction_id = false; - foreach ($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) { - if (preg_match($smtp_transaction_id_pattern, $reply, $matches)) { - $this->last_smtp_transaction_id = trim($matches[1]); - break; - } - } - } - - return $this->last_smtp_transaction_id; - } - - /** - * Get the queue/transaction ID of the last SMTP transaction - * If no reply has been received yet, it will return null. - * If no pattern was matched, it will return false. - * - * @return bool|null|string - * - * @see recordLastTransactionID() - */ - public function getLastTransactionID() - { - return $this->last_smtp_transaction_id; - } -} diff --git a/src/vitis/vas/rest/class/aws_lib/AWS_Notification/AWS_SMS.class.inc b/src/vitis/vas/rest/class/aws_lib/AWS_Notification/AWS_SMS.class.inc deleted file mode 100755 index f1c1388506a87f7af013f81b48c334ec381b8324..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/aws_lib/AWS_Notification/AWS_SMS.class.inc +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -require_once __DIR__ . '/AWS_notification.class.inc'; -require_once("vmlib/logUtil.inc"); - -/** - * \file AWS_SMS.php - * \brief Class to send SMS by the Veremes's service - * - * \author Anthony Borghi <anthony.borghi@veremes.com> - */ - -Class AWS_SMS extends AWS_notification{ - - const AWS_API_SMS_TYPE = "SMS"; - - //$slogFileName = $properties['log_dir'] . "/notifications/sms.log"; - - /** - * construct - * @param {string} $sAwsAccessKeyId Access key ID. - * @param {string} $sAwsSecretAccessKey Secret access key. - * @param {string} $sDeploymentName Name of the deployment for this API. - */ - function __construct ($sAwsAccessKeyId, $sAwsSecretAccessKey, $sDeploymentName, $sAppIdentifier) { - parent::__construct($sAwsAccessKeyId, $sAwsSecretAccessKey, $sDeploymentName, $sAppIdentifier); - // stockage du noeud principal de déploiement - $this->sType = self::AWS_API_SMS_TYPE; - // définition de la structure de donnée pour ce type de notification - $this->aRequiredFields = array("message", "destination"); - $this->aOptionalFields = array("sender"); - } - - - function sendSMS ($aValues){ - $bError = $this->defineNotification ($aValues); - - if (!$bError){ - //error_log("send SMS to " . $this->aRequestParams["notificationParams"]["destination"]); - $mReturn = $this->sendRequestToSendNotification(); - - if($this->aLastCurlRequestInfo["http_code"] != 200){ - $this->bError = true; - writeToErrorLog("can't send SMS to " . $this->aRequestParams["notificationParams"]["destination"] . ". The service return this message : " . $mReturn); - } else { - writeToLog("send SMS to " . $this->aRequestParams["notificationParams"]["destination"], $this->slogFileName); - } - - //error_log(print_r($this->aLastCurlRequestInfo, true)); - } else { - writeToErrorLog("can't send SMS (missing parameters)"); - } - } -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/aws_lib/AWS_Notification/AWS_notification.class.inc b/src/vitis/vas/rest/class/aws_lib/AWS_Notification/AWS_notification.class.inc deleted file mode 100755 index 004e9aaaae8a86368a3a93b67095ab34bae282f2..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/aws_lib/AWS_Notification/AWS_notification.class.inc +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -require_once __DIR__ . '/../AmazonApiGateway.class.inc'; - -/** - * \file AWS_notification.php - * \brief Class to send notifications by the Veremes's service - * - * \author Anthony Borghi <anthony.borghi@veremes.com> - */ - -Class AWS_notification extends AmazonApiGateway{ - - public $sType; // Type de notification - public $aRequiredFields = array(); // Liste des champs requis pour la notification en cours - public $aOptionalFields = array(); // Liste des champs optionnels pour la notification en cours - public $oAWSGateway; // Objet de référence sur l'API gateway - public $sDeploymentName; // Main node of API Deployment - public $aRequestParams = array(); // Parameter to send the notification - public $sAppIdentifier = null; // Parameter to indentify the app - - public $bError = false; - - // Liste de constante en lien avec l'API gateway du service - const AWS_API_REGION = 'eu-west-1'; - const AWS_API_ID = '6u2e49upog'; // surement inutile si on utilise Route 53 - const AWS_API_SEND_NOTIFICATION_STAGE = '/addnotification'; - const AWS_API_SEND_NOTIFICATION_METHOD = 'POST'; - - /** - * construct - * @param {string} $sAwsAccessKeyId Access key ID. - * @param {string} $sAwsSecretAccessKey Secret access key. - * @param {string} $sDeploymentName Name of the deployment for this API. - */ - function __construct ($sAwsAccessKeyId, $sAwsSecretAccessKey, $sDeploymentName, $sAppIdentifier) { - parent::__construct($sAwsAccessKeyId, $sAwsSecretAccessKey, self::AWS_API_REGION, self::AWS_API_ID, $sDeploymentName . self::AWS_API_SEND_NOTIFICATION_STAGE); - // stockage du noeud principal de déploiement - $this->sDeploymentName = $sDeploymentName; - $this->sAppIdentifier = $sAppIdentifier; - } - - function defineNotification ($aValues){ - - $aRequiredFieldsFilled = array(); - $aParams = array(); - - foreach ($aValues as $sKey => $mValue) { - if (in_array($sKey, $this->aRequiredFields)){ - $aParams[$sKey] = $mValue; - array_push($aRequiredFieldsFilled, $sKey); - } else if (in_array($sKey, $this->aOptionalFields)){ - $aParams[$sKey] = $mValue; - } - } - - $this->aRequestParams["notificationParams"] = $aParams;// json_encode($aParams); - - $this->bError = (count($aRequiredFieldsFilled) !== count($this->aRequiredFields)); - - return $this->bError; - } - - - function sendRequestToSendNotification (){ - - if(!empty($this->sAppIdentifier)){ - $this->aRequestParams["app_id"] = $this->sAppIdentifier; - } - - $this->aRequestParams["notificationType"] = $this->sType; - - $sJsonParams = json_encode($this->aRequestParams); - //$iParamsLength = strlen($sJsonParams); - - $sUrl = "https://" . $this->sHost . "/" . $this->sStageName; - //$sFullUrl = self::AWS_API_SEND_NOTIFICATION_METHOD . ' ' . $sUrl . ' HTTP/1.1'; - - $aAddedHeaders = array('content-type: application/json'); - - $aHeaders = $this->generateGatewayRequestHeaders(self::AWS_API_SEND_NOTIFICATION_METHOD, $sUrl, $aAddedHeaders, $sJsonParams); - - return $this->curlRequest($sUrl, self::AWS_API_SEND_NOTIFICATION_METHOD, $sJsonParams, $aHeaders); - } -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/aws_lib/AmazonAWS.class.inc b/src/vitis/vas/rest/class/aws_lib/AmazonAWS.class.inc deleted file mode 100644 index 223a0534b6262627e65631e7905eb9256825f8b9..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/aws_lib/AmazonAWS.class.inc +++ /dev/null @@ -1,485 +0,0 @@ -<?php -require_once("vmlib/logUtil.inc"); - -/** - * \file AmazonAWS.php - * \brief Main class to use AWS services (keyGen, CrulRequest, ...) - * - * \author Frederic Carretero <frederic.carretero@veremes.com> - */ - -Class AmazonAWS { - const HASHING_ALGORITHM = 'sha256'; - public $sAwsRegion; - public $aLastCurlRequestInfo; - public $sHost; - public $sLogFilePath; // Chemin optionnel vers le fichier de log pour Amazon S3. - private $sAwsAccessKeyId; - private $sAwsSecretAccessKey; - private $sHashingAlgorithmString; - - /** - * construct - * @param {string} $sAwsAccessKeyId Access key ID. - * @param {string} $sAwsSecretAccessKey Secret access key. - * @param {string} $sAwsRegion Region. - */ - function __construct ($sAwsAccessKeyId, $sAwsSecretAccessKey, $sAwsRegion) { - $this->sAwsAccessKeyId = $sAwsAccessKeyId; - $this->sAwsSecretAccessKey = $sAwsSecretAccessKey; - $this->sAwsRegion = $sAwsRegion; - $this->sHashingAlgorithmString = 'AWS4-HMAC-' . strtoupper(self::HASHING_ALGORITHM); - } - - /** - * Get value of inaccessible property. - * @param {string} $sPropertyName Name of the property. - * @return Paramter's value - */ - function __get($sPropertyName) { - if (isset($this->$sPropertyName)) - return $this->$sPropertyName; - } - - /** - * generate an header for AWS request - * @param {string} $sMainRequestString Requête principale: 'GET https://s3.amazonaws.com/azerty/?Action=ListUsers&Version=2010-05-08 HTTP/1.1'. - * @param {string} $sHost hostname du serveur de destination. - * @param {string} $sService Service à contacter (Constante dans les fichiers enfants). - * @param {Array} $aHeaders Liste de headers à ajouter. - * @param {string} $sRequestPayload Chaine de référence pour le calcul de la signature (dans le cas du POST passer les paramètres de la requête, S3 'UNSIGNED-PAYLOAD', sinon laisser chaine vide). - * @param {boolean} $bAddAmzContentHeader Ajoute le header x-amz-content à la liste des headers signés. - * @param {string|object} $sTimestamp objet timestamp à utiliser (le mot clef 'Now' permet à la fonction d'intancier un objet sur le timestamp courant). A n'utiliser que pour des tests - * @param {boolean} $bFromTestCase Active les débuggage de la signature (log). - * @return array request header for AWS or false if error - */ - function generateAwsSignedHeaders ($sMainRequestString, $sHost, $sService, $aHeaders = array(), $sRequestPayload = 'UNSIGNED-PAYLOAD', $bAddAmzContentHeader = false, $sTimestamp = "Now", $bFromTestCase = false){ - - $aMainRequest = explode(" ", $sMainRequestString); - - if (count($aMainRequest) < 2){ - writeToErrorLog('sMainRequestString has to be as this pattern : GET https://s3.amazonaws.com/azerty/?Action=ListUsers&Version=2010-05-08 HTTP/1.1 and yours is ' . $sMainRequestString); - return false; - } - - if (count($aMainRequest) > 3){ - // on sauvegarde avant de trafiquer la requete - $aTempMainRequest = $aMainRequest; - $aMainRequest = array(); - $aMainRequest[] = $aTempMainRequest[0]; - // éliminer - $sTempUrl = ""; - - for($i = 1; $i <= (count($aTempMainRequest) - 2); $i++){ - $sTempUrl .= $aTempMainRequest[$i]; - - if($i != (count($aTempMainRequest) - 2)){ - $sTempUrl .= " "; - } - } - - $aMainRequest[] = $sTempUrl; - - $aMainRequest[] = end($aTempMainRequest); - } - - if ($sTimestamp == "Now"){ - $sTimestamp = time(); - } - - // Entêtes obligatoires. - $sXAmzDate = gmdate('Ymd\THis\Z', $sTimestamp); - $sDate = gmdate('Ymd', $sTimestamp); - - $sHashedPayload = $this->createHashedPayload($sRequestPayload);; - - array_push($aHeaders, 'x-amz-date: ' . $sXAmzDate); - array_push($aHeaders, 'host: ' . $sHost); - - if($bAddAmzContentHeader){ - array_push($aHeaders, 'x-amz-content-' . self::HASHING_ALGORITHM . ': ' . $sHashedPayload); - } - - $sSignedHeaders = $this->prepareQuerySignedHeaders($aHeaders); - - // 1. Création d'une demande canonique pour Signature V4. - $sCanonicalRequest = $this->mainRequestArrayToCanonicalString($aMainRequest, $sHost, $aHeaders, $sHashedPayload, $sSignedHeaders); - - if($bFromTestCase){ - writeToDebugLog("creq : \n" . $sCanonicalRequest); - } - - // 2. Création d'une chaîne à signer pour Signature V4. - $sStringToSign = $this->createStringToSignv2($sDate, $sXAmzDate, $sCanonicalRequest, $sService); - - if($bFromTestCase){ - writeToDebugLog("sts : \n" . $sStringToSign); - } - - // 3. Calcul de la signature pour AWS Signature V4. - $sSigningKey = $this->createSigningKey($sService, $sDate); - $sSignature = $this->calculateSignature($sStringToSign, $sSigningKey); - - // 4. Création de l'entête "Authorization" pour la requête. - $sCredentialScope = $this->createCredentialScope($sDate, $sService); - $sAuthorizationHeader = $this->generateAuthorizationHeader($this->sHashingAlgorithmString, $sCredentialScope, $sSignedHeaders, $sSignature); - - if($bFromTestCase){ - writeToDebugLog("authz : \n" . $sAuthorizationHeader); - } - - array_push($aHeaders, 'Authorization: ' . $sAuthorizationHeader); - - return $aHeaders; - } - - /** - * generate an canonical request for AWS request - * @param {array} $aMainRequest Main request String with this pattern: 'GET https://s3.amazonaws.com/azerty/?Action=ListUsers&Version=2010-05-08 HTTP/1.1' exploded on spaces. - * @param {string} $sHost HostName to parse url - * @param {array} $aHeaders sorted array of all the headers of this request - * @param {string} $sHashedPayload hash of the payload request - * @return array request header for AWS or false if error - */ - function mainRequestArrayToCanonicalString($aMainRequest, $sHost, $aHeaders, $sHashedPayload, $sSignedHeaders){ - $sHTTPRequestMethod = $aMainRequest[0]; - - $aFullUrl = explode("?", $aMainRequest[1]); - - $sCanonicalQueryString = ""; - if(count($aFullUrl) > 1){ - $sCanonicalQueryString = $this->prepareQueryString($aFullUrl[1]); - } - - $sCanonicalUri = $this->prepareQueryUri($aFullUrl[0], $sHost); - $sCanonicalHeaders = $this->prepareQueryHeaders($aHeaders); - $sCanonicalSignedHeaders = $sSignedHeaders; - - $sReturn = $sHTTPRequestMethod . chr(10) . - $sCanonicalUri . chr(10) . - $sCanonicalQueryString . chr(10) . - $sCanonicalHeaders . chr(10) . - $sCanonicalSignedHeaders . chr(10) . - $sHashedPayload; - - return $sReturn; - } - - /** - * Curl request - * @param {string} $sUrl Url of the Curl request. - * @param {string} $sType Type of the Curl request (GET, POST). - * @param {array} $aData Data of the Curl request. - * @param {array} $aHeaders Headers of the Curl request. - * @return Request result - */ - // - function curlRequest($sUrl, $sType, $aData = array(), $aHeaders = array(), $bMultipartFormData = false) { - // - $this->aLastCurlRequestInfo = ''; - // - $ch = curl_init(); - $sType = strtoupper($sType); - // Force la méthode de requête utilisée (GET, POST...). - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $sType); - // Url à utiliser. - if (($sType == 'GET' || $sType == 'DELETE') && !empty($aData)) - $sUrl .= '?' . http_build_query($aData); - curl_setopt($ch, CURLOPT_URL, $sUrl); - // Retour sous forme de texte. - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - // Requête POST. - if ($sType == 'POST') { - curl_setopt($ch, CURLOPT_POST, true); - // Chaîne de requête en encodage URL. - if (is_array($aData) && !$bMultipartFormData) - $aData = http_build_query($aData); - // Données de la requête. - curl_setopt($ch, CURLOPT_POSTFIELDS, $aData); - // - curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true); - // Entête pour la requête en POST. - //$aHeaders[] = 'Content-Type: application/x-www-form-urlencoded'; - } - // Entête pour la requête - //$aHeaders[] = 'Accept: application/json'; - //if (!empty($this->sToken)) - //$aHeaders[] = 'Authorization: Bearer ' . $this->sToken; // Token obligatoire pour éxécuter la requête. - // Durée max. de la requête. - //curl_setopt($ch, CURLOPT_TIMEOUT, 120); - // Exécute la session CURL. - // Log. - /* - $handle = fopen("curl_log.txt", "a"); - fwrite($handle, PHP_EOL . '-----------------------' . PHP_EOL); - curl_setopt($ch, CURLOPT_VERBOSE, true); - curl_setopt($ch, CURLOPT_STDERR , $handle); - */ - // ajout des en-tête - curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeaders); - curl_setopt($ch, CURLINFO_HEADER_OUT, true); - //curl_setopt($ch, CURLOPT_ENCODING, ""); - //curl_setopt($ch, CURLOPT_MAXREDIRS, 10); - curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); - // Curl error: SSL certificate problem: unable to get local issuer certificate - // Curl error n°60 - curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false); - // - $output = curl_exec($ch); - // Erreur de la requête CURL. - if(curl_errno($ch)) { - writeToErrorLog('Curl error: ' . curl_error($ch)); - writeToErrorLog('Curl error n°' . curl_errno($ch)); - } - // Informations de la requête. - $aCurlInfo = curl_getinfo($ch); - $this->aLastCurlRequestInfo = $aCurlInfo; - //file_put_contents('C:/svn/gtf_cloud/gtf.engines/log/response.log', print_r($aCurlInfo, true)); - //writeToErrorLog(print_r(curl_getinfo($ch), true)); - - // Ferme la session CURL. - curl_close($ch); - // - //fclose($handle); - // - return $output; - } - - /** - * Creating a credential scope. - * @param {string} $sDate Date (YYYYMMDD). - * @param {string} $sApiComponentService Api component service. - * @return Credential scope. - */ - function createCredentialScope($sDate, $sApiComponentService) { - return $sDate . "/" . $this->sAwsRegion . '/' . $sApiComponentService . '/aws4_request'; - } - - /** - * Creating a string to sign. - * @param {string} $sDate Date (YYYYMMDD). - * @param {string} $sTimestamp Unix timestamp. - * @param {string} $sCanonicalRequest Canonical request. - * @param {string} $sApiComponentService Api component service. - * @return String to sign. - */ - function createStringToSign($sDate, $sTimestamp, $sCanonicalRequest, $sApiComponentService) { - $sRequestDateTime = $sDate . 'T' . gmdate('His', $sTimestamp) . 'Z'; - $sCredentialScope = $this->createCredentialScope($sDate, $sApiComponentService); - $sHashedCanonicalRequest = hash(self::HASHING_ALGORITHM, $sCanonicalRequest, false); - $sStringToSign = $this->sHashingAlgorithmString . chr(10) . - $sRequestDateTime . chr(10) . - $sCredentialScope . chr(10) . - $sHashedCanonicalRequest; - return $sStringToSign; - } - - /** - * Creating a string to sign. - * @param {string} $sDate Date (YYYYMMDD). - * @param {string} $sTimestamp Unix timestamp. - * @param {string} $sCanonicalRequest Canonical request. - * @param {string} $sApiComponentService Api component service. - * @return String to sign. - */ - function createStringToSignv2($sDate, $sXAmzDate, $sCanonicalRequest, $sApiComponentService) { - $sCredentialScope = $this->createCredentialScope($sDate, $sApiComponentService); - $sHashedCanonicalRequest = hash(self::HASHING_ALGORITHM, $sCanonicalRequest, false); - $sStringToSign = $this->sHashingAlgorithmString . chr(10) . - $sXAmzDate . chr(10) . - $sCredentialScope . chr(10) . - $sHashedCanonicalRequest; - return $sStringToSign; - } - - /** - * Creating a hashed payload. - * @param {string} $sPayload CurrentPayload. - * @return String hashed Payload. - */ - function createHashedPayload($sPayload){ - if($sPayload == "UNSIGNED-PAYLOAD"){ - return $sPayload; - }else{ - return hash(self::HASHING_ALGORITHM, $sPayload, false); - } - } - - /** - * Prepare a query string for signature calculation . - * @param {string} $sQueryString queryString to prepare. - * @return QueryString prepared - */ - function prepareQueryString ($sQueryString){ - $aUri = explode("?", $sQueryString); - $sParameters = $aUri[count($aUri) - 1]; - $aParameters = explode("&", $sParameters); - - $sReturn = ""; - - //order array before treatement F < a Case sensitive - sort($aParameters); - - for ($i = 0; $i < count($aParameters); $i++){ - $aParameter = explode("=",$aParameters[$i]); - if(count($aParameter) === 2){ - $sReturn .= rawurlencode($aParameter[0]); - $sReturn .= "="; - $sReturn .= rawurlencode($aParameter[1]); - if ($i < count($aParameters) - 1){ - $sReturn .= "&"; - } - } - } - return $sReturn; - } - - /** - * Prepare a Uri for signature calculation . - * @param {string} $sUriWithoutQuery queryURI to prepare. (https://s3.amazon.aws.com/toto/tata) - * @param {string} $sHost Hostname to extract the path after domain name - * @return QueryString prepared - */ - function prepareQueryUri ($sUriWithoutQuery, $sHost){ - - $sUriWithoutQuery = preg_replace('/^https?:\/\/' . $sHost . '/i', '', $sUriWithoutQuery); - - $aUrl = explode("/", $sUriWithoutQuery); - - $aUrl = array_values(array_filter($aUrl, function($value) {return ($value !== '');})); - - $i = 0; - $aUri = array(); - - while ($i < count($aUrl)){ - if ($aUrl[$i] !== '.'){ - if($aUrl[$i] !== '..'){ - array_push($aUri, $aUrl[$i]); - } else { - array_splice($aUri, -1); - } - } - $i++; - } - - $sReturn = "/" . str_replace('%2F', '/', rawurlencode(implode("/", $aUri))); - - if (substr($sUriWithoutQuery, -1) == '/' && count($aUrl) > 1){ - $sReturn .= "/"; - } - - return $sReturn; - } - - /** - * Prepare headers for signature calculation . - * @param {array} $aHeaders array of the headers for the request (array of string) - * @return QueryString prepared - */ - function prepareQueryHeaders ($aHeaders){ - $aMergedHeader = array(); - - $sReturn = ""; - - // dédoublonage - for ($i = 0; $i < count($aHeaders); $i++){ - $aHeader = explode(":", $aHeaders[$i]); - if (count($aHeader) === 2){ - $sReplacer = ' '; - if (strpos(trim($aHeader[1]), "\n") > -1) { - $sReplacer = ','; - } - $aMergedHeader[strtolower($aHeader[0])][] = preg_replace('/\s{1,}/m', $sReplacer, trim($aHeader[1])); - } - } - - ksort($aMergedHeader, SORT_STRING | SORT_FLAG_CASE); - - // calcul des header pour la requete canonique - foreach ($aMergedHeader as $sKey => $aValue) { - $sReturn .= $sKey; - $sReturn .= ":"; - $sReturn .= implode(',', $aValue); - $sReturn .= chr(10); - } - - return $sReturn; - } - - /** - * Prepare signed headers for signature calculation . - * @param {array} $aHeaders array of the headers for the request (array of string) - * @return QueryString prepared - */ - function prepareQuerySignedHeaders ($aHeaders){ - $aMergedHeader = array(); - $sReturn = ""; - - // dédoublonage - for ($i = 0; $i < count($aHeaders); $i++){ - $aHeader = explode(":", $aHeaders[$i]); - if (count($aHeader) === 2){ - $aMergedHeader[strtolower($aHeader[0])][] = trim($aHeader[1]); - } - } - - ksort($aMergedHeader, SORT_STRING | SORT_FLAG_CASE); - - // aggrégat des en-t^tes signées - foreach ($aMergedHeader as $sKey => $aValue) { - $sReturn .= $sKey; - $sReturn .= ";"; - } - - // on supprime le dernier ; - $sReturn = substr($sReturn, 0, -1); - - return $sReturn; - } - - /** - * Creating a signing Key. - * @param {string} $sApiComponentService Component service for API execution. - * @param {string} $sDate Date (YYYYMMDD). - * @return Signing key. - */ - function createSigningKey($sApiComponentService, $sDate) { - return hash_hmac(self::HASHING_ALGORITHM, 'aws4_request', hash_hmac(self::HASHING_ALGORITHM, $sApiComponentService, hash_hmac(self::HASHING_ALGORITHM, $this->sAwsRegion, hash_hmac(self::HASHING_ALGORITHM, $sDate, 'AWS4' . $this->sAwsSecretAccessKey, true), true), true), true); - } - - /** - * Calculating a Signature (Version 4 algorithm). - * @param {string} $sStringToSign String to sign. - * @param {string} $sSigningKey Signing key. - * @return Signature. - */ - function calculateSignature($sStringToSign, $sSigningKey) { - return hash_hmac(self::HASHING_ALGORITHM, $sStringToSign, $sSigningKey); - } - - /** - * Generating an authorization header. - * @param {string} $sAlgorithm String of the hashing algorithm. - * @param {string} $sCredentialScope Credential scope. - * @param {string} $sSignedHeaders Request header names. - * @param {string} $sSignature Calculated signature. - * @return Headers for request. - */ - function generateAuthorizationHeader($sAlgorithm, $sCredentialScope, $sSignedHeaders, $sSignature) { - return $sAlgorithm . ' Credential=' . $this->sAwsAccessKeyId . '/' . $sCredentialScope . ', SignedHeaders=' . $sSignedHeaders . ', Signature=' . $sSignature; - } - - /** - * Write a message to the error log file. - * @param {string} $sMessage Message to write to the log file. - */ - function writeToErrorLog($sMessage) { - $aDebugBacktrace = debug_backtrace(); - $sLogMessage = '|ERROR|' . $aDebugBacktrace[1]['class'] . '::' . $aDebugBacktrace[1]['function'] . '| ' . $sMessage; - if (empty($this->sLogFilePath)) - writeToErrorLog($sLogMessage); - else - writeToLog($sLogMessage, $this->sLogFilePath); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/aws_lib/AmazonApiGateway.class.inc b/src/vitis/vas/rest/class/aws_lib/AmazonApiGateway.class.inc deleted file mode 100755 index 3ba40545f25fb7b80dc791a6bdd188eda451cae9..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/aws_lib/AmazonApiGateway.class.inc +++ /dev/null @@ -1,124 +0,0 @@ -<?php -require_once __DIR__ . '/AmazonAWS.class.inc'; - -/** - * \file AmazonApiGateway.php - * \brief Class to use API Gateway FME cloud - * - * \author Frederic Carretero <frederic.carretero@veremes.com> - */ - -Class AmazonApiGateway extends AmazonAWS { - const API_COMPONENT_SERVICE = 'execute-api'; - public $sRestApiId; // Identifiant de l'API. - public $sStageName; // Nom de l'étape d'un déploiement de l'API. - - /** - * construct - * @param {string} $sAwsAccessKeyId Access key ID. - * @param {string} $sAwsSecretAccessKey Secret access key. - * @param {string} $sAwsRegion Region. - * @param {string} $sRestApiId API identifier. - * @param {string} $sStageName Stage name of an API deployment. - */ - function __construct ($sAwsAccessKeyId, $sAwsSecretAccessKey, $sAwsRegion, $sRestApiId, $sStageName) { - // Paramètres obligatoires de la classe mère AmazonAWS. - parent::__construct($sAwsAccessKeyId, $sAwsSecretAccessKey, $sAwsRegion); - // Paramètres pour l'url racine de l'API. - $this->sRestApiId = $sRestApiId; - $this->sStageName = $sStageName; - //if($sAwsRegion == 'us-east-1') - //$this->sHost = trim('' . self::API_COMPONENT_SERVICE . '.amazonaws.com'); - //else - $this->sHost = trim($sRestApiId . '.' . self::API_COMPONENT_SERVICE . '.' . $sAwsRegion . '.amazonaws.com'); - } - - /** - * Generating all the headers for the request. Deprecated. - * @return Headers for request. - */ - function generateRequestHeaders() { - $sTimestamp = time(); - // Entêtes obligatoires. - $sXAmzDate = gmdate('Ymd\THis\Z', $sTimestamp); - $sDate = gmdate('Ymd', $sTimestamp); - // Charge utile vide hachée. - $sRequestPayload = ''; - - // 1. Création d'une demande canonique pour Signature V4. - $sHttpRequestMethod = 'GET'; - $sCanonicalUri = str_replace('%2F', '/', rawurlencode('/' . $this->sStageName)); - $sCanonicalQueryString = ''; - $sCanonicalHeaders = 'host:' . $this->sHost . chr(10) . - 'x-amz-date:' . $sXAmzDate . chr(10); - $sSignedHeaders = 'host;x-amz-date'; - $sHashedPayload = hash(self::HASHING_ALGORITHM, $sRequestPayload, false); - $sCanonicalRequest = $sHttpRequestMethod . chr(10) . - $sCanonicalUri . chr(10) . - $sCanonicalQueryString . chr(10) . - $sCanonicalHeaders . chr(10) . - $sSignedHeaders . chr(10) . - $sHashedPayload; - - // 2. Création d'une chaîne à signer pour Signature V4. - $sStringToSign = $this->createStringToSign($sDate, $sTimestamp, $sCanonicalRequest, self::API_COMPONENT_SERVICE); - - // 3. Calcul de la signature pour AWS Signature V4. - $sSigningKey = $this->createSigningKey(self::API_COMPONENT_SERVICE, $sDate); - $sSignature = $this->calculateSignature($sStringToSign, $sSigningKey); - - // 4. Création de l'entête "Authorization" pour la requête. - $sCredentialScope = $this->createCredentialScope($sDate, self::API_COMPONENT_SERVICE); - $sAuthorizationHeader = $this->generateAuthorizationHeader($this->sHashingAlgorithmString, $sCredentialScope, $sSignedHeaders, $sSignature); - - // Entêtes pour la requete. - $aHeaders = array( - 'Authorization: ' . $sAuthorizationHeader, - 'X-Amz-Date: ' . $sXAmzDate - ); - /* - echo PHP_EOL . 'Canonical request:' . PHP_EOL; - print_r($sCanonicalRequest); - echo PHP_EOL . PHP_EOL . 'String To Sign:' . PHP_EOL; - print_r($sStringToSign); - */ - return $aHeaders; - } - - function generateGatewayRequestHeaders($sMethod, $sUrl, $aAddedHeaders, $mParams, $bValuesAsFormData = false) { - - $sParams = ''; - - //stringify params if it's an array of depth = 1 else value = array - if(!empty($mParams) && !$bValuesAsFormData){ - if(is_array($mParams)){ - foreach ($mParams as $sKey => $sValue) { - $sParams .= urlencode($sKey); - $sParams .= "="; - $sParams .= urlencode($sValue); - $sParams .= '&'; - } - $sParams = substr($sParams, 0, -1); - $aAddedHeaders[] = 'Content-Type: application/x-www-form-urlencoded'; - } else { - $sParams = $mParams; - } - } - - $sUrlParameter = "/"; - - if(strpos($sUrl, "/") === 1){ - $sUrlParameter = ""; - } - - // build sFullUrl - if(strpos($sUrl, $this->sHost) === -1){ - $sUrl = 'https://' . $this->sHost . $sUrlParameter . $sUrl; - } - - $sFullUrl = $sMethod . ' ' . $sUrl . ' HTTP/1.1'; - - return $this->generateAwsSignedHeaders($sFullUrl, $this->sHost, self::API_COMPONENT_SERVICE, $aAddedHeaders, $sParams); - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/aws_lib/AmazonS3.class.inc b/src/vitis/vas/rest/class/aws_lib/AmazonS3.class.inc deleted file mode 100644 index 32c7ed76f933ba2499f7cfa63c4a943cb4fa6bd9..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/aws_lib/AmazonS3.class.inc +++ /dev/null @@ -1,375 +0,0 @@ -<?php -require_once __DIR__ . '/AmazonAWS.class.inc'; - -/** - * \file AmazonS3.php - * \brief Class to upload and get file in a bucket S3 - * - * \author Frederic Carretero <frederic.carretero@veremes.com> - * \author Anthony Borghi <anthony.borghi@veremes.com> - */ - -Class AmazonS3 extends AmazonAWS { - const API_COMPONENT_SERVICE = 's3'; - - /** - * construct - * @param {string} $sAwsAccessKeyId Access key ID. - * @param {string} $sAwsSecretAccessKey Secret access key. - * @param {string} $sAwsRegion Region. - */ - function __construct ($sAwsAccessKeyId, $sAwsSecretAccessKey, $sAwsRegion) { - // Paramètres obligatoires de la classe mère AmazonAWS. - parent::__construct($sAwsAccessKeyId, $sAwsSecretAccessKey, $sAwsRegion); - /* - if($sAwsRegion == 'us-east-1') - $this->sHost = trim('s3.amazonaws.com'); - else - $this->sHost = trim('s3-' . $sAwsRegion . '.amazonaws.com'); - */ - // Url racine de l'API. - $this->sHost = trim(self::API_COMPONENT_SERVICE . '-' . $sAwsRegion . '.amazonaws.com'); - } - - /** - * Generating all the headers for a GET request. deprecated - * @param {string} $sBucket A container for objects stored in Amazon S3. - * @param {string} $sKey The unique identifier for an object within a bucket. - * @return Headers for request. - */ - function generateRequestHeaders($sBucket, $sKey, $sQueryParameter = '', $sRequestPayload = 'UNSIGNED-PAYLOAD') { - // - $sServiceEndpoint = $sBucket . '.' . $this->sHost; - $query_string = ""; - $sTimestamp = time(); - // Entêtes obligatoires. - $sXAmzDate = gmdate('Ymd\THis\Z', $sTimestamp); - $sDate = gmdate('Ymd', $sTimestamp); - //$sRequestPayload = '$sRequestPayload '; - - // 1. Création d'une demande canonique pour Signature V4. - $sHttpRequestMethod = 'GET'; - $sCanonicalUri = str_replace('%2F', '/', rawurlencode('/' . $sKey)); - $sCanonicalQueryString = $this->prepareQueryString($sQueryParameter); - $sCanonicalHeaders = 'host:' . $sServiceEndpoint . chr(10) . - 'x-amz-content-' . self::HASHING_ALGORITHM . ':' . $sRequestPayload . chr(10) . - 'x-amz-date:' . $sXAmzDate . chr(10); - $sSignedHeaders = 'host;x-amz-content-' . self::HASHING_ALGORITHM . ';x-amz-date'; - $sHashedPayload = $this->createHashedPayload($sRequestPayload); - //$sHashedPayload = $sRequestPayload; - $sCanonicalRequest = $sHttpRequestMethod . chr(10) . - $sCanonicalUri . chr(10) . - $sCanonicalQueryString . chr(10) . - $sCanonicalHeaders . chr(10) . - $sSignedHeaders . chr(10) . - $sHashedPayload; - - // 2. Création d'une chaîne à signer pour Signature V4. - $sStringToSign = $this->createStringToSign($sDate, $sTimestamp, $sCanonicalRequest, self::API_COMPONENT_SERVICE); - - // 3. Calcul de la signature pour AWS Signature V4. - $sSigningKey = $this->createSigningKey(self::API_COMPONENT_SERVICE, $sDate); - $sSignature = $this->calculateSignature($sStringToSign, $sSigningKey); - - // 4. Création de l'entête "Authorization" pour la requête. - $sCredentialScope = $this->createCredentialScope($sDate, self::API_COMPONENT_SERVICE); - $sAuthorizationHeader = $this->generateAuthorizationHeader($this->sHashingAlgorithmString, $sCredentialScope, $sSignedHeaders, $sSignature); - - // Entêtes pour la requete. - $aHeaders = array( - 'host: ' . $sServiceEndpoint, - 'x-amz-content-' . self::HASHING_ALGORITHM . ': ' . $sHashedPayload, - 'x-amz-date: ' . $sXAmzDate, - 'Authorization: ' . $sAuthorizationHeader - ); - - return $aHeaders; - } - - function generateS3requestHeaders($sMethod, $sUrl, $sBucket, $aHeaders = array(), $sRequestPayload = 'UNSIGNED-PAYLOAD'){ - // build bucket hostname - $sBucketHost = $sBucket . "." . $this->sHost; - - $sUrlParameter = "/"; - - if(strpos($sUrl, "/") === 1){ - $sUrlParameter = ""; - } - - // build sFullUrl - if(strpos($sUrl, $sBucketHost) === -1){ - $sUrl = 'https://' . $sBucketHost . $sUrlParameter . $sUrl; - } - - $sFullUrl = $sMethod . ' ' . $sUrl . ' HTTP/1.1'; - return $this->generateAwsSignedHeaders($sFullUrl, $sBucketHost, self::API_COMPONENT_SERVICE, $aHeaders, $sRequestPayload, true, 'Now', true); - } - - /** - * Generating all the data for a POST request. - * @param {string} $sBucket A container for objects stored in Amazon S3. - * @param {string} $sKey The unique identifier for an object within a bucket. - * @return Headers for request. - */ - function generatePostData($sBucket, $sKey, $sAcl = 'public-read') { - $sTimestamp = time(); - $sXAmzDate = gmdate('Ymd\THis\Z', $sTimestamp); - $sDate = gmdate('Ymd', $sTimestamp); - //$sAcl = 'public-read'; - $sCredential = $this->sAwsAccessKeyId . '/' . $sDate . '/' . $this->sAwsRegion . '/' . self::API_COMPONENT_SERVICE . '/aws4_request'; - // 1. Création d'une chaîne à signer pour Signature V4 - $aPolicy = array( - 'expiration' => gmdate('Y-m-d\TH:i:s.000\Z', $sTimestamp + 86400), - 'conditions' => array( - array('acl' => $sAcl), - array('bucket' => $sBucket), - array('starts-with', '$Content-Type', ''), - array('starts-with', '$key', ''), - array('x-amz-algorithm' => $this->sHashingAlgorithmString), - array('x-amz-credential' => $sCredential), - array('x-amz-date' => $sXAmzDate) - ) - ); - $sStringToSign = base64_encode(json_encode($aPolicy)); - - // 2. Calcul de la signature pour AWS Signature V4. - $sSigningKey = hash_hmac(self::HASHING_ALGORITHM, 'aws4_request', hash_hmac(self::HASHING_ALGORITHM, self::API_COMPONENT_SERVICE, hash_hmac(self::HASHING_ALGORITHM, $this->sAwsRegion, hash_hmac(self::HASHING_ALGORITHM, $sDate, 'AWS4' . $this->sAwsSecretAccessKey, true), true), true), true); - $sSignature = hash_hmac(self::HASHING_ALGORITHM, $sStringToSign, $sSigningKey); - - // 3. Données (post). - $aPostData = array( - 'key' => $sKey, - 'acl' => $sAcl, - 'Content-Type' => '', - 'X-Amz-Credential' => $sCredential, - 'X-Amz-Algorithm' => $this->sHashingAlgorithmString, - 'X-Amz-Date' => $sXAmzDate, - 'Policy' => $sStringToSign, - 'X-Amz-Signature' => $sSignature - ); - return $aPostData; - } - - /** - * Downloads a file. - * @param {string} $sBucket Name of a container for objects. - * @param {string} $sKey Name of a unique identifier for an object within a bucket. - * @param {string} $sFilePath Path of the file to save. - * @return File content - */ - function downloadFile($sBucket, $sKey, $sFilePath = null) { - // Url vers le fichier. - $sUrl = 'https://' . $sBucket . '.' . $this->sHost . '/' . $sKey; - $sMethod = 'GET'; - // Génération des entêtes pour la requete. - $aHeaders = $this->generateS3requestHeaders($sMethod, $sUrl, $sBucket); - - $aHeaders[] = 'Accept: application/octet-stream'; - // Transfert cURL. - $sRequestResult = $this->curlRequest($sUrl, $sMethod, null, $aHeaders); - // - if ($this->aLastCurlRequestInfo['http_code'] != 200) { - $this->writeToErrorLog($this->formatS3ErrorMessage($sRequestResult)); - return false; - } - else { - if (!empty($sFilePath)) - file_put_contents($sFilePath, $sRequestResult); - else - return $sRequestResult; - } - } - - /** - * Upload a file. - * @param {string} $sBucket Name of a container for objects. - * @param {string} $sKey Name of a unique identifier for an object within a bucket. - * @param {string} $sFilePath Path of the file to save. - * @return File content - */ - function uploadFile($sBucket, $sKey, $sFilePath) { - if (file_exists($sFilePath)) { - $sFileName = pathinfo($sFilePath, PATHINFO_BASENAME); - // Url vers le fichier. - $sUrl = 'https://' . $sBucket . '.' . $this->sHost; - // Génération des entêtes pour la requete. - $aPostData = $this->generatePostData($sBucket, $sKey); - $aPostData['Content-Type'] = mime_content_type($sFilePath); - $aPostData['file'] = new CurlFile(realpath($sFilePath), $aPostData['Content-Type'], $sFileName); - $aHeaders = array( - 'Content-Type: multipart/form-data', - ); - $sRequestResult = $this->curlRequest($sUrl, 'post', $aPostData, $aHeaders, true); - if ($this->aLastCurlRequestInfo['http_code'] != 204) { - $this->writeToErrorLog($this->formatS3ErrorMessage($sRequestResult)); - return false; - } - } - else - return false; - } - - /** - * ScanDir in a bucket - * @param {string} $sBucket Name of a container for objects. - * @param {string} $sPrefix Path of the folder to scan - * @param {boolean} $bWithFileInfos boolean to add fileInfo with filename - * @return Array associative array describing directory scanned - */ - function scanDir($sBucket, $sPrefix, $bWithFileInfos = false){ - $oFiles = false; - $sQueryString = '?list-type=2&prefix=' . $sPrefix; - //URL to send request - $sUrl = 'https://' . $sBucket . '.' . $this->sHost . "/" . $sQueryString; - $sMethod = 'GET'; - - // Génération des entêtes pour la requete. - $aHeaders = $this->generateS3requestHeaders($sMethod, $sUrl, $sBucket, array('Content-Type: application/x-www-form-urlencoded'), ''); - // Transfert cURL. - $sRequestResult = $this->curlRequest($sUrl, $sMethod, null, $aHeaders); - if ($this->aLastCurlRequestInfo['http_code'] != 200) { - $this->writeToErrorLog("ERROR: ScanDir can't scan this prefix or this bucket"); - $this->writeToErrorLog($this->formatS3ErrorMessage($sRequestResult)); - return false; - } - else { - $oXMLContent= json_decode(json_encode(simplexml_load_string($sRequestResult)), true); - $oFiles = $this->awsObjectListXmlToTree($oXMLContent, $bWithFileInfos); - } - - return $oFiles; - } - - /** - * ScanDir in a bucket - * @param {object} $oXMLObject Result of the list object request AWS - * @param {boolean} $bWithFileInfos boolean to add fileInfo with filename - * @return Array associative array describing directory scanned - */ - function awsObjectListXmlToTree ($oXMLObject, $bWithFileInfos){ - - $aSave = array(); - - $sPrefix = (count($oXMLObject["Prefix"]) === 0) ? "" : $oXMLObject["Prefix"]; - - if(substr($sPrefix, -1) !== "/"){ - $sPrefix .= "/"; - } - - $oFiles = array( - "bucket" => $oXMLObject["Name"], - "sPath"=> $sPrefix, - "aContent" => array() - ); - - if($oXMLObject["KeyCount"] == 1){ - $sFinalKey = $oXMLObject["Contents"]["Key"]; - if($sPrefix !== "/"){ - $sFinalKey = str_replace($sPrefix, "", $sFinalKey); - } - $aPath = explode("/", $sFinalKey); - $sObjectName = $aPath[0]; - - $oFile = $sObjectName; - - if($bWithFileInfos){ - $oFile = array( - "name"=> $sObjectName, - "isDirectory"=> (count($aPath) > 1)? 1 : 0, - "size" => $oXMLObject["Contents"]["Size"], - "lastModification" => $oXMLObject["Contents"]["LastModified"], - "storageType" => $oXMLObject["Contents"]["StorageClass"] - ); - } - - array_push($oFiles["aContent"], $oFile); - array_push($aSave, $sObjectName); - }else{ - for($i = 0; $i < count($oXMLObject["Contents"]); $i++){ - $sFinalKey = $oXMLObject["Contents"][$i]["Key"]; - if($sPrefix !== "/"){ - $sFinalKey = str_replace($sPrefix, "", $sFinalKey); - } - $aPath = explode("/", $sFinalKey); - $sObjectName = $aPath[0]; - - $oFile = $sObjectName; - // check si existe déja - if(!in_array($sObjectName, $aSave) && $sObjectName !== ""){ - if($bWithFileInfos){ - $oFile = array( - "name"=> $sObjectName, - "isDirectory"=> (count($aPath) > 1)? 1 : 0, - "size" => $oXMLObject["Contents"][$i]["Size"], - "lastModification" => $oXMLObject["Contents"][$i]["LastModified"], - "storageType" => $oXMLObject["Contents"][$i]["StorageClass"] - ); - } - - array_push($oFiles["aContent"], $oFile); - array_push($aSave, $sObjectName); - } - } - } - return $oFiles; - } - - /** - * Delete a file. - * @param {string} $sBucket Name of the container for remove an objects. - * @param {string} $sKey Object's identifier to delete it. - * @return boolean true if removed false else - */ - function deleteFile($sBucket, $sKey){ - $bReturn = false; - //URL to send request - $sUrl = 'https://' . $sBucket . '.' . $this->sHost . "/" . $sKey; - $sMethod = 'DELETE'; - - // Génération des entêtes pour la requete. - $aHeaders = $this->generateS3requestHeaders($sMethod, $sUrl, $sBucket, array(''), ''); - - // Transfert cURL. - $sRequestResult = $this->curlRequest($sUrl, $sMethod, null, $aHeaders); - - if ($this->aLastCurlRequestInfo['http_code'] != 200) { - $this->writeToErrorLog("ERROR: it's impossible to delete this key in this bucket"); - $this->writeToErrorLog($this->formatS3ErrorMessage($sRequestResult)); - } else - $bReturn = true; - - return $bReturn; - } - - /** - * Convert an error message returned by s3 (xml to object). - * @param {string} $sXmlErrorMessage Error message returned by s3 (xml format). - * @return object S3 Error - */ - function getS3ErrorObject($sXmlErrorMessage) { - $oSimpleXmlElement = simplexml_load_string($sXmlErrorMessage); - if (is_object($oSimpleXmlElement)) { - $oErrorMessage = new stdClass(); - foreach ($oSimpleXmlElement as $sProperty => $oValue) { - $oErrorMessage->$sProperty = $oValue->__toString(); - } - return $oErrorMessage; - } - else - return false; - } - - /** - * Format an error message returned by s3. - * @param {string} $sXmlErrorMessage Error message returned by s3 (xml format). - * @return string Error message - */ - function formatS3ErrorMessage($sXmlErrorMessage) { - $oErrorMessage = $this->getS3ErrorObject($sXmlErrorMessage); - if ($oErrorMessage !== false) - return ($oErrorMessage->Code . ' : ' . $oErrorMessage->Message); - else - return $sXmlErrorMessage; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/treeview/LdapTree.php b/src/vitis/vas/rest/class/treeview/LdapTree.php deleted file mode 100755 index 035579d9bc45d834c303bfe20c7e8d7d42d50f52..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/treeview/LdapTree.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/* -require_once("../../properties.inc"); -require_once("vmlib/phpUtil.inc"); -require_once("vmlib/logUtil.inc"); -*/ -// a class to show OU LDAP based aciTree - -class LdapTree extends Tree { - private $oLdap = null; - public function __construct(Ldap $oLdap) { - $this->Ldap = $oLdap; - } - - public function branch($sParentId = null) { - $aBranch = array(); - $sLdapConn = $this->Ldap->connectLdap(); - if($sLdapConn){ - $aOUList = $this->Ldap->getOU($sLdapConn, $sParentId); - // R�cup�ration du nom de dossier - foreach ($aOUList as $sOU) { - if(substr($sOU, 0, 3)!="DC=") - { - $aOU = explode(",",$sOU); - $aBranch[$sOU] = "<a href=\"javascript: document.getElementById('stat_import_ad').style.display='none'; loadDirectoryUsers ('".$sOU."', document.getElementById('sLdap').value); \">".$aOU[0]."</a>"; - } - else - $aBranch[$sOU] = $sOU; - } - $this->Ldap->closeLdap($sLdapConn); - return $aBranch; - } - } - - /* - * $itemId will be the path to the file/folder. - */ - public function itemProps($itemId) { - return array_merge(parent::itemProps($itemId), array( - 'isFolder' => true, - 'icon' => 'folder', - 'random' => mt_rand(0, 99) // just a random property - )); - return parent::itemProps($itemId); - } -} \ No newline at end of file diff --git a/src/vitis/vas/rest/class/treeview/Tree.php b/src/vitis/vas/rest/class/treeview/Tree.php deleted file mode 100755 index 6e15c25dae1f1a9528cbccef48b2e4914e4ed5ff..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/treeview/Tree.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php - -// the base class to return data in JSON for aciTree -// as you can see, keep it simple it's the best way to do things :D -// note: you'll need PHP >= 5.2 to run this - -abstract class Tree { - - /** - * Get tree branch as KEY => ITEM. - * @param string $parentId - if NULL then it's the root - * @return array - */ - abstract public function branch($parentId = null); - - /** - * Get item properties (all default properties must be defined). - * @param string $itemId - * @return array - */ - public function itemProps($itemId) { - return array( - 'isFolder' => null, // NULL = maybe a folder, TRUE - is a folder, FALSE - it's not a folder - 'open' => false, // should open folder? - 'icon' => null // icon CSS class name (if any) can be ARRAY [name, background X, background Y] (in this order) - ); - } - - private function _json($parentId, Array &$json, $children) { - $branch = $this->branch($parentId); - foreach ($branch as $id => $item) { - $props = $this->itemProps($id); - $items = array(); - if ($children) { - $this->_json($id, $items, $children); - if (count($items) == 0) { - $props['isFolder'] = false; - } - } - $json[] = array( - 'id' => $id, - 'item' => $item, - 'props' => $props, - 'items' => $items - ); - } - } - - /** - * Output tree JSON (array of id/item/props/items with props.isFolder depending if it's a TREE folder or not). - * @param string $parentId - * @param bool $children - include children? - */ - public function json($parentId, $children = false) { - $json = array(); - $this->_json($parentId, $json, $children); - return $json; - } - -} diff --git a/src/vitis/vas/rest/class/treeview/aciTree.php b/src/vitis/vas/rest/class/treeview/aciTree.php deleted file mode 100755 index 1c45eddce99ac6d48f4a9d1c0f5b310e1d705ace..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/treeview/aciTree.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php -require_once("../../properties.inc"); -//require_once("vmlib/phpUtil.inc"); -//require_once("vmlib/logUtil.inc"); - -// get the tree JSON data for the file system listing -$path = dirname(__FILE__); - -require_once("Tree.php"); -require_once("FsTree.php"); -require_once("LdapTree.php"); -require_once("../Ldap.class.inc"); - -// we limit the access to "$path/tree" -if($_GET[sLdap]!=""){ - $fsTree = new LdapTree(new Ldap($_GET['sLdap'])); -} -else - $fsTree = new FsTree(new Fs($_GET['sLogFile'])); - -// what branch was requested? -$branch = isset($_GET['branch']) ? $_GET['branch'] : null; - -// special case for 1k test from the demo (skip the 'sleep' thing and return faster) -if ((strpos($branch, 'a_new_File_ID') !== false) || (strpos($branch, 'a_new_Folder_ID') !== false)) { - // burn your CPU not the server with the 1k entries ... ;)) - if (preg_match('@[0-9]+$@', $branch, $match) == 1) { - if ((int) $match[0] > 20) { - die('[]'); - } - } - sleep(1); - die('[]'); -} - -if (strpos($branch, '..') !== false) { - // path should not have a [..] inside ;-) - $branch = 'undefined'; -} - -// a small delay so we can see the loading animation -// (comment it for faster return) -// sleep(1); - -// no cache so we can see the loading animation :) -header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); -header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); -header('Cache-Control: no-store, no-cache, must-revalidate'); -header('Cache-Control: post-check=0, pre-check=0', false); -header('Pragma: no-cache'); - -// get the branch (1 level) -// $fsTree->json($branch); - -// this will get the entire tree (comment above and uncomment this) -$fsTree->json($branch, true); diff --git a/src/vitis/vas/rest/class/vitis_lib/Connection.class.inc b/src/vitis/vas/rest/class/vitis_lib/Connection.class.inc deleted file mode 100755 index fa801dc5b0a03ce775b11fdb3f91faa739b9791e..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vitis_lib/Connection.class.inc +++ /dev/null @@ -1,292 +0,0 @@ -<?php - -require_once(__DIR__ . "/../vmlib/Vm.class.inc"); -require_once(__DIR__ . "/../vmlib/dbUtil.inc"); -require_once(__DIR__ . "/../vmlib/logUtil.inc"); -require_once(__DIR__ . "/../vmlib/error.inc"); -require_once(__DIR__ . "/../vmlib/cryptUtil.inc"); -require_once(__DIR__ . "/../vitis_lib/VitisError.class.inc"); - -/** - * \file Connection.class.inc - * \class Connection - * - * \author Yoann Perollet <yoann.perollet@veremes.com>. - * - * \brief This file contains the class Connection - * - * This class defines methods to connect to the database, get groups and privilges of the connected user. - * - * - */ -class Connection { - - /** - * bd object (the connection itself) - */ - public $oBd; - - /** - * parameters sent to the class - */ - public $aValues; - - /** - * error object if the connection encounters an error - */ - public $oError; - - /** - * properties - */ - public $aProperties; - - /** - * list of the user groups - */ - public $sesGroup; - - /** - * list of the user privileges - */ - public $aPrivileges = Array(); - public $sFolderLib = "vitis_lib"; - - /** - * user date settings - */ - public $sFormatDate; - public $sTimeZone; - - /** - * - * @param type $aValues paramters to the object - * @param type $aProperties properties - */ - function __construct($aValues, $aProperties) { - $this->aProperties = $aProperties; - $this->aValues = $aValues; - session_id($aValues['token']); - if (session_status() == PHP_SESSION_NONE) - session_start(); - $bIsconnected = true; - // Variable de session vide et token privée : erreur. - if (empty($_SESSION) && $aValues['token'] != $this->aProperties['public_token']) { - $this->oError = new VitisError(16, 'invalid token'); - $bIsconnected = false; - } - else if ($aValues['token'] == $this->aProperties['public_token']) { - $_SESSION["ses_Login"] = $this->aProperties['public_login']; - $ciphertext = des($this->aProperties['public_login'], $this->aProperties['public_password'], 1, 0); - $_SESSION["ses_Password"] = stringToHex($ciphertext); - if (empty($this->aValues['duration'])) - $this->aValues['duration'] = $this->aProperties['cookie_lifetime']; - $_SESSION["ses_Date"] = date('Y-m-d H:i:s', time() + ($this->aValues['duration'] * 60)); - } - if ($bIsconnected) { - $this->connect(); - } - - if (empty($this->oError)) { - // Paramètres de l'utilisateur (fuseau horaire, format des dates). - if (!empty($_SESSION['ses_user_id'])) { - $this->getUserDateInformations(); - } - } - } - - function connect() { - $bIsValidDate = false; - //verify validity date - if (isset($_SESSION['ses_Date'])) { - $now = date('Y-m-d H:i:s'); - $now = new DateTime($now); - $now = $now->format('YmdHis'); - $next = $_SESSION['ses_Date']; - $next = new DateTime($next); - $next = $next->format('YmdHis'); - if ($now < $next) - $bIsValidDate = true; - else if ($this->aValues['token'] == $this->aProperties['public_token']) { - // Régénère un token public qui a expiré. - if (empty($this->aValues['duration'])) - $this->aValues['duration'] = 10; - $_SESSION["ses_Date"] = date('Y-m-d H:i:s', time() + ($this->aValues['duration'] * 60)); - $this->aValues['validity_date'] = $_SESSION["ses_Date"]; - $bIsValidDate = true; - } - } else { - $this->oError = new VitisError(15, "Token validity outpassed"); - } - //if valid date - if ($bIsValidDate == true) { - //conenction to the database with the token - if (isset($properties["language"])) - $lang = $properties["language"]; - else - $lang = null; - loadLang('vmlib', $lang, 'vmlib/'); - if (!empty($this->aValues['module']) && isset($this->aProperties['database_' . $this->aValues['module']])) { - $sDataBase = $this->aProperties['database_' . $this->aValues['module']]; - } else { - $sDataBase = $this->aProperties['database']; - } - if (!empty($this->aValues['module']) && isset($this->aProperties['server_' . $this->aValues['module']])) { - $sServer = $this->aProperties['server_' . $this->aValues['module']]; - } else { - $sServer = $this->aProperties['server']; - } - if (!empty($this->aValues['module']) && isset($this->aProperties['port_' . $this->aValues['module']])) { - $iPort = $this->aProperties['port_' . $this->aValues['module']]; - } else { - $iPort = $this->aProperties['port']; - } - if (!empty($this->aValues['module']) && isset($this->aProperties['sgbd_' . $this->aValues['module']])) { - $sSgbd = $this->aProperties['sgbd_' . $this->aValues['module']]; - } else { - $sSgbd = $this->aProperties['sgbd']; - } - if (isset($this->aValues['sEncoding'])) - $sEncoding = $this->aValues['sEncoding']; - else - $sEncoding = null; - $this->oBd = new Vm($_SESSION["ses_Login"], trim(des(rtrim(utf8_decode($_SESSION["ses_Login"])), hexToString(rtrim($_SESSION["ses_Password"])), 0, 0, null)), $sDataBase, $sServer, $iPort, $sSgbd, $sEncoding); - if ($this->oBd->erreurRencontree) { - writeToErrorLog(ERROR_CONNECTION_PROBLEM); - writeToErrorLog($this->oBd->getBDMessage()); - } - - if ($this->oBd->erreurRencontree) { - $this->oError = new VitisError(1, $this->oBd->sMessage); - } else { - $this->aValues['login'] = $_SESSION["ses_Login"]; - $this->aValues['validity_date'] = $_SESSION["ses_Date"]; - //get the groups of the user - if (isset($this->aValues['getGroup']) && !$this->aValues['getGroup'] == false) { - $this->sesGroup = getUserGroups($_SESSION["ses_Login"], $this->oBd, $_SESSION["ses_Password"], $this->aProperties["mixed_rights_management"], $this->aProperties["schema_framework"]); - } - - // Get the privileges of the user - $this->getUserPrivileges(); - // Update the user last connection - $this->updateLastConnection(); - } - } else { - $this->oError = new VitisError(15, "Token validity outpassed"); - } - } - - /** - * function wich get user privileges - */ - function getUserPrivileges() { - $sSql = "SELECT * FROM pg_user s LEFT OUTER JOIN pg_group g on (s.usesysid = any(g.grolist) ) where usename = '" . $_SESSION["ses_Login"] . "'"; - $oResult = $this->oBd->execute($sSql); - if (empty($this->oBd->enErreur) && $this->oBd->nombreLigne($oResult) > 0) { - while ($aPrivilege = $this->oBd->ligneSuivante($oResult)) { - array_push($this->aPrivileges, $aPrivilege['groname']); - } - } - } - - /** - * Get the rights of a user on a given table - * @param string $sSchema - * @param string $sTable - * @return array array of rights ex: ["SELECT", "TRUNCATE", "UPDATE"] - */ - function getTableRights($sSchema, $sTable) { - - if (!isset($sSchema) || empty($sSchema)) { - return []; - } - if (!isset($sTable) || empty($sTable)) { - return []; - } - // Version 1 - // $aProperties = $this->aProperties; - // $aPrivileges = $this->aPrivileges; - // - // // Ajoute PUBLIC dans les privilèges - // array_push($aPrivileges, 'PUBLIC'); - // - // // connexion avec u_vitis - // $oSchedulerBd = new BD('u_vitis', '', $aProperties["database"], $aProperties["server"], $aProperties["port"], $aProperties["sgbd"], $aProperties["page_encoding"]); - // - // $sSql = "SELECT * FROM information_schema.role_table_grants WHERE table_schema = '" . $sSchema . "' AND table_name = '" . $sTable . "'"; - // $oResult = $oSchedulerBd->execute($sSql); - // - // $aRights = array(); - // - // // Récupère les droits en fonction des privilèges - // if (!$oSchedulerBd->enErreur()) { - // if ($oSchedulerBd->nombreLigne($oResult) > 0) { - // while ($aLigne = $oSchedulerBd->ligneSuivante($oResult)) { - // if (in_array($aLigne['grantee'], $aPrivileges)) { - // if (!in_array($aLigne['privilege_type'], $aRights)) { - // array_push($aRights, $aLigne['privilege_type']); - // } - // } - // } - // } - // } - // Version 2 (Armand 02/09/2016) - $aSqlParams = array( - 'sSchema' => array('value' => $sSchema, 'type' => 'column_name'), - 'sTable' => array('value' => $sTable, 'type' => 'column_name') - ); - $sSql = "SELECT - has_table_privilege('\"[sSchema]\".\"[sTable]\"','insert') AS \"INSERT\", - has_table_privilege('\"[sSchema]\".\"[sTable]\"','select') AS \"SELECT\", - has_table_privilege('\"[sSchema]\".\"[sTable]\"','update') AS \"UPDATE\", - has_table_privilege('\"[sSchema]\".\"[sTable]\"','delete') AS \"DELETE\", - has_table_privilege('\"[sSchema]\".\"[sTable]\"','truncate') AS \"TRUNCATE\", - has_table_privilege('\"[sSchema]\".\"[sTable]\"','references') AS \"REFERENCES\", - has_table_privilege('\"[sSchema]\".\"[sTable]\"','trigger') AS \"TRIGGER\""; - - $oResult = $this->oBd->executeWithParams($sSql, $aSqlParams); - - $aRights = array(); - - if (!$this->oBd->enErreur()) { - if ($this->oBd->nombreLigne($oResult) > 0) { - while ($aLigne = $this->oBd->ligneSuivante($oResult)) { - foreach ($aLigne as $key => $value) { - if ($value === true) { - array_push($aRights, $key); - } - } - } - } - } - return $aRights; - } - - /** - * Update the last connexion column - */ - function updateLastConnection() { - $sSql = "update [sSchemaFramework].v_user set last_connection = [date] where login = [login]"; - $aParams = array(); - $aParams['sSchemaFramework'] = array('value' => $this->aProperties['schema_framework'], 'type' => 'schema_name'); - $aParams['login'] = array('value' => $_SESSION["ses_Login"], 'type' => 'string'); - $aParams['date'] = array('value' => gmdate('Y-m-d H:i:s'), 'type' => 'string'); - $oPDOresult = $this->oBd->executeWithParams($sSql, $aParams, false); - } - - /** - * get user date parameters (time zone, date format) - */ - function getUserDateInformations() { - $sSql = "SELECT timezone_id, formatdate_id FROM [sSchemaFramework].v_user WHERE user_id = [user_id]"; - $aParams = array(); - $aParams['sSchemaFramework'] = array('value' => $this->aProperties['schema_framework'], 'type' => 'schema_name'); - $aParams['user_id'] = array('value' => $_SESSION['ses_user_id'], 'type' => 'string'); - $oPDOresult = $this->oBd->executeWithParams($sSql, $aParams); - if (empty($this->oBd->enErreur) && $this->oBd->nombreLigne($oPDOresult) > 0) { - $aDateParameters = $this->oBd->ligneSuivante($oPDOresult); - $this->sFormatDate = $aDateParameters['formatdate_id']; - $this->sTimeZone = $aDateParameters['timezone_id']; - } - } -} diff --git a/src/vitis/vas/rest/class/vitis_lib/DbClass.class.inc b/src/vitis/vas/rest/class/vitis_lib/DbClass.class.inc deleted file mode 100755 index 7c253c8b0ad9e8403652693e9cfa83d42fafd833..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vitis_lib/DbClass.class.inc +++ /dev/null @@ -1,158 +0,0 @@ -<?php - -require_once (__DIR__ . "/XmlAbstract.class.inc"); -require_once(__DIR__ . "/../vmlib/Vm.class.inc"); -require_once(__DIR__ . "/../vmlib/dbUtil.inc"); -require_once(__DIR__ . "/../vmlib/logUtil.inc"); -require_once(__DIR__ . "/../vmlib/error.inc"); - -class DbClass extends XmlAbstract { - - //Champ clé de la table - var $sPkField; - //Valeur du champ clé de la table - var $iPkValue; - // Tableau de Properties - var $aProperties; - var $sTable; - //Chemin du fichier de ressources contenant les requêtes SQL - var $sRessourcesFile; - //Séquence utilisé pour l'obtention d'un nouvel identifiant - var $sSequence = "s_gtf.seq_order"; - //Variable stockant les messages d'erreur des requêtes - var $sMessage; - // Connexion à la base de données - var $oBd; - // est vrai si l'objet correspondant n'existe pas dans la base ou en cas d'erreur d'initialisation - var $bEnErreur; - // code d'erreur. different de 0 si bEnErreur=True - var $iErrorCode = 0; - - function setFields($aValues) { - foreach ($aValues as $sCle => $sValeur) { - $this->aFields[$sCle] = $sValeur; - } - } - - /* - * Méthode de classe : Insert - * Cette méthode permet d'insérer un nouvel enregistrement dans la table du shéma passé en pararmètre - */ - - function insert() { - $iId = $this->oBd->insert($this->aProperties['schema_gtf'], $this->sTable, $this->aFields, $this->sSequence, $this->sPkField, $bGetSql = false); - if ($iId != "") { - writeToDebugLog("La demande " . $iId . " a bien été insérée dans la base."); - $this->sMessage = "La demande " . $iId . " a bien été insérée dans la base."; - return $iId; - } else { - writeToErrorLog(ERROR_0002 . $this->oBd->getBDMessage()); - $this->sMessage = "La création de la demande a échouée."; - return -1; - } - } - - /* - * Méthode de classe : Update - * Cette méthode permet de mettre à jour un enregistrement dans la table du shéma passé en pararmètre - */ - - function update() { - if (!$this->oBd->update($this->aProperties['schema_gtf'], $this->sTable, $this->aFields, $this->sPkField, $this->iPkValue, $sIdType = "")) { - writeToDebugLog("La demande " . $this->iPkValue . " a bien été mise à jour dans la base."); - $this->sMessage = "La demande " . $this->iPkValue . " a bien été mise à jour dans la base."; - //Rajouté par Laurent - return $this->aFields["order_id"]; - } else { - writeToErrorLog(str_replace('[order_id]', $this->iPkValue, ERROR_0003) . $this->oBd->getBDMessage()); - $this->sMessage = "La mise à jour de la demande " . $this->iPkValue . " a échouée. -- " . $this->oBd->getBDMessage(); - //Rajouté par Laurent - return -1; - } - return $this->sMessage; - } - - /* - * Méthode de classe : Delete - * Cette méthode permet de supprimer un enregistrement dans la table du shéma passé en pararmètre - */ - - function delete() { - if ($iDemandeId == "") - $iDemandeId = $this->iPkValue; - - if (!$this->oBd->delete($this->aProperties['schema_gtf'], $this->sTable, $this->sPkField, $iDemandeId, $sIdType = "")) { - writeToDebugLog("La demande " . $iDemandeId . " a bien été supprimée de la base."); - $this->sMessage = "La demande " . $iDemandeId . " a bien été supprimée de la base."; - return $iDemandeId; - } else { - writeToErrorLog(str_replace('[order_id]', $iDemandeId, ERROR_0004) . $this->oBd->getBDMessage()); - $this->sMessage = "La demande " . $iDemandeId . " n'a pas pu être supprimée de la base."; - return -1; - } - } - - function setPkValue($iId) { - $this->iPkValue = $iId; - } - - /* - * Méthode de classe : getSourceEncoding - * Cette méthode permet de retourner l'encodage de la base de données - */ - - function getSourceEncoding() { - return $this->oBd->getSourceEncoding(); - } - - function isPostGISInstalled(){ - -// // Version 1 -// $sSql = "SELECT PostGIS_version()"; -// -// $oResult = $this->oConnection->oBd->execute($sSql); -// if (!$this->oConnection->oBd->enErreur() && $this->oConnection->oBd->nombreLigne($oResult) > 0) { -// return true; -// }else{ -// return false; -// } - // Version 2 - $isPostGISInstalled = false; - $sSql = "select name from pg_available_extensions where installed_version != ''"; - $oResult = $this->oConnection->oBd->execute($sSql); - if (!$this->oConnection->oBd->enErreur() && $this->oConnection->oBd->nombreLigne($oResult) > 0) { - while ($aLigne = $this->oConnection->oBd->ligneSuivante($oResult)) { - if($aLigne['name'] === 'postgis'){ - $isPostGISInstalled = true; - } - } - } - return $isPostGISInstalled; - } - - /** - * Return the geom columns infos from a table - * @param string $sSchema - * @param string $sTable - * @return array - */ - function getTableGeomColumnsInfos($sSchema, $sTable) { - - if(!$this->isPostGISInstalled()){ - return array(); - } - - $aGeomColumnsInfos = array(); - $sSql = "SELECT f_geometry_column, coord_dimension, srid, type from geometry_columns WHERE f_table_schema='" . $sSchema . "' AND f_table_name='" . $sTable . "'"; - - $oResult = $this->oConnection->oBd->execute($sSql); - if (!$this->oConnection->oBd->enErreur() && $this->oConnection->oBd->nombreLigne($oResult) > 0) { - while ($aObject = $this->oConnection->oBd->ligneSuivante($oResult)) { - array_push($aGeomColumnsInfos, $aObject); - } - } - return $aGeomColumnsInfos; - } -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vitis_lib/Form.class.inc b/src/vitis/vas/rest/class/vitis_lib/Form.class.inc deleted file mode 100755 index d971183d87b60cc3439f76e569913c12c694c28c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vitis_lib/Form.class.inc +++ /dev/null @@ -1,151 +0,0 @@ -<?php - -/** - * \class Form - * \brief Form Class - * - * Class about form operations - * - * \author Armand Bahi <armand.bahi@veremes.com> - */ -class Form { - - /** - * construct - * @param type $properties properties - * @param type $oConnection connection object - */ - function __construct($properties, $oConnection) { - $this->aProperties = $properties; - $this->oConnection = $oConnection; - } - - /** - * Get the table columns description array - * @param string $sSchema - * @param string $sTable - * @return array - */ - function getTableColumns($sSchema, $sTable) { - - // Effectue une requête pour avoir les colonnes de la table - $sSql = "SELECT column_name, is_nullable, data_type, is_updatable "; - $sSql .= "FROM information_schema.columns "; - $sSql .= "WHERE table_schema = '" . $sSchema . "' AND table_name = '" . $sTable . "'"; - - $aColumns = array(); - - // Crée le formulaire - $oResult = $this->oConnection->oBd->execute($sSql); - if ($this->oConnection->oBd->enErreur()) { - $aXmlRacineAttribute['status'] = 0; - $oError = new VitisError(2, $this->oConnection->oBd->getBDMessage()); - } else { - if (!$this->oConnection->oBd->enErreur()) { - while ($aLigne = $this->oConnection->oBd->ligneSuivante($oResult)) { - array_push($aColumns, $aLigne); - } - } - } - return $aColumns; - } - - /** - * Generate the form rows by the table columns description array - * @param type $aColumns - * @param type $aUnusedColumnNames names of the columns witch you dont want to use - * @param type $aUnupdatableColumnNames names of the columns witch you dont want to bu updatable - * @return array - */ - function generateRowsByTableColumns($aColumns, $aUnusedColumnNames = array(), $aUnupdatableColumnNames = array(), $aLabel = array()) { - - $aRows = array(); - $aTypes = array(); - $aTypes["character varying"] = "text"; - $aTypes["integer"] = "integer"; - - foreach ($aColumns as $aLigne) { - - // Re-crée la ligne - $aField = array(); - $aField['fields'] = array(); - $aField['fields'][0] = array(); - - if (in_array($aLigne['column_name'], $aUnupdatableColumnNames)) { - - $aField['fields'][0]['type'] = "label"; - } else if (in_array($aLigne['column_name'], $aUnusedColumnNames)) { - - continue; - } else if (isset($aTypes[$aLigne['data_type']])) { - - $aField['fields'][0]['type'] = $aTypes[$aLigne['data_type']]; - } else if ($aLigne['data_type'] === "tinyint" || $aLigne['data_type'] === "bigint" || $aLigne['data_type'] === "smallint" || $aLigne['data_type'] === "numeric") { - - $aField['fields'][0]['type'] = "text"; - $aField['fields'][0]['pattern'] = "[-+]?(\d*[.])?\d+"; - } else if ($aLigne['data_type'] === "boolean") { - - $aField['fields'][0]['type'] = "radio"; - $aField['fields'][0]['options'] = array(); - $aField['fields'][0]['options']['choices'] = array(); - $aField['fields'][0]['options']['choices'][0]['label'] = "oui"; - $aField['fields'][0]['options']['choices'][0]['value'] = true; - $aField['fields'][0]['options']['choices'][1]['label'] = "non"; - $aField['fields'][0]['options']['choices'][1]['value'] = false; - } else { - - $aField['fields'][0]['type'] = "text"; - } - - $aField['fields'][0]['name'] = $aLigne['column_name']; - if (array_key_exists($aLigne['column_name'], $aLabel)) { - $aField['fields'][0]['label'] = $aLabel[$aLigne['column_name']]; - } else { - $aField['fields'][0]['label'] = $aLigne['column_name']; - } - - $aField['fields'][0]['disabled'] = !$aLigne['is_updatable']; - $aField['fields'][0]['required'] = !$aLigne['is_nullable']; - $aField['fields'][0]['nb_cols'] = 12; - - array_push($aRows, $aField); - } - - return $aRows; - } - - /** - * Generate the Form - * @param string $aRows - * @param string $sFormName - * @param string $sFormTitle - * @return array - */ - function generateFormByRows($aRows, $sFormTitle = "Generated Form", $sFormName = "generated") { - - // Crée les modes diplay/update/insert - $aForm = array(); - $aForm['display'] = array(); - $aForm['display']['name'] = $sFormName . '-form'; - $aForm['display']['title'] = $sFormTitle; - $aForm['display']['input_size'] = "xxs"; - $aForm['display']['nb_cols'] = 12; - $aForm['display']['javascript'] = false; - $aForm['display']['rows'] = $aRows; - $aForm['search'] = $aForm['display']; - $aForm['search']['rows'] = []; - $aForm['insert'] = $aForm['display']; - $aForm['update'] = $aForm['display']; - - // Met les champs du mode insert en mode label - for ($index = 0; $index < count($aForm['display']['rows']); $index++) { - $aForm['display']['rows'][$index]['fields'][0]['type'] = 'label'; - } - - return $aForm; - } - -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vitis_lib/VitisError.class.inc b/src/vitis/vas/rest/class/vitis_lib/VitisError.class.inc deleted file mode 100644 index 1c52cfaa95a3a0479a910281e35cde8f25376703..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vitis_lib/VitisError.class.inc +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -require_once(__DIR__."/DbClass.class.inc"); - -class VitisError extends DbClass { - - function __construct($iErrorId, $sErrorMessage="", $sMessage = ''){ - $this->aFields['errorCode']=$iErrorId; - switch ($iErrorId){ - case 1 : - $this->aFields['errorType']="Low-level error on database"; - break; - case 2 : - $this->aFields['errorType']="Missing parameter(s)"; - break; - case 3 : - $this->aFields['errorType']="Order not found"; - break; - case 4 : - $this->aFields['errorType']="Empty parameter(s)"; - break; - case 5 : - $this->aFields['errorType']="Empty service"; - break; - case 6 : - $this->aFields['errorType']="Unknown operation"; - break; - case 7 : - $this->aFields['errorType']="Invalid output format"; - break; - case 8 : - $this->aFields['errorType']="Error upload"; - break; - case 9 : - $this->aFields['errorType']="Error creating folder"; - break; - case 10 : - $this->aFields['errorType']="The application requested is not responding. Use UTF-8 to generate an XML result."; - break; - case 11 : - $this->aFields['errorType']="Connection to the database forbidden"; - break; - case 12 : - $this->aFields['errorType']="Rights problem"; - break; - case 13 : - $this->aFields['errorType']="Workspace not found"; - break; - case 14 : - $this->aFields['errorType']="Missing operation"; - break; - case 15 : - $this->aFields['errorType']="Expired token"; - break; - case 16 : - $this->aFields['errorType']="Invalid token"; - break; - case 18 : - $this->aFields['errorType']="Missing privileges"; - case 17 : - $this->aFields['errorType']="The request returned an error"; - break; - case 19 : - $this->aFields['errorType']="The database is unreachable"; - break; - } - $this->aFields['errorMessage']=$sErrorMessage; //Message renvoyé par la base de donnée - // Message d'erreur additionnel. - if (!empty($sMessage)) - $this->aFields['message'] = $sMessage; - } -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vitis_lib/XmlAbstract.class.inc b/src/vitis/vas/rest/class/vitis_lib/XmlAbstract.class.inc deleted file mode 100755 index eec22c875b2c218ff1a54cd5acd64417eae024dc..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vitis_lib/XmlAbstract.class.inc +++ /dev/null @@ -1,256 +0,0 @@ -<?php - -/** - * \file XmlAbstract.class.inc - * \brief XmlAbstract.class.inc \n \n Ce fichier contient la classe php XmlAbstract. - * - * Cette classe est une classe abstraite qui peut être appelé par les autres classes par héritage afin de construire un fichier XML. - * - * \author Nicolas Chazeau - */ - -/** - * \class XmlAbstract - * \brief XmlAbstract Class \n \n XmlAbstract est une classe PHP. - * - * Cette classe permet de retourner un objet de sélection dans un fichier XML. - * - * \author Olivier Gayte <olivier.gayte@veremes.com> - * \author Nicolas Chazeau - */ -class XmlAbstract { - /* - * Tableau associatif contenant les attributs de l'objet. - */ - - var $aFields = array(); - /* - * Tableau d'objets - */ - var $aObjects = array(); - - /** - * Cette méthode permet d'afficher l'objet de sélection sous la forme d'un tableau HTML. - * \return Retourne plusieurs chaînes de caractères ou une chaine de caractères vide si le tableau est vide. - */ - function asTable() { - if ($this->isEmpty()) { - $sResult = ""; - } else { - $sResult = "<table border=3 rules=all>\n"; - foreach ($this->aExportFields as $sAttribut => $sValue) { - $sResult .= "<td>" . $sAttribut . "</td>\n"; - } - $sResult .= "\t<tr>\n"; - foreach ($this->aExportFields as $sAttribut => $sValue) { - $sResult .= "<td>" . $sValue . "</td>\n"; - } - $sResult .= "</table>\n"; - } - return $sResult; - } - - /** - * Cette méthode permet de déterminer si le tableau $this->aFields est vide ou non. - * \return Retourne false si $this->aFields est non vide. - */ - function isEmpty() { - return empty($this->aFields); - } - - /** - * Cette méthode permet de créer un tableau identique au tableau $this->aFields. - * \return Retourne un tableau. - */ - function getExportFields() { - return $this->aFields; - } - - /** - * Cette méthode permet de générer un document XML sous la forme d'une chaîne de caractères encodé en UTF-8 - * \param $sXSLUrl Nom du fichier de style XSL utilisé. - * \param $sXmlRacine Nom de l'élément racine du fichier XML. - * \param $sEncodageXML Encodage. UTF-8 par défaut. - * \param $sSourceEncoding Encodage de la base de données : ISO-8859-1 par défaut. - * \return Retourne un objet DomDocument. - */ - function asXML($sXSLUrl, $sXmlRacine, $sEncodageXML = 'UTF-8', $bAttributAsElement = False, $aXmlRacineAttribute = Array(), $sSourceEncoding = "ISO-8859-1") { - $oDomDocument = new DOMDocument('1.0', $sEncodageXML); - if (!Empty($sXSLUrl)) { - $oDomDocument->appendChild($oDomDocument->createProcessingInstruction('xml-stylesheet', 'href="' . $sXSLUrl . '" type="text/xsl"')); - } - $oObject = $oDomDocument->appendChild(new DOMElement($sXmlRacine)); - foreach ($aXmlRacineAttribute as $sXmlAttribute => $sValue) { - $oObject->setAttribute($sXmlAttribute, $this->sourceEncoding_targetEncoding($sSourceEncoding, $sEncodageXML, $sValue)); - } - $oObject->appendChild($this->asDOMElement($oDomDocument, $bAttributAsElement, $sSourceEncoding, $sEncodageXML)); - return $oDomDocument->saveXML(); - } - - /** - * Cette méthode permet de générer un document JSON sous la forme d'une chaîne de caractères encodé en UTF-8 - * \param $sXSLUrl Nom du fichier de style XSL utilisé. - * \param $sXmlRacine Nom de l'élément racine du fichier XML. - * \param $sEncodageXML Encodage. UTF-8 par défaut. - * \param $sSourceEncoding Encodage de la base de données : ISO-8859-1 par défaut. - * \return Retourne un objet DomDocument. - */ - function asJSON($sXSLUrl, $sXmlRacine, $sEncodageXML = 'UTF-8', $bAttributAsElement = False, $aXmlRacineAttribute = Array(), $sSourceEncoding = "ISO-8859-1",$sEncodageJSONXML) { - $oObject = $this->getObjects($this, $sEncodageJSONXML); - foreach ($aXmlRacineAttribute as $sXmlAttribute => $sValue) { - $oObject->$sXmlAttribute = $sValue; - } - $data = json_encode($oObject); - return ($data); - } - - function getJSON() { - $aObjClass = array(); - foreach ($aObjClass->aObjects as $oObj) { - if (get_class($oObj) == $sClasse) { - array_push($aObjClass, $oObj); - } - } - return $aObjClass; - } - - function asHTML($aExportFields) { - //Base case: an empty array produces no list - if (empty($aExportFields)) - return ''; - - //Recursive Step: make a list with child lists - $output = '<ul>'; - if (is_array($aExportFields) == false) { - $output .= '<li>' . $aExportFields . '</li>'; - } else { - foreach ($aExportFields as $key => $subArray) { - $output .= '<li>' . $key . $this->asHTML($subArray) . '</li>'; - } - } - - $output .= '</ul>'; - - return $output; - } - - /** - * Cette méthode permet de générer un document XML ou JSON sous la forme d'une chaîne de caractères encodé en UTF-8 - * \param $sXSLUrl Nom du fichier de style XSL utilisé. - * \param $sXmlRacine Nom de l'élément racine du fichier XML. - * \param $sEncodageXML Encodage. UTF-8 par défaut. - * \param $sSourceEncoding Encodage de la base de données : ISO-8859-1 par défaut. - * \param $sEncodageJSONXML Encodage XML par défaut, JSON sur demande - * \return Retourne un objet DomDocument. - */ - function asDocument($sXSLUrl, $sXmlRacine, $sEncodageXML = 'UTF-8', $bAttributAsElement = False, $aXmlRacineAttribute = Array(), $sSourceEncoding = "UTF-8", $sEncodageJSONXML = "xml") { - if (strpos($sEncodageJSONXML, "xml") != false) - return $this->asXML($sXSLUrl, $sXmlRacine, $sEncodageXML, $bAttributAsElement, $aXmlRacineAttribute, $sSourceEncoding); - else if (strpos($sEncodageJSONXML, "json") != false) - return $this->asJSON($sXSLUrl, $sXmlRacine, $sEncodageXML, $bAttributAsElement, $aXmlRacineAttribute, $sSourceEncoding, $sEncodageJSONXML); - else if (strpos($sEncodageJSONXML, "html") != false) { - $aExportFields = $this->getExportFields(); - return $this->asHTML($aExportFields); - } - } - - /** - * Cette méthode permet de générer un document XML sous la forme d'un fichier téléchargeable. - * \param $sXSLUrl Nom du Fichier de style XSL utilisé. - * \param $sFileName Nom du fichier XML à générer. - * \param $sXmlRacine Nom de l'élément racine du fichier XML. - * \param $sEncodageXML Encodage. UTF-8 par défaut. - * \param $sSourceEncoding Encodage de la base de données : ISO-8859-1 par défaut. - */ - function asXMLFile($sXSLUrl, $sFileName, $sXmlRacine = "Mj", $sEncodageXML = 'UTF-8', $sSourceEncoding = "ISO-8859-1") { - $sXML = $this->asXML($sXSLUrl, $sXmlRacine, $sEncodageXML, False, Array(), $sSourceEncoding); - return file_put_contents($sFileName, $sXML); - } - - /** - * Cette méthode permet de créer un élément DomElement. - * \param $oDomDocument : DOMDocument pere - * \param $sSourceEncoding Encodage de la base de données : ISO-8859-1 par défaut. - * \param $sEncodageXML Encodage. UTF-8 par défaut. - * \return Retourne un objet DomElement. - */ - function asDOMElement($oDomDocument, $bAttributAsElement = False, $sSourceEncoding = "ISO-8859-1", $sEncodageXML = 'UTF-8') { - $oDomElement = $oDomDocument->appendChild(new DOMElement(get_class($this))); - $aExportFields = $this->getExportFields(); - //si aExportFields n'est pas vide - if ($aExportFields != "" && count($aExportFields) > 0) { - foreach ($aExportFields as $sAttribut => $sValue) { - if (is_array($sValue)) { - - } else { - if ($bAttributAsElement) { - //nouveau fils , attribut : $sAttribut, valeur : sValue UTF-8 - $oDomElement->appendChild(new DOMElement($sAttribut, $this->sourceEncoding_targetEncoding($sSourceEncoding, $sEncodageXML, $sValue))); - } else { - //nouvel attribut , attribut : $sAttribut, valeur : sValue UTF-8 - $oDomElement->setAttribute($sAttribut, $this->sourceEncoding_targetEncoding($sSourceEncoding, $sEncodageXML, $sValue)); - } - } - } - //si le Fields est vide - } elseif (!$this->isEmpty()) { - foreach ($aExportFields as $sAttribut => $sValue) { - //nouvel attribut , attribut : $sAttribut, valeur : sValue UTF-8 - $oDomElement->setAttribute($sAttribut, $this->sourceEncoding_targetEncoding($sSourceEncoding, $sEncodageXML, $sValue)); - } - } - foreach ($this->aObjects as $s => $oMj) { - if (get_class($oMj) != "") { - $oDomElement->appendChild($oMj->asDOMElement($oDomDocument, $bAttributAsElement, $sSourceEncoding, $sEncodageXML)); - } - } - return $oDomElement; - } - - /** - * Cette méthode renvoie un tableau contenant les objets de la classe $sClasse composant l'objet. - * \return Retourne un tableau. - */ - function getObjects($sClasse, $jsonFormat) { - $aObjClass = new stdClass(); - if (strpos($jsonFormat, "x-vm-json") != false) { - $sClassName = "data"; - $aObjClass->$sClassName = array(); - } else { - $sClassName = strtolower(get_class($sClasse)); - } - if (!empty($sClasse->aObjects)) { - $aObjClass->$sClassName = array(); - foreach ($sClasse->aObjects as $oObj) { - array_push($aObjClass->$sClassName, $this->getObjects($oObj, $jsonFormat)); - } - } - if (!empty($sClasse->aFields)) { - foreach ($sClasse->aFields as $key => $value) { - $aObjClass->$key = $value; - } - } - if (empty($aObjClass->$sClassName) && isset($aObjClass->$sClassName)){ - unset($aObjClass->$sClassName); - } - return $aObjClass; - } - - /** - * Cette méthode permet d'encoder une chaine dans un encodage prédéfini "sTargetEncoding". - * \param $sSourceEncoding Encodage de la donnée source - * \param $sTargetEncoding Encodage dans lequel la donnée source source être encodée - * \param $sString Chaine à encoder - * \return Retourne un objet DomElement. - */ - function sourceEncoding_targetEncoding($sSourceEncoding, $sTargetEncoding, $sString) { - if ($sSourceEncoding != $sTargetEncoding) { - return iconv($sSourceEncoding, $sTargetEncoding, $sString); - } else { - return $sString; - } - } - -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/BD.class.inc b/src/vitis/vas/rest/class/vmlib/BD.class.inc deleted file mode 100644 index 54e90c8491213949d92f094a2950f6f620fda336..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/BD.class.inc +++ /dev/null @@ -1,1873 +0,0 @@ -<?php - -/** - * \file BD.class.inc - * \brief BD.class.inc \n \n Ce fichier contient la classe php BD. - * - * Elle est basée sur un classe élaborée par Philippe Rigaux qui permet d'utiliser les fonctions natives de php pour l'exploitation du SGBD - * MySQL en français. Toutes les manipulations les plus courantes de MySQL sont implémentées dans cette classe. - * Elle a été reprise pour pouvoir fonctionner aussi bien avec une base MySQL que PostgreSQL. - * - * Les sessions php permettent de conserver les données nécessaires pour générer un objet BD récurrent. - * - * \author Philippe Rigaux <rigaux@lamsade.dauphine.fr>. - * \author Olivier Gayte <olivier.gayte@veremes.com>. - * \author Fabien Marty <fabien.marty@veremes.com>. - * \author Armand Bahi <armand.bahi@veremes.com>. - */ -/** - * \class BD - * \brief BD Class \n \n Cette classe totalement générique permet de manipuler des données - * contenues dans une base MySQL, Oracle ou PostgreSQL. - * - * Elle est basée sur un classe élaborée par Philippe Rigaux qui permet d'utiliser les fonctions natives de php pour l'exploitation du SGBD - * MySQL en français. Toutes les manipulations les plus courantes de MySQL sont implémentées dans cette classe. - * Elle a été reprise pour pouvoir fonctionner aussi bien avec une base MySQL que PostgreSQL. - * - * Les sessions php permettent de conserver les données nécessaires pour générer un objet BD récurrent. - * - * \author Philippe Rigaux <rigaux@lamsade.dauphine.fr>. - * \author Olivier Gayte <olivier.gayte@veremes.com>. - * \author Fabien Marty <fabien.marty@veremes.com>. - * \author Armand Bahi <armand.bahi@veremes.com>. - */ -require_once ("logUtil.inc"); -require_once ("stringUtil.inc"); -require_once ("phpUtil.inc"); - -class BD { - - /** - * Dossier contenant le fichier lib. - */ - var $sFolderLib = "vmlib"; - - /** - * Objet connexion en cours. - */ - var $connexion; - - /** - * Booléen, permet de savoir si une erreur à été rencontrée. - */ - var $erreurRencontree = 0; - - /** - * Identifiant de l'utilisateur. - */ - var $login; - - /** - * Mot de passe de l'utilisateur. - */ - var $mdp; - - /** - * Nom de la base de données utilisée. - */ - var $base; - - /** - * Nom ou IP du serveur utilisé. - */ - var $serveur; - - /** - * Port de connexion. - */ - var $port; - - /** - * Message à afficher. - */ - var $sMessage = ""; - - /** - * Message à afficher dans les logs. - */ - var $sMessageLog = ""; - - /** - * Commande DSN de connexion. - */ - var $sDsn; - - /** - * Casse des attributs renvoyées par la fonction LigneSuite ("min", "maj" ou ""). - */ - var $sAttributeCase = ""; //"min", "maj" - /** - * nom du SGBD dans la syntaxe du dsn ("mysql", "pgsql", "oci") - */ - var $sgbd; - - /** - * langue de l'application par défaut fr - */ - var $lang; - - /** - * Connexion à la base - * \param $login Identifiant de l'utilisateur. - * \param $motDePasse Mot de passe de l'utilisateur. - * \param $base Nom de la base de données utilisée. - * \param $serveur Nom ou IP du serveur utilisé. - * \param $port Port de connexion utilisé : 5432 pour postgresql - * \param $sgbd SGBD utilisé : "pgsql" - "mysql" - "oci" (Oracle) - */ - function __construct($login, $motDePasse, $base, $serveur, $port, $sgbd, $sPageEncoding = "ISO-8859-1", $lang = "fr") { - $this->login = $login; - $this->mdp = $motDePasse; - $this->base = $base; - $this->serveur = $serveur; - $this->sgbd = $sgbd; - $this->port = $port; - $this->sPageEncoding = $sPageEncoding; - $this->lang = $lang; - loadLang($this->sFolderLib, $this->lang); - if ($this->sgbd != "") { - try { - $this->connectSGBD(); - } catch (PDOException $e) { - /** - * En cas d'utilisation de l'AD, le mot de passe doit respecter - * certaines règles de codage, le code situé ci-dessous - * correspond à ce type de cas - */ - // $this->mdp = utf8_decode($motDePasse); - $this->mdp = iconv("UTF-8", "CP1252", $motDePasse); - try { - $this->connectSGBD(); - } catch (PDOException $e) { - $this->erreurRencontree = 1; - writeToErrorLog($this->stringMessageEncode(ERROR_ACCESS_SERVER . $this->base . ", " . $this->serveur . " , " . $this->login . " , ip: " . $_SERVER['REMOTE_ADDR'] . " ** " . $e->getMessage())); - $this->setStringMessage(ERROR_CONNECT_SERVER); - $this->setStringMessage($e->getMessage()); - } - } - } else { - $this->erreurRencontree = 1; - $this->setStringMessage(ERROR_SGBD_UNDEFINED); - writeToErrorLog($this->stringMessageEncode(ERROR_SGBD_UNDEFINED)); - } - } - - // ---- Partie privée : les méthodes - - /** - * Connexion à PDO - */ - function connectSGBD() { - switch ($this->sgbd) { - case "sqlite": - $this->connexion = new PDO($this->sgbd . ':' . $this->serveur . '/' . $this->base); - break; - case "mysql" : - $this->sDsn = $this->sgbd . ':host=' . $this->serveur . ';dbname=' . $this->base; - $this->connexion = new PDO($this->sDsn, $this->login, $this->mdp); - break; - case "pgsql" : - $this->connexion = new PDO($this->sgbd . ':host=\'' . $this->serveur . '\' port=' . $this->port . ' dbname=\'' . $this->base . '\'', $this->login, $this->mdp); - $oPDOresult = $this->connexion->query("SET CLIENT_ENCODING TO '" . $this->sPageEncoding . "'"); - break; - case "oci" : - if ($this->serveur != "") { - // $this->sDsn= $this->sgbd.':dbname=//'.$this->serveur.':'.$this->port.'/'.$this->base.';charset='.$this->sPageEncoding; - $this->sDsn = $this->sgbd . ':dbname=//' . $this->serveur . ':' . $this->port . '/' . $this->base . ';charset=' . $this->sPageEncoding; - } else { - //Pour oracle, la variable $this->sPageEncoding est "AL32UTF8" et non "UTF8" - $this->sDsn = $this->sgbd . ':dbname=' . $this->base . ';charset=' . $this->sPageEncoding; - } - - $this->connexion = new PDO($this->sDsn, $this->login, $this->mdp); - break; - default: - $this->erreurRencontree = 1; - $this->setStringMessage(ERROR_INCORRECT_SGBD); - writeToErrorLog($this->stringMessageEncode(ERROR_INCORRECT_SGBD)); - break; - } - } - - /** - * Méthodes getSourceEncoding - * \return Cette méthode permet de retourner l'encodage de la base de données selon le type de BD. - */ - function getSourceEncoding() { - if ($this->sgbd != "") { - try { - switch ($this->sgbd) { - case "sqlite": - // Requête qui va permettre de récupérer l'encodage de la base - break; - case "pgsql" : - $sSql = "SELECT datname,encoding FROM pg_database where datname=[sDataBase]"; - $oPDOresult = $this->executeWithParams($sSql, array('sDataBase' => array('type' => 'string', 'value' => $this->base))); - $this->aSourceEncoding = $this->ligneSuivante($oPDOresult); - switch ($this->aSourceEncoding["encoding"]) { - case 6: - $sSourceEncoding = "UTF-8"; - break; - case 8: - $sSourceEncoding = "ISO-8859-1"; - break; - case 24: - $sSourceEncoding = "WIN1252"; - break; - default: - $sSourceEncoding = "ISO-8859-1"; - break; - } - break; - case "oci" : - $sSql = "select * from NLS_DATABASE_PARAMETERS where parameter='NLS_CHARACTERSET'"; -// $sSql = str_replace('sDataBase', $this->base, $sSql); - $oPDOresult = $this->executeWithParams($sSql, array()); - $this->aSourceEncoding = $this->ligneSuivante($oPDOresult); - switch ($this->aSourceEncoding["NLS_CHARACTERSET"]) { - /* case 6: - $sSourceEncoding="UTF-8"; - break; - case 8: - $sSourceEncoding="ISO-8859-1"; - break; */ - case "WE8MSWIN1252": - $sSourceEncoding = "WIN1252"; - break; - default: - $sSourceEncoding = "WIN1252"; - break; - } - - break; - default: - $this->erreurRencontree = 1; - $this->setStringMessage(ERROR_INCORRECT_SGBD); - writeToErrorLog($this->stringMessageEncode(ERROR_INCORRECT_SGBD)); - break; - } - } catch (PDOException $e) { - $this->erreurRencontree = 1; - writeToErrorLog($this->stringMessageEncode(ERROR_ACCESS_SERVER . $this->base . ", " . $this->serveur . " , " . $this->login . " ** " . $e->getMessage())); - $this->setStringMessage(ERROR_CONNECT_SERVER); - $this->setStringMessage($e->getMessage()); - } - } else { - $this->erreurRencontree = 1; - $this->setStringMessage(ERROR_SGBD_UNDEFINED); - writeToErrorLog($this->stringMessageEncode(ERROR_SGBD_UNDEFINED)); - } - return $sSourceEncoding; - } - - /** - * Méthodes pour afficher le message en HTML. - * \param $message Message à afficher. - * \private - */ - function setBDMessage($message) { - $this->sMessage .= $message . "<br>"; - } - - /** - * Méthodes pour afficher le message écrit en log en HTML. - * \param $message Message à afficher. - * \private - */ - function setBDMessageLog($message) { - $this->sMessageLog .= $message . "<br>"; - } - - /** - * Méthodes pour afficher le message en HTML encodé en UTF-8. - * ATTENTION : A utiliser seulement pour des chaines écrites à la main. Ne pas utiliser pour des chaines ou il y a concaténation entre "chaine écrite à la main" et chaine venant de la Base de données - * \param $message Message à afficher. - * \private - */ - function setStringMessage($message) { - $this->sMessage .= iconv("ISO-8859-1", $this->sPageEncoding, $message) . "<br>"; - } - - /** - * Méthodes qui permet d'encoder une chaine en UTF-8 pour que celle-ci soit correctement écrite dans les fichier de log. - * \param $sMessageEncode Message à afficher. - * \return La chaine à écrire dans le fichier de log. - */ - function stringMessageEncode($sMessageEncode) { - $sMessageEncode = iconv("ISO-8859-1", $this->sPageEncoding, $sMessageEncode); - return $sMessageEncode; - } - - /** - * \private - * \return Le message à afficher. - */ - function getBDMessage() { - if ($this->sMessage != "") - $sResult = USER_LABEL . $this->login . ERROR_LABEL . $this->sMessage; - else - $sResult = ""; - return $sResult; - } - - /** - * \private - * \return Le message à afficher. - */ - function getBDMessageLog() { - if ($this->sMessageLog != "") - $sResult = USER_LABEL . $this->login . ERROR_LABEL . $this->sMessageLog; - else - $sResult = ""; - return $sResult; - } - - /** - * Supprime le message à afficher. - * \private - */ - function cleanMessage() { - $this->sMessage = ""; - } - - // ---- Partie publique ------------------------- - - /** - * DEPRECATED - * Méthode indiquant la liste des tables contenues dans la base de données. - * \return Le jeu d'enregistrement de la liste des tables. - */ - function listeDesTables() { - $sSql = "SHOW TABLES FROM " . $this->base; - $oPDOresult = $this->execute($sSql); - return $oPDOresult; - } - - /** - * Méthode d'exécution d'une requête. - * Si la requête SQL est variable en fonction d'un ou plusieurs paramètres - * il faut ABSOLUMENT utiliser executeWithParams au lieu de execute - * afin d'éviter les injections SQL - * \param $sRequete Requête à exécuter. - * \return Le jeu d'enregistrement généré par l'exécution. - */ - function execute($sRequete) { - writeToDebugLog($sRequete); - if (is_null($this->connexion)) { - $this->erreurRencontree = 1; - $this->setBDMessage(ERROR_REQUEST_ERROR); - writeToErrorLog(html_entity_decode(ERROR_REQUEST_IMPOSSIBLE . $sRequete)); - writeToSqlErrorLog($sRequete); - return false; - } - $oPDOresult = $this->connexion->query($sRequete); - if ($this->connexion->errorCode() === "00000") { - $this->erreurRencontree = 0; - if (strtolower(substr($sRequete, 0, 6)) != "select") { - writeToSqlLog($sRequete); - } - return $oPDOresult; - } else { - $aPDOError = $this->connexion->errorInfo(); - $this->erreurRencontree = 1; - $this->setBDMessage(ERROR_REQUEST_ERROR); - writeToErrorLog(html_entity_decode(ERROR_REQUEST_IMPOSSIBLE . $sRequete . "." . RETURN_BD_LABEL . "'" . $aPDOError[2] . "'")); - $this->setBDMessageLog(html_entity_decode(ERROR_REQUEST_IMPOSSIBLE . $sRequete . "." . RETURN_BD_LABEL . "'" . $aPDOError[2] . "'")); - writeToSqlErrorLog($sRequete); - return false; - } - } - - /** - * Méthode sure d'exécution d'une requête avec paramètres. - * Si la requête SQL est variable en fonction d'un ou plusieurs paramètres - * il faut ABSOLUMENT utiliser executeWithParams au lieu de execute - * afin d'éviter les injections SQL - * \param $sRequete Requête à exécuter. - * \param $aParams Paramètres à ajouter dans la requête. - * \param $bLogSQL true si on veut logger les requêtes autre que SELECT dans sql.log - * \return Le jeu d'enregistrement généré par l'exécution. - */ - function executeWithParams($sRequete, $aParams, $bLogSQL = true) { - - $this->connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); - - // Supprime les paramètres non présents dans la requête - foreach ($aParams as $key => $value) { - if (strpos($sRequete, $key) === false) { - unset($aParams[$key]); - } - } - - $aSqlParams = array(); - $aParamsCpy = $aParams; - $sRequeteToLog2 = $sRequete . ' | ' . json_encode($aParams, true); - - // Pré-traitement des paramètres - foreach ($aParamsCpy as $key => $value) { - switch ($aParamsCpy[$key]['type']) { - case 'group': - $aGroupValues = explode('|', $aParamsCpy[$key]['value']); - $sInFilter = ''; - for ($i = 0; $i < count($aGroupValues); $i++) { - $aGroupValues[$i] = trim($aGroupValues[$i]); - if (strlen($sInFilter) > 0) { - $sInFilter .= ', '; - } - $sValueKey = 'value_' . vitisUniqId(); - $aParams[$sValueKey] = array('value' => $aGroupValues[$i], 'type' => 'string'); - $sInFilter .= '[' . $sValueKey . ']'; - } - unset($aParams[$key]); - $sRequete = str_replace('[' . $key . ']', $sInFilter, $sRequete); - break; - default: - break; - } - } - - $sRequeteToLog1 = $sRequete; - - // Traitement des paramètres - foreach ($aParams as $key => $value) { - - // Requête à logger - switch ($aParams[$key]['type']) { - case 'integer': - case 'column_name': - case 'schema_name': - case 'table_name': - $sRequeteToLog1 = str_replace('[' . $key . ']', $aParams[$key]['value'], $sRequeteToLog1); - break; - default: - $sRequeteToLog1 = str_replace('[' . $key . ']', "'" . $aParams[$key]['value'] . "'", $sRequeteToLog1); - break; - } - - // Requête à executer - switch ($aParams[$key]['type']) { - case 'integer': - case 'number': - case 'string': - case 'boolean': - // Valeur de type booléen et vide. - if ($aParams[$key]['type'] == 'boolean' && $aParams[$key]['value'] == '') - $aParams[$key]['value'] = null; - // Configuration du pramètre à utiliser lors de l'execution - $aSqlParams[':' . $key] = $aParams[$key]['value']; - $sRequete = str_replace('[' . $key . ']', ':' . $key, $sRequete); - break; - // Configuration du pramètre à utiliser lors de l'execution - $aSqlParams[':' . $key] = $aParams[$key]['value']; - $sRequete = str_replace('[' . $key . ']', ':' . $key, $sRequete); - break; - case 'geometry': - case 'quoted_string': - // Protège contre les quotes - $aParams[$key]['value'] = $this->protegeChaine($aParams[$key]['value']); - // Remplacement dans la reaqête - $sRequete = str_replace('[' . $key . ']', $aParams[$key]['value'], $sRequete); - break; - case 'column_name': - case 'schema_name': - case 'table_name': - // Vérification de la syntaxe pour qu'elle corresponde à une colonne, table, schema - if (preg_match('/^[\p{L}\p{N}@$#_]{0,127}$/', $aParams[$key]['value'])) { - // Remplacement dans la reaqête - $sRequete = str_replace('[' . $key . ']', $aParams[$key]['value'], $sRequete); - } else { - writeToSqlErrorLog($sRequeteToLog2 . ' | ' . $sRequeteToLog1 . ' | ' . $aParams[$key]['value'] . ' not match with column_name, schema_name, table_name'); - } - break; - case 'double_quote': - $aParams[$key]['value'] = '"' . $this->protegeSpecialChar($aParams[$key]['value']) . '"'; - $sRequete = str_replace('[' . $key . ']', $aParams[$key]['value'], $sRequete); - break; - default: - break; - } - } - - $oPDOresult = $this->connexion->prepare($sRequete); - if ($oPDOresult) { - foreach ($aParams as $key => $value) { - $bBindOk = true; - switch ($aParams[$key]['type']) { - case 'integer': - $bBindOk = $oPDOresult->bindValue(':' . $key, $aParams[$key]['value'], PDO::PARAM_INT); - break; - case 'number': - // Vérifications - if (is_string($aParams[$key]['value'])) { - // Valeur vide ? - if (strlen(trim($aParams[$key]['value'])) == 0) { - $aParams[$key]['value'] = null; - } - // Valeur non numérique ? - elseif (!is_numeric($aParams[$key]['value'])) { - writeToErrorLog('Error when trying to insert a textual value into a numeric attribute' . json_encode($aParams[$key], true)); - writeToSqlErrorLog($sRequeteToLog2 . ' | ' . $sRequeteToLog1); - $this->setBDMessage(ERROR_REQUEST_ERROR); - $this->erreurRencontree = 1; - return false; - } - // Valeur numérique entre côtes - else { - $aParams[$key]['value'] = floatval($aParams[$key]['value']); - } - } - $bBindOk = $oPDOresult->bindValue(':' . $key, $aParams[$key]['value']); - break; - case 'string': - $bBindOk = $oPDOresult->bindValue(':' . $key, $aParams[$key]['value'], PDO::PARAM_STR); - break; - case 'boolean': - $bBindOk = $oPDOresult->bindValue(':' . $key, $aParams[$key]['value'], PDO::PARAM_BOOL); - break; - default: - break; - } - if (!$bBindOk) { - writeToErrorLog('Error when binding ' . print_r($aParams[$key], true)); - $this->setBDMessage(ERROR_REQUEST_ERROR); - writeToErrorLog(print_r($this->connexion->errorInfo(), true)); - return false; - } - } - - $oPDOresult->execute(); - if ($bLogSQL) { - writeToDebugLog($sRequeteToLog2 . ' | ' . $sRequeteToLog1); - } - - if ($oPDOresult->errorCode() === "00000") { - $this->erreurRencontree = 0; - if (strtolower(substr($sRequete, 0, 6)) != "select" && $bLogSQL) { - writeToSqlLog($sRequeteToLog1); - } - return $oPDOresult; - } else { - $aPDOError = $oPDOresult->errorInfo(); - $this->erreurRencontree = 1; - $this->setBDMessage(ERROR_REQUEST_ERROR); - writeToErrorLog(html_entity_decode(ERROR_REQUEST_IMPOSSIBLE . $sRequete . "." . RETURN_BD_LABEL . "'" . $aPDOError[2] . "'")); - writeToSqlErrorLog($sRequeteToLog2 . ' | ' . $sRequeteToLog1); - return false; - } - } - } - - /** - * Execute un bloc de multiples requêtes SQL - * @param string $sSql - * @return Le jeu d'enregistrement généré par l'exécution. - */ - function executeBlock($sSql) { - - $this->connexion->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1); - $this->connexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - try { - $oPDOresult = $this->connexion->prepare($sSql); - if ($oPDOresult) { - $oPDOresult->execute(); - writeToDebugLog($sSql); - if ($this->connexion->errorCode() === "00000") { - $this->erreurRencontree = 0; - writeToSqlLog($sSql); - return $oPDOresult; - } else { - $aPDOError = $this->connexion->errorInfo(); - $this->erreurRencontree = 1; - $this->setBDMessage(ERROR_REQUEST_ERROR); - $this->setBDMessageLog(html_entity_decode(ERROR_REQUEST_IMPOSSIBLE . $sRequete . "." . RETURN_BD_LABEL . "'" . $aPDOError[2] . "'")); - writeToErrorLog(html_entity_decode(ERROR_REQUEST_IMPOSSIBLE . $sSql . "." . RETURN_BD_LABEL . "'" . $aPDOError[2] . "'")); - writeToSqlErrorLog($sSql); - return false; - } - } - } catch (PDOException $e) { - $sPDOErrorMessage = $e->getMessage(); - $this->erreurRencontree = 1; - $this->setBDMessage(ERROR_REQUEST_ERROR); - writeToErrorLog(html_entity_decode(ERROR_REQUEST_IMPOSSIBLE . $sSql . "." . RETURN_BD_LABEL . "'" . $sPDOErrorMessage . "'")); - writeToSqlErrorLog($sSql); - die(); - return false; - } - } - - /** - * Méthode permettant de démarrer une transaction. - */ - function demarreTransaction() { - $this->connexion->beginTransaction(); - } - - /** - * Méthode permettant de terminer une transaction. - */ - function termineTransaction() { - $this->connexion->commit(); - } - - /** - * Méthode permettant d'annuler une transaction. - */ - function annuleTransaction() { - $this->connexion->rollBack(); - } - - /** - * Méthode de suppression d'un objet PDO::Statement (nécessaire pour l'exécution - * de requêtes successives). - * \return Null. - */ - function fermeResultat() { - return null; - } - - /** - * Accès à la ligne suivante, sous forme d'objet - * \param $oPDOresult Jeu d'enregistrement résultant de l'éxécution d'une requête. - * \return La ligne suivante dans le jeu d'enregistrement. - */ - function objetSuivant($oPDOresult) { - return $oPDOresult->fetch(PDO::FETCH_OBJ); - } - - /** - * Accès à la ligne suivante, sous forme de tableau associatif - * \param $oPDOresult Jeu d'enregistrement résultant de l'éxécution d'une requête. - * \return La ligne suivante dans le jeu d'enregistrement. - */ - function ligneSuivante($oPDOresult) { - return $oPDOresult->fetch(PDO::FETCH_ASSOC); - } - - /** - * Accès au résultat sous forme de tableau associatif - * \param $oPDOresult Jeu d'enregistrement résultant de l'éxécution d'une requête. - * \return un tableau contenant les enregistrements sous forme de tableau associatif (champs=>valeur). - */ - function getResultTableAssoc($oPDOresult) { - return $oPDOresult->fetchAll(PDO::FETCH_ASSOC); - } - - /** - * Accès à la ligne suivante, sous forme de tableau indicé - * \param $oDBresultat Jeu d'enregistrement. - * \return La ligne suivante dans le jeu d'enregistrement. - */ - function tableauSuivant($oPDOresult) { - return $oPDOresult->fetch(PDO::FETCH_NUM); - } - - /** - * Méthode indiquant si une erreur a été rencontrée - * \return L'erreur rencontrée. - */ - function enErreur() { - return $this->erreurRencontree; - } - - /** - * DEPRECATED - * Méthode donnant l'id de la dernière ligne insérée. - * \return L'id de la dernière ligne insérée. - */ - function idDerniereLigne() { - return mysql_insert_id(); - } - - /** - * Méthode permettant de protéger les caractéres spéciaux d'une chaine de caractère - * dans une requête. - * \param $chaine Chaine de caractère à protéger. - */ - function protegeChaine($chaine) { - return $this->connexion->quote($chaine); - } - - /** - * Merthode permettant de remplacer les caractères critiques. - * Ces caractères sont les guillemets simples ('), guillemets doubles ("), antislash (\) et NULLE (le caractère NULL). - * @param string $chaine - * @return string - */ - function protegeSpecialChar($chaine) { - return addslashes($chaine); - } - - /** - * Méthode indiquant le nombre d'attributs dans le résultat. - * \param $res Jeu d'enregistrement résultant de l'éxécution d'une requête. - * \return Le nombre d'attributs dans le résultat. - */ - function getFieldsNumber($oPDOresult) { - return $oPDOresult->columnCount(); - } - - /** - * Méthode donnant le nom d'un attribut. - * \param $oPDOresult Jeu d'enregistrement résultant de l'éxécution d'une requête. - * \param $iFieldCount Nombre d'attributs. - * \param $iPosition Position de l'attribut. - * \return Le nom d'un attribut. - */ - function getFieldName($oPDOresult, $iFieldCount, $iPosition, $sTable) { - // Test sur la position - if ($iPosition < 0 or $iPosition >= $iFieldCount) { - $this->setStringMessage(ATTRIBUT_POSITION_BD_LABEL); - return UNKNOWN_BD_LABEL; - } else { - if ($this->sgbd == 'oci') { -// $resultat = $this->execute('SELECT * FROM COLS WHERE name = \'' . strtoupper($sTable) . '\''); - $resultat = $this->executeWithParams('SELECT * FROM COLS WHERE name = \'[sTable]\'', array('sTable' => array('type' => 'column_name', 'value' => $sTable))); - for ($i = 0; $aLigne = $this->ligneSuivante($resultat); $i++) { - if ($i == $iPosition) { - return $aLigne['COLUMN_NAME']; - } - } - } else { - $aMeta = $oPDOresult->getColumnMeta($iPosition); - return $aMeta['name']; - //if ($this->sgbd=='pgsql') - //else return $aMeta['name']; - } - } - } - - /** - * Méthode indiquant le nombre de lignes dans le résultat. Utilisez PHP> 5.1 - * \param $oPDOresult Jeu d'enregistrement résultant de l'éxécution d'une requête. - * \return Le nombre de lignes dans le résultat. - */ - function nombreLigne($oPDOresult) { - return $oPDOresult->rowCount(); - } - - /** - * Méthode de déconnexion. - */ - function quitter() { - $this->connexion->null; - } - - /** - * Méthode permettant de récupérer le type d'une attribut. - * \param $oPDOresult Jeu d'enregistrement résultant de l'éxécution d'une requête. - * \param $iNumFields Nombres d'attributs. - * \param $sFieldName Nom de l'attribut. - * \return Le type d'une attribut (-1 si l'attribut passé en paramètre n'est pas trouvé, 'VAR_STRING' texte, 'DATE' date, ... ). - */ - function getType($oPDOresult, $iNumFields, $sFieldName, $sTable) { - $sType = -1; - if ($this->sgbd == 'oci') { -// $resultat = $this->execute('SELECT * FROM COLS WHERE name = \'' . strtoupper($sTable) . '\''); - $resultat = $this->executeWithParams('SELECT * FROM COLS WHERE name = \'[sTable]\'', array('sTable' => array('type' => 'column_name', 'value' => $sTable))); - for ($i = 0; $aLigne = $this->ligneSuivante($resultat); $i++) { - if ($aLigne['COLUMN_NAME'] == $sFieldName) { - return $aLigne['DATA_TYPE']; - } - } - } else { - for ($i = 0; $i < $iNumFields; $i++) { - $aMeta = $oPDOresult->getColumnMeta($i); - if ($aMeta['name'] == $sFieldName) - $sType = $aMeta['native_type']; - } - } - // si le champ n'a pas été trouvé, il s'agit d'une erreur - return $sType; - } - - /** - * DEPRECATED - * Méthode permettant de construire une clause WHERE SQL à partir d'une liste de valeur passées en requête. - * La table cible est spécifiée en paramètre de la méthode. - * \param $sSchema Schema de la base de données - * \param $sTable Table dans laquelle on recherche. - * \param $aValues Valeurs contenues dans la requête. - * \param $bListQuery Liste des champs filtrés. - * \param $bUpper Modification de la casse. Facultatif, false par défaut. - * \param $bClause Type de clause : AND ou OR. Facultatif, AND par défaut. - * \return La clause WHERE de la requête SQL de recherche. - */ - function getWhereClause($sSchema, $sTable, $aValues, $bListQuery, $bLower = false, $sClause = "AND") { - // LIKE gère tous les types de champs. - switch ($this->sgbd) { - case 'mysql' : - $sProtectField = '`'; - $sSql = $this->AddLimite(0, 1, "SELECT * FROM " . $sTable); - break; - case 'pgsql' : - $sTable = $sSchema . "." . $sTable; - $sProtectField = '"'; - $sSql = $this->AddLimite(0, 1, "SELECT * FROM " . $sTable); - break; - case 'oci' : - $sProtectField = ''; - $sSql = $this->AddLimite(0, 1, "SELECT " . $sTable . ".* FROM " . $sTable); - break; - } - $resultat = $this->execute($sSql); - - $iNumFields = $this->getFieldsNumber($resultat); - for ($i = 0; $i < $iNumFields; $i++) { - $aField["name"][$i] = $this->getFieldName($resultat, $iNumFields, $i, $sTable); - $aField["type"][$i] = $this->getType($resultat, $iNumFields, $aField["name"][$i], $sTable); - } - $sWhereClause = ""; - $sQueryList = ""; - foreach ($aValues as $sKey => $sValue) { - $i = 0; - - while ($aField["name"][$i]) { - if ($aField["name"][$i] == $sKey && $sValue != "") { - $sChamp = $sKey; - $sKey = addDelimitedAttribute("", $sKey, "", $sProtectField); - switch ($aField["type"][$i]) { - case (ereg("LONG|int4|int|NUMBER|float4|float8", $aField["type"][$i]) > 0) : - $sCondition = "="; - if (isset($aValues["condition_" . $sChamp])) { - if ($aValues["condition_" . $sChamp] != "") { - $sCondition = $aValues["condition_" . $sChamp]; - ($sWhereClause == "") ? $sWhereClause .= " WHERE " : $sWhereClause .= " " . $sClause . " "; - $sWhereClause .= $sTable . "." . $sKey . " " . $sCondition . " " . $sValue . " "; - if ($bListQuery) - $sQueryList .= $sChamp . " " . $sCondition . " " . $sValue . " & "; - } - }else { - ($sWhereClause == "") ? $sWhereClause .= " WHERE " : $sWhereClause .= " " . $sClause . " "; - $sWhereClause .= $sTable . "." . $sKey . "::varchar LIKE '" . $sValue . "' "; - if ($bListQuery) - $sQueryList .= $sChamp . " " . $sCondition . " " . $sValue . " & "; - } - if (isset($aValues["condition_interval_sup_" . $sChamp]) && $aValues["condition_interval_sup_" . $sChamp] != "") { - $sCondition = $aValues["condition_interval_sup_" . $sChamp]; - if ($aValues["interval_sup_" . $sChamp] != "") { - ($sWhereClause == "") ? $sWhereClause .= " WHERE " : $sWhereClause .= " " . $sClause . " "; - $sWhereClause .= $sTable . "." . $sKey . " " . $sCondition . " " . $aValues["interval_sup_" . $sChamp] . " "; - if ($bListQuery) - $sQueryList .= $sChamp . " " . $sCondition . " " . $aValues["interval_sup_" . $sChamp] . " & "; - } - } - break; - case 'bool' : - if ($sValue == '1') - $sValue = 'TRUE'; - if ($sValue == '0') - $sValue = 'FALSE'; - if ($sWhereClause == "") - $sWhereClause .= " WHERE " . $sTable . "." . $sKey . " = " . $sValue . " "; - else - $sWhereClause .= " " . $sClause . " " . $sTable . "." . $sKey . " = " . $sValue . " "; - if ($bListQuery) - $sQueryList .= $sKey . "=" . $sValue . " & "; - break; - //case "datetime" || "timestamp" : - - case (ereg("DATE|date|timestamp", $aField["type"][$i]) > 0) : - $sCondition = "="; - $DateUneFr = $aValues[$sChamp]; - $DateDeuxFr = $aValues["interval_sup_" . $sChamp]; - $sValue = substr($this->formatForSql($aValues[$sChamp], $aField["type"][$i]), 1, -1); - $aValues["interval_sup_" . $sChamp] = substr($this->formatForSql($aValues["interval_sup_" . $sChamp], $aField["type"][$i]), 1, -1); - if (isset($aValues["condition_" . $sChamp])) { - if ($aValues["condition_" . $sChamp] != "") { - $sCondition = $aValues["condition_" . $sChamp]; - ($sWhereClause == "") ? $sWhereClause .= " WHERE " : $sWhereClause .= " " . $sClause . " "; - $sWhereClause .= $sTable . "." . $sKey . " " . $sCondition . " '" . $sValue . "' "; - if ($bListQuery) - $sQueryList .= $sChamp . " " . $sCondition . " '" . $DateUneFr . "' & "; - } - } else { - //if($this->sgbd === "oci") $sFunction = "TO_CHAR(".$sTable.".".$sKey.", 'DD/MM/YYYY')"; - ($sWhereClause == "") ? $sWhereClause .= " WHERE " : $sWhereClause .= " " . $sClause . " "; - $sWhereClause .= $sTable . "." . $sKey . "::varchar LIKE '%" . $sValue . "%' "; - if ($bListQuery) - $sQueryList .= $sChamp . " " . $sCondition . " " . $DateUneFr . " & "; - } - if (isset($aValues["condition_interval_sup_" . $sChamp]) && $aValues["condition_interval_sup_" . $sChamp] != "") { - $sCondition = $aValues["condition_interval_sup_" . $sChamp]; - if ($aValues["interval_sup_" . $sChamp] != "") { - ($sWhereClause == "") ? $sWhereClause .= " WHERE " : $sWhereClause .= " " . $sClause . " "; - $sWhereClause .= $sTable . "." . $sKey . " " . $sCondition . " '" . $aValues["interval_sup_" . $sChamp] . "' "; - if ($bListQuery) - $sQueryList .= $sChamp . " " . $sCondition . " '" . $DateDeuxFr . "' & "; - } - } - break; - default : - $sValue = str_replace("'", "''", $sValue); - if ($bLower) { - $sValue = strtolower($sValue); - if ($sWhereClause == "") - $sWhereClause .= " WHERE lower(" . $sTable . "." . $sKey . ") LIKE '%" . $sValue . "%' "; - else - $sWhereClause .= " " . $sClause . " lower(" . $sTable . "." . $sKey . ") LIKE '%" . $sValue . "%' "; - }else { - if ($sWhereClause == "") - $sWhereClause .= " WHERE " . $sTable . "." . $sKey . " LIKE '%" . $sValue . "%' "; - else - $sWhereClause .= " " . $sClause . " " . $sTable . "." . $sKey . " LIKE '%" . $sValue . "%' "; - } - if ($bListQuery) - $sQueryList .= $sKey . "='" . $sValue . "' & "; - break; - } - } - $i++; - } - } - $resultat = $this->fermeResultat(); - if ($sQueryList != "") - $sQueryList = substr($sQueryList, 0, -3); - return array("WhereClause" => $sWhereClause, "QueryList" => $sQueryList); - } - - /** - * Méthode permettant d'ajouter des enregistrements. - * \param $sSchema Schema de la base de données - * \param $sTable Table dans laquelle on ajoute. - * \param $aValues Valeurs à ajouter. - * \param $sSequence Nom de la séquence à utiliser. - * \param $iIdField Nom de l'attribut identifiant. - * \param $bGetSql Booléen : doit on renvoyer le code sql ou exécuter la requête? Vaut 'false' par défaut. - * \return L'id de la dernière ligne insérée. - */ - function insert($sSchema, $sTable, $aValues, $sSequence, $iIdField, $bGetSql = false) { - - $aSQLParams = array( - 'sSchema' => array('type' => 'column_name', 'value' => $sSchema), - 'sTable' => array('type' => 'column_name', 'value' => $sTable) - ); - - // Insére les éléments du tableau $aValues dans $sTable et renvoie l'identifiant de l'enregistrement correspondant (en fait le dernier) - switch ($this->sgbd) { -// case 'mysql' : -// $sSql = "INSERT INTO `$sTable` ("; -// $sSqlList = $this->AddLimite(0, 0, "SELECT * FROM " . $sTable); -// $sProtectField = "`"; -// break; - case 'pgsql' : - $sSql = 'INSERT INTO "[sSchema]"."[sTable]" ('; -// $sSqlList = $this->AddLimite(0, 0, 'SELECT * FROM ' . $sSchema . '.' . $sTable); - - $aSqlList = $this->AddLimiteWithParams(0, 0, 'SELECT * FROM "[sSchema]"."[sTable]"'); - $sSqlList = $aSqlList['sql']; - $aSQLListParams = array_merge($aSQLParams, $aSqlList['params']); - - $sProtectField = '"'; - // Utilisation de la sequence pour récupérer un identifiant - if ($sSequence) { -// $oPDOresult = $this->execute('SELECT nextval(\'' . $sSequence . '\')'); - $oPDOresult = $this->executeWithParams('SELECT nextval([sSequence])', array('sSequence' => array('type' => 'string', 'value' => $sSequence))); - if ($oPDOresult !== false) - $aIdValue = $this->ligneSuivante($oPDOresult); - $iIdValue = $aIdValue['nextval']; - $aValues[$iIdField] = $iIdValue; - $oPDOresult = $this->fermeResultat(); - } - break; -// case 'oci' : -// $sSql = 'INSERT INTO ' . $sTable . '('; -// $sSqlList = 'SELECT ' . $sTable . '.* FROM ' . $sTable . ' WHERE ROWNUM <=1 AND ROWNUM >=0'; -// $sProtectField = '"'; -// // Utilisation de la sequence pour récupérer un identifiant -// if ($sSequence) { -// $oPDOresult = $this->execute('SELECT ' . $sSequence . '.nextval FROM dual'); -// if ($oPDOresult !== false) -// $aIdValue = $this->ligneSuivante($oPDOresult); -// $iIdValue = $aIdValue['NEXTVAL']; -// $aValues[$iIdField] = $iIdValue; -// $oPDOresult->closeCursor(); -// } -// break; - } - $sFields = ""; - $sValues = ""; - -// $resultat = $this->execute($sSqlList); - $resultat = $this->executeWithParams($sSqlList, $aSQLListParams); - $iNumFields = $this->getFieldsNumber($resultat); - - foreach ($aValues as $sField => $sValue) { - if ($iIdField == $sField) - $iIdValue = $sValue; - if (substr_count($sField, '.') == 1) - $sField = substr($sField, strlen($sTable) + 1); - $sType = $this->getType($resultat, $iNumFields, $sField, $sTable); - if ($sType != -1) { - - $sFields = addDelimitedAttribute($sFields, $sField, ",", $sProtectField); - $aFormatedField = $this->formatForSqlWithParams($sValue, $sField, $sType, $sSchema, $sTable); - $sValues = addDelimitedString($sValues, $aFormatedField['field'], ","); - - switch ($this->parseType($sType)) { - case 'int': - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'number', 'value' => $aFormatedField['value']); - break; - case 'float': - case 'decimal': - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'number', 'value' => $aFormatedField['value']); - break; - case 'bool': - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'boolean', 'value' => $aFormatedField['value']); - break; - case 'geometry': - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'geometry', 'value' => $aFormatedField['value']); - break; - default: - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'string', 'value' => $aFormatedField['value']); - break; - } - } - } - - if (empty($iIdValue)) { - $sSql = $sSql . $sFields . ") VALUES (" . $sValues . ") RETURNING \"" . $iIdField . "\""; - } else { - $sSql = $sSql . $sFields . ") VALUES (" . $sValues . ")"; - } - - $resultat = $this->fermeResultat(); - if ($bGetSql) { - return $sSql; - } else { - - $iResult = $this->executeWithParams($sSql, $aSQLParams); - if ($iResult === false) { - return $iResult; - } - - // Valeur retour au cas où $iIdValue soit vide - if (empty($iIdValue)) { - $iIdValue = $iResult->fetchColumn(); - } - if ($iResult !== false) { - $iResult = $this->fermeResultat(); - } - - if ($this->sgbd == 'mysql') - $iIdValue = $this->connexion->lastInsertId(); - return $iIdValue; - } - } - - /** - * DEPRECATED - * Méthode permettant d'ajouter des enregistrements par le biais de la commande SQL 'COPY'. - * Methode implémentée pour PostgreSQL. - * \param $sSchema Schema de la base de données - * \param $sTable Table dans laquelle on ajoute. - * \param $aValues Valeurs à ajouter. - * \param $sSequence Nom de la séquence à utiliser. - * \param $sIdField Nom de l'attribut identifiant. - */ - function copy($sSchema, $sTable, $aValues, $sSequence, $sIdField) { - //$iIdValue = $aIdValue['nextval']; - $sSqlField = $this->AddLimite(0, 0, "SELECT * FROM " . $sSchema . "." . $sTable); - $iFieldResult = $this->execute($sSqlField); - $iNumField = $this->getFieldsNumber($iFieldResult); - - $sCopy = ""; - $aType = array(); - foreach ($aValues as $i => $aRow) { - if ($i == 0) { - $sCopy .= "COPY " . $sSchema . "." . $sTable . " ("; - foreach ($aRow as $sField => $sValue) { - if (substr_count($sField, '.') == 1) - $sField = substr($sField, strlen($sTable) + 1); - $aType[$sField] = $this->getType($iFieldResult, $iNumField, $sField, $sTable); - $sFields = addDelimitedAttribute($sFields, $sField, ",", "\""); - } - $sCopy .= $sFields . ") FROM stdin;\n"; - } - $iSeqResult = $this->execute("SELECT nextval('" . $sSequence . "')"); - if ($iSeqResult !== false) - $aIdValue = $this->ligneSuivante($iSeqResult); - $iSeqResult = $this->fermeResultat(); - foreach ($aRow as $sField => $sValue) { - if ($sIdField === $sField) - $sValue = $aIdValue["nextval"]; - if ($sValue === "null") - $sValue = "\\N"; - $sValues = addDelimitedString($sValues, $sValue, "\t"); - } - $sCopy .= $sValues . "\n"; - } - $sCopy .= "\\."; - $iNumField = $this->fermeResultat(); - - $iResult = $this->execute($sCopy); - if ($iResult !== false) { - $iResult = $this->fermeResultat(); - return true; - } else { - return false; - } - } - - /** - * Méthode permettant de mettre à jour des enregistrements. - * \param $sSchema Schema de la base de données - * \param $sTable Table dans laquelle on met à jour. - * \param $aValues Valeurs à mettre à jour. - * \param $sAttribute Attribut de la clause "WHERE". - * \param $sId Valeur de l'attribut. - * \param $sIdType Type de l'attribut. - */ - function update($sSchema, $sTable, $aValues, $sAttribute, $sId, $sIdType = "") { - - $aSQLParams = array( - 'sSchema' => array('type' => 'column_name', 'value' => $sSchema), - 'sTable' => array('type' => 'column_name', 'value' => $sTable) - ); - - // Modifie la table $sTable à partir du contenu du tableau $aValues - // Le nom des éléments de $aValues doit être le même que les nom de champs - // Le type de chaque champ est pris en compte de manière dynamque - switch ($this->sgbd) { -// case 'mysql' : -// $sSql = "UPDATE `$sTable` set "; -// $sSqlList = $this->AddLimite(0, 0, "SELECT * FROM " . $sTable); -// $sProtectField = "`"; -// break; - case 'pgsql' : - $sSql = 'UPDATE "' . $sSchema . '"."' . $sTable . '" set '; -// $sSqlList = $this->AddLimite(0, 0, 'SELECT * FROM ' . $sSchema . '.' . $sTable); - $aSqlList = $this->AddLimiteWithParams(0, 0, 'SELECT * FROM "[sSchema]"."[sTable]"'); - $sSqlList = $aSqlList['sql']; - $aSQLListParams = array_merge($aSQLParams, $aSqlList['params']); - $sProtectField = '"'; - break; -// case 'oci' : -// $sSql = 'UPDATE ' . $sTable . ' set '; -// $sSqlList = $this->AddLimite(0, 1, 'SELECT * FROM ' . $sTable); -// $sProtectField = ''; -// break; - } - $sPaires = ""; - $sFields = ""; - $sValues = ""; - - $resultat = $this->executeWithParams($sSqlList, $aSQLListParams); - $iNumFields = $this->getFieldsNumber($resultat); - - foreach ($aValues as $sField => $sValue) { - if (substr_count($sField, '.') == 1) - $sField = substr($sField, strlen($sTable) + 1); - $sType = $this->getType($resultat, $iNumFields, $sField, $sTable); - - if ($sType != -1) { - - $aFormatedField = $this->formatForSqlWithParams($sValue, $sField, $sType, $sSchema, $sTable); - $sPaire = addDelimitedAttribute("", $sField, "", $sProtectField) . '=' . $aFormatedField['field']; - $sPaires = addDelimitedString($sPaires, $sPaire, ", "); - - switch ($this->parseType($sType)) { - case 'int': - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'number', 'value' => $aFormatedField['value']); - break; - case 'float': - case 'decimal': - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'number', 'value' => $aFormatedField['value']); - break; - case 'bool': - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'boolean', 'value' => $aFormatedField['value']); - break; - case 'geometry': - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'geometry', 'value' => $aFormatedField['value']); - break; - default: - $aSQLParams[$aFormatedField['fieldKey']] = array('type' => 'string', 'value' => $aFormatedField['value']); - break; - } - } - } - - if ($sPaires != "") { - $sSql = $sSql . $sPaires; - if ($sAttribute != "") { - - if (!is_array($sId)) { - $aWhereClause = $this->AddWhereClauseWithParams($sAttribute, $sId, 'string'); - $aSQLParams = array_merge($aSQLParams, $aWhereClause['params']); - $sSql = $sSql . $aWhereClause['sql']; - } else { - $sId = implode(",", $sId); - $aInClause = $this->AddInClauseWithParams($sSchema, $sAttribute, $sId); - $aSQLParams = array_merge($aSQLParams, $aInClause['params']); - $sSql = $sSql . ' WHERE ' . $aInClause['sql']; - } - } - $resultat = $this->fermeResultat(); - $iResult = $this->executeWithParams($sSql, $aSQLParams); - - if ($iResult !== false) { - $iResult = $this->fermeResultat(); - } - } - } - - /** - * Récupère un type de colonne Postgres (int8, varchar(255) etc..) et renvoie le type simple (int, varchar, float) - * @param string $str - * @return string - */ - function parseType($str) { - - $sType = ''; - $arr = str_split($str); - $pattern = '/^[a-z]/'; - - for ($i = 0; $i < count($arr); $i++) { - if (!preg_match($pattern, $arr[$i])) { - break; - } else { - $sType .= $arr[$i]; - } - } - - return $sType; - } - - /** - * Méthode permettant de supprimer des enregistrements de la table passée en paramètre conformément à la clause spécifiée. - * \param $sSchema Schema de la base de données - * \param $sTable Table dans laquelle on supprime. - * \param $sAttribute Attribut de la clause "WHERE". - * \param $sId Valeur de l'attribut. - * \param $sIdType Types de l'attribut. - */ - function delete($sSchema, $sTable, $sAttribute, $sId, $sIdType = "") { - - $aSQLParams = array( - 'sSchema' => array('type' => 'column_name', 'value' => $sSchema), - 'sTable' => array('type' => 'column_name', 'value' => $sTable) - ); - - switch ($this->sgbd) { -// case 'mysql' : -// $sSql = "DELETE FROM `$sTable` WHERE " . $sAttribute; -// break; - case 'pgsql' : - - $aAttributs = explode('.', $sAttribute); - - // Si le schema est ou pas défini dans sAttribute - if (count($aAttributs) === 1) { - $sColumnKey = 'column_' . vitisUniqId(); - $sSql = 'DELETE FROM "[sSchema]"."[sTable]" WHERE "[' . $sColumnKey . ']"'; - $aSQLParams[$sColumnKey] = array('type' => 'column_name', 'value' => $aAttributs[0]); - } else if (count($aAttributs) === 2) { - $sSchemaKey = 'schema_' . vitisUniqId(); - $sColumnKey = 'column_' . vitisUniqId(); - $sSql = 'DELETE FROM "[sSchema]"."[sTable]" WHERE "[' . $sSchemaKey . ']"."[' . $sColumnKey . ']"'; - $aSQLParams[$sSchemaKey] = array('type' => 'column_name', 'value' => $aAttributs[0]); - $aSQLParams[$sColumnKey] = array('type' => 'column_name', 'value' => $aAttributs[1]); - } - - break; -// case 'oci' : -// $sSql = "DELETE FROM $sTable WHERE " . $sAttribute; -// break; - } - $sSql .= ' IN ([sIds])'; - $aSQLParams['sIds'] = array('type' => 'group', 'value' => $sId); - $iResult = $this->executeWithParams($sSql, $aSQLParams); - if ($iResult !== false) { - $iResult = $this->fermeResultat(); - } - } - - /** - * DEPRECATED - * Méthode permettant d'ajouter des enregistrements dans une table liée. - * \param $sTableName Table dans laquelle on ajoute. - * \param $sAttributePK Attribut PK. - * \param $sPKValue Valeur de l'attribut PK. - * \param $aAttributeList Tableau contenant les attributs et leurs valeurs. - * \param $sSequence Séquence. - * \param $sSchema Schéma. - */ - function insertLinkedTable($sTableName, $sAttributePK, $sPKValue, $aAttributeList, $sSequence, $sSchema) { - switch ($this->sgbd) { - case 'mysql' : - //méthode non implémenté pour mysql - break; - case 'pgsql' : - break; - case 'oci' : - $sSql = "SELECT " . $sAttributeFK . " FROM " . $sTableName . " WHERE " . $sAttributePK . "=" . $sPKValue; - $sSqlDel = "DELETE FROM " . $sTableName . " WHERE " . $sAttributePK . "=" . $sPKValue . " AND " . $sAttributeFK . "='"; - break; - } - - $aValues = Array(); - foreach ($aAttributeList as $aValue) { - $aValues[$aValue[0]] = $aValue[1]; - } - $this->insert($sSchema, $sTableName, $aValues, $sSequence, $sAttributePK); - } - - /** - * DEPRECATED - * Méthode permettant d'ajouter des enregistrements sans ajout de nouvel Id dans une table liée. - * \param $sSchema Schéma. - * \param $sTable Table dans laquelle on ajoute. - * \param $aAttributeFK Tableau contenant les attributs. - * \param $aValueList Tableau contenant les valeurs. - */ - function insertWithoutIdLinkedTable($sSchema, $sTable, $aAttributeList, $aValueList) { - //Méthode implémenté uniquement pour postgresql - if ($sSchema != "") { - $sTable = $sSchema . "." . $sTable; - } - foreach ($aValueList as $iKey => $sValue) { - if (gettype($sValue) == "string") { - $aValueList[$iKey] = "'" . $sValue . "'"; - } - } - $sSql = "INSERT INTO " . $sTable . ' ("' . implode('","', $aAttributeList) . '") VALUES (' . implode(',', $aValueList) . ')'; - $this->execute($sSql); - } - - /** - * DEPRECATED - * Méthode permettant de mettre à jour des enregistrements dans une table liée. - * \param $sTableName Table dans laquelle on met un enregistrement à jour. - * \param $sAttributePK Attribut PK. - * \param $sAttributeFK Attribut FK. - * \param $sFKList Liste des valeurs de l'attribut FK. - * \param $sPKValue Valeur de l'attribut PK. - */ - function updateLinkedTable($sTableName, $sAttributePK, $sAttributeFK, $sFKList, $sPKValue) { - switch ($this->sgbd) { - case 'mysql' : - //méthode non implémenté pour mysql - break; - case 'pgsql' : - $sSql = "UPDATE " . $sTableName . " SET " . $sAttributePK . "=" . $sPKValue . " WHERE " . $sAttributeFK . "="; - break; - case 'oci' : - //méthode non implémenté pour oci - break; - } - $aFKList = explode("@", $sFKList); - //Met à jour les enregistrements de $aFKList - foreach ($aFKList as $sFKValue) { - writeToDebugLog($sSql . $sFKValue); - writeToSqlLog($sSql); - $this->connexion->query($sSql . $sFKValue); - } - } - - /** - * DEPRECATED - * Méthode permettant de générer une clause SQL simple de type "LIMIT" selon le sgbd. - * \param $iMinRowValue Valeur minimale du limit. - * \param $iRowPage Nombre d'enregistrements sélectionnés. - */ - function AddLimite($iMinRowValue, $iRowPage, $sSql) { - switch ($this->sgbd) { - case 'mysql' : - $sSql .= " LIMIT " . $iMinRowValue . "," . $iRowPage; - break; - case 'pgsql' : - $sSql .= " LIMIT " . $iRowPage . " OFFSET " . $iMinRowValue; - break; - case 'oci' : - $iRowPage = $iRowPage + $iMinRowValue; - $sSql1 = "SELECT * FROM ( SELECT * FROM (" . $sSql . ") WHERE ROWNUM <= " . $iRowPage . ") MINUS ( SELECT * FROM (" . $sSql . ") WHERE ROWNUM <= " . $iMinRowValue . ")"; - if (substr_count($sSql, "ORDER BY") >= 1) { - $sSql = "SELECT * FROM ( " . $sSql1 . ")" . stristr($sSql, "ORDER BY"); - } else { - $sSql = $sSql1; - } - break; - } - return $sSql; - } - - /** - * Méthode permettant de générer une clause SQL simple de type "LIMIT" selon le sgbd. - * \param $iMinRowValue Valeur minimale du limit. - * \param $iRowPage Nombre d'enregistrements sélectionnés. - */ - function AddLimiteWithParams($iMinRowValue, $iRowPage, $sSql) { - switch ($this->sgbd) { -// case 'mysql' : -// $sSql .= " LIMIT " . $iMinRowValue . "," . $iRowPage; -// break; - case 'pgsql' : - $sSql .= " LIMIT [iRowPage] OFFSET [iMinRowValue]"; - $aSQLParams = array( - 'iRowPage' => array('type' => 'string', 'value' => $iRowPage), - 'iMinRowValue' => array('type' => 'string', 'value' => $iMinRowValue) - ); - break; -// case 'oci' : -// $iRowPage = $iRowPage + $iMinRowValue; -// $sSql1 = "SELECT * FROM ( SELECT * FROM (" . $sSql . ") WHERE ROWNUM <= " . $iRowPage . ") MINUS ( SELECT * FROM (" . $sSql . ") WHERE ROWNUM <= " . $iMinRowValue . ")"; -// if (substr_count($sSql, "ORDER BY") >= 1) { -// $sSql = "SELECT * FROM ( " . $sSql1 . ")" . stristr($sSql, "ORDER BY"); -// } else { -// $sSql = $sSql1; -// } -// break; - } - return array( - 'sql' => $sSql, - 'params' => $aSQLParams - ); - } - - /** - * DEPRECATED - * Méthode permettant de générer une clause SQL simple de type "ORDER BY" selon le sgbd. - * \param $sAttribute Attribut. - * \param $sOrder Ordre dans lequel doivent étre triées les données "ASC" ou "DESC". - */ - function AddOrder($sAttibute, $sOrder) { - if (is_null($sOrder)) - $sOrder = 'ASC'; - switch ($this->sgbd) { - case 'mysql' : - $sSql = " ORDER BY '" . $sAttibute . "' " . $sOrder; - break; - case 'pgsql' : - $sSql = ' ORDER BY "' . $sAttibute . '" ' . $sOrder; - break; - case 'oci' : - $sSql = ' ORDER BY "' . $sAttibute . '" ' . $sOrder; - break; - } - return $sSql; - } - - /** - * DEPRECATED - * Méthode permettant de générer une clause SQL simple de type "WHERE" selon le sgbd. - * \param $sAttribute Attribut. - * \param $sId Valeur de l'attribut. - * \param $sType Type de l'attribut. - */ - function AddWhereClause($sAttribute, $sId, $sType = "") { - switch ($this->sgbd) { - case 'mysql' : - $sSql = " WHERE " . $sAttribute . "=" . $sId; - break; - case 'pgsql' : - if (substr_count($sAttribute, '.') != 1) { - $sAttribute = '"' . $sAttribute . '"'; - } - if ($sType == "text") - $sId = "'" . $sId . "'"; - $sSql = ' WHERE ' . $sAttribute . '= ' . $sId; - break; - case 'oci' : - $sId = "'" . $sId . "'"; - $sSql = ' WHERE ' . $sAttribute . '= ' . $sId; - break; - } - return $sSql; - } - - /** - * Selon executeWithParams - * Méthode permettant de générer une clause SQL simple de type "WHERE" selon le sgbd. - * \param $sAttribute Attribut. - * \param $sId Valeur de l'attribut. - * \param $sType Type de l'attribut. - */ - function AddWhereClauseWithParams($sAttribute, $sId, $sType = "string") { - switch ($this->sgbd) { -// case 'mysql' : -// $sSql = " WHERE " . $sAttribute . "=" . $sId; -// break; - case 'pgsql' : - - $aAttributs = explode('.', $sAttribute); - - // Si le schema est ou pas défini dans sAttribute - if (count($aAttributs) === 1) { - - $sColumnKey = 'column_' . vitisUniqId(); - $sValueKey = 'value_' . vitisUniqId(); - - $sSql = ' WHERE "[' . $sColumnKey . ']" = [' . $sValueKey . ']'; - $aSQLParams = array( - $sColumnKey => array('type' => 'column_name', 'value' => $aAttributs[0]), - $sValueKey => array('type' => $sType, 'value' => $sId) - ); - } else if (count($aAttributs) === 2) { - - $sSchemaKey = 'schema_' . vitisUniqId(); - $sColumnKey = 'column_' . vitisUniqId(); - $sValueKey = 'value_' . vitisUniqId(); - - $sSql = ' WHERE "[' . $sSchemaKey . ']"."[' . $sColumnKey . ']" = [' . $sValueKey . ']'; - $aSQLParams = array( - $sSchemaKey => array('type' => 'column_name', 'value' => $aAttributs[0]), - $sColumnKey => array('type' => 'column_name', 'value' => $aAttributs[1]), - $sValueKey => array('type' => $sType, 'value' => $sId) - ); - } - - break; -// case 'oci' : -// $sId = "'" . $sId . "'"; -// $sSql = ' WHERE ' . $sAttribute . '= ' . $sId; -// break; - } - return array( - 'sql' => $sSql, - 'params' => $aSQLParams - ); - } - - /** - * DEPRECATED - * Méthode permettant de générer une clause SQL simple de type "AND" selon le sgbd. - * \param $sSchema Schema de la base de données - * \param $sAttribute Attribut. - * \param $sId Valeur de l'attribut. - */ - function AddAndClause($sSchema, $sAttribute, $sId, $sType = "") { - switch ($this->sgbd) { - case 'mysql' : - $sSql = " AND " . $sAttribute . "=" . $sId; - break; - case 'pgsql' : - if (substr_count($sAttribute, '.') != 1) { - $sAttribute = '"' . $sAttribute . '"'; - } else { - if (substr_count($sAttribute, '."') != 1) { - $sAttribute = str_replace('.', '."', $sAttribute . '"'); - } - if (strcmp($sSchema, "") != 0) { - $sAttribute = $sSchema . '.' . $sAttribute; - } - } - $sId = "'" . $sId . "'"; - $sSql = ' AND ' . $sAttribute . '= ' . $sId; - break; - case 'oci' : - if ($sType == "text") - $sId = "'" . $sId . "'"; - $sSql = " AND " . $sAttribute . "=" . $sId; - break; - } - return $sSql; - } - - /** - * DEPRECATED - * Méthode permettant de générer une clause SQL simple de type "IN" selon le sgbd. - * \param $sSchema Schema de la base de données - * \param $sAttribute Attribut. - * \param $sId Valeurs de l'attribut. - */ - function AddInClause($sSchema, $sAttribute, $sId) { - switch ($this->sgbd) { - case 'mysql' : - // Vide - break; - case 'pgsql' : - if (substr_count($sAttribute, '.') != 1) { - $sAttribute = '"' . $sAttribute . '"'; - } else { - $sSchema = "\"" . $sSchema . "\""; - $sAttribute = $sSchema . ".\"" . str_replace(".", "\".\"", $sAttribute) . "\""; - } - break; - case 'oci' : - // Vide - break; - } - $sSql = $sAttribute . " IN (" . $sId . ")"; - return $sSql; - } - - /** - * Selon executeWithParams - * Méthode permettant de générer une clause SQL simple de type "IN" selon le sgbd. - * \param $sSchema Schema de la base de données - * \param $sAttribute Attribut. - * \param $sId Valeurs de l'attribut. - */ - function AddInClauseWithParams($sSchema, $sAttribute, $sId) { - switch ($this->sgbd) { -// case 'mysql' : -// // Vide -// break; - case 'pgsql' : - - $aAttributs = explode('.', $sAttribute); - - // Si le schema est ou pas défini dans sAttribute - if (count($aAttributs) === 1) { - - $sColumnKey = 'column_' . vitisUniqId(); - $sValueKey = 'value_' . vitisUniqId(); - - $sSql = '"[' . $sColumnKey . ']" IN ([' . $sValueKey . '])'; - $aSQLParams = array( - $sColumnKey => array('type' => 'column_name', 'value' => $aAttributs[0]), - $sValueKey => array('type' => 'group', 'value' => $sId) - ); - } else if (count($aAttributs) === 2) { - - $sSchemaKey = 'schema_' . vitisUniqId(); - $sColumnKey = 'column_' . vitisUniqId(); - $sValueKey = 'value_' . vitisUniqId(); - - $sSql = '"[' . $sSchemaKey . ']"."[' . $sColumnKey . ']" IN ([' . $sValueKey . '])'; - $aSQLParams = array( - $sSchemaKey => array('type' => 'column_name', 'value' => $aAttributs[0]), - $sColumnKey => array('type' => 'column_name', 'value' => $aAttributs[1]), - $sValueKey => array('type' => 'group', 'value' => $sId) - ); - } - break; -// case 'oci' : -// // Vide -// break; - } - return array( - 'sql' => $sSql, - 'params' => $aSQLParams - ); - } - - /** - * DEPRECATED - * Méthode qui renvoie une chaine formatée pour pouvoir étre utilisé dans un requête insert, update ou select. - * \param $sValue Chaine qui va doit être formatée. - * \param $sType Type de l'attribut. - * \param $sSchema Schema contenant la table dont est issu le champ à traiter (vide par défaut). - * \param $sTable Table dont est issu le champ à traiter (vide par défaut). - */ - function formatForSql($sValue, $sType, $sSchema = "", $sTable = "") { - - // Gestion du type spatiale - switch ($this->sgbd) { - case "pgsql" : - if (($sType === "geometry") && ($sValue !== "")) { - $iTableDimension = $this->getTableDimension($sTable, $sSchema); - $sForce3DDebut = ""; - $sForce3DFin = ""; - if ($iTableDimension == 3) { - $sForce3DDebut = "st_force_3d("; - $sForce3DFin = ")"; - } - $sOriginTable = $this->ifTableIsAView($sTable, $sSchema); - if ($sOriginTable != $sTable) { - $sTable = $sOriginTable; - $sOriginSchema = $this->getTableSchema($sTable); - if ($sOriginSchema != $sSchema) - $sSchema = $sOriginSchema; - } - // Si il s'agit de format EWKT, alors on connait la projection de la géométrie. On peut alors procéder à une reprojection automatique des données - if ($this->isEWKTFormat($sValue)) { - $sValue = $sForce3DDebut . "ST_transform(ST_GeomFromEWKT('" . $sValue . "'), " . $this->getTableSRID($sTable, $sSchema) . ")" . $sForce3DFin; - } else { - $sValue = $sForce3DDebut . "st_geometryFromText('" . $sValue . "'," . $this->getTableSRID($sTable, $sSchema) . ") " . $sForce3DFin; - } - } else { - $sValue = str_replace("'", "''", $sValue); - //$sValue = str_replace("\\", "\\\\", $sValue); - //$sValue = str_replace("\\\\\\''", "\\\\\\\\\\\\'", $sValue); - } - - break; - } - // Gestion des types alphanumériques - if ($sValue === "") { - $sValue = "null"; - } else { - switch ($sType) { - case ($sType == "BLOB" || $sType == "bool"): - if ($sValue == "") - $sValue = 0; - case ($sType == "bpchar" || $sType == "DATE" || $sType == "varchar" || $sType == "VARCHAR2" || $sType == "VAR_STRING" || $sType == "text" || $sType == "timestamp"): - if ((empty($sValue) && $sValue != 0) || $sValue == "") { - $sValue = "null"; - } else { - $sValue = "'" . $sValue . "'"; - } - break; - case ($sType == "date" || $sType == "DATETIME" || $sType == "timestamptz"): - $sValue = "'" . implode("-", array_reverse(explode("/", $sValue))) . "'"; - break; - default: - if ($sValue == "") - $sValue = "null"; - break; - } - } - // Cas particulier : le booléen 'faux' dans PostgreSQL - if ($sType == "bool" && $this->sgbd == "pgsql" && $sValue == "null") - $sValue = "false"; - return $sValue; - } - - /** - * Méthode qui renvoie une chaine formatée pour pouvoir étre utilisé dans un requête insert, update ou select. - * \param $sValue Chaine qui va doit être formatée. - * \param $sType Type de l'attribut. - * \param $sSchema Schema contenant la table dont est issu le champ à traiter (vide par défaut). - * \param $sTable Table dont est issu le champ à traiter (vide par défaut). - */ - function formatForSqlWithParams($sValue, $sField, $sType, $sSchema = "", $sTable = "") { - - $sFieldKey = $sField . '_' . vitisUniqId(); - - switch ($this->sgbd) { - case "pgsql" : - if (($sType === "geometry") && ($sValue !== "")) { - $iColumnDimension = $this->getColumnDimension($sSchema, $sTable, $sField); - $sForce3DDebut = ""; - $sForce3DFin = ""; - // Projection - $sSRID = $this->getColumnSRID($sSchema, $sTable, $sField); - if ($sSRID == "0") { - $sSRID = "2154"; - } - // Dimention - if ($iColumnDimension == 3) { - $sForce3DDebut = "st_force_3d("; - $sForce3DFin = ")"; - } - $sOriginTable = $this->ifTableIsAView($sTable, $sSchema); - if ($sOriginTable != $sTable) { - $sTable = $sOriginTable; - $sOriginSchema = $this->getTableSchema($sTable); - if ($sOriginSchema != $sSchema) - $sSchema = $sOriginSchema; - } - // Si il s'agit de format EWKT, alors on connait la projection de la géométrie. On peut alors procéder à une reprojection automatique des données - if ($this->isEWKTFormat($sValue)) { - $sField = $sForce3DDebut . "ST_Transform(ST_GeomFromEWKT([" . $sFieldKey . "]), " . $sSRID . ")" . $sForce3DFin; - } else { - $sField = $sForce3DDebut . "ST_GeometryFromText([" . $sFieldKey . "]," . $sSRID . ") " . $sForce3DFin; - } - } else { - $sField = '[' . $sFieldKey . ']'; - } - break; - } - - return array( - 'field' => $sField, - 'fieldKey' => $sFieldKey, - 'value' => $sValue - ); - } - - /** - * DEPRECATED - * Méthode permettant de construire une clause WHERE SQL é partir d'une liste de valeur passées en requête et avec une jointure sur une autre table. - * La table cible est spécifiée en paramètre de la méthode. - * \param $sSchema Schema de la base de données - * \param $sTable Table dans laquelle on recherche. - * \param $aValues Valeurs contenues dans la requête. - * \param $bListQuery. - * \param $sTable_sql - * \param $pKey - * \param $isWhereExist - * \return La clause WHERE de la requête SQL de recherche. - */ - function getWhereAndClause($sSchema, $sTable, $aValues, $bListQuery, $sTable_sql, $pKey, $isWhereExist = false) { - // LIKE gère tous les types de champs. - switch ($this->sgbd) { - case 'mysql' : - $sProtectField = '`'; - $sSql = $this->AddLimite(0, 1, "SELECT * FROM " . $sTable); - break; - case 'pgsql' : - $sTable = $sSchema . "." . $sTable; - $sProtectField = '"'; - $sSql = $this->AddLimite(0, 1, "SELECT * FROM " . $sTable); - break; - case 'oci' : - $sProtectField = ''; - $sSql = $this->AddLimite(0, 1, "SELECT " . $sTable . ".* FROM " . $sTable); - break; - } - $resultat = $this->execute($sSql); - - $iNumFields = $this->getFieldsNumber($resultat); - for ($i = 0; $i < $iNumFields; $i++) { - $aField["name"][$i] = $this->getFieldName($resultat, $iNumFields, $i, $sTable); - $aField["type"][$i] = $this->getType($resultat, $iNumFields, $aField["name"][$i], $sTable); - } - $sWhereClause = ""; - $sQueryList = ""; - foreach ($aValues as $sKey => $sValue) { - $i = 0; - - while ($aField["name"][$i]) { - //echo $aField["name"][$i]." ".$aField["type"][$i]."<BR>"; - if ($aField["name"][$i] == $sKey && $sValue != "") { - $sKey = addDelimitedAttribute("", $sKey, "", $sProtectField); - switch ($aField["type"][$i]) { - case (ereg("LONG|int4|NUMBER", $aField["type"][$i]) > 0) : - if ($sWhereClause == "" & !$isWhereExist) - $sWhereClause .= " WHERE " . $sTable . "." . $sKey . "::varchar LIKE '" . $sValue . "' "; - else - $sWhereClause .= " AND " . $sTable . "." . $sKey . "::varchar LIKE '" . $sValue . "' "; - if ($bListQuery) - $sQueryList .= $sKey . "=" . $sValue . " & "; - break; - case 'bool' : - if ($sValue == '1') - $sValue = 'TRUE'; - if ($sValue == '0') - $sValue = 'FALSE'; - if ($sWhereClause == "" & !$isWhereExist) - $sWhereClause .= " WHERE " . $sTable . "." . $sKey . " = " . $sValue . " "; - else - $sWhereClause .= " AND " . $sTable . "." . $sKey . " = " . $sValue . " "; - if ($bListQuery) - $sQueryList .= $sKey . "=" . $sValue . " & "; - break; - //case "datetime" || "timestamp" : - case (ereg("DATE|date", $aField["type"][$i]) > 0) : - $sValue = substr($this->formatForSql($sValue, $aField["type"][$i]), 1, -1); - if ($this->sgbd === "oci") - $sFunction = "TO_CHAR(" . $sTable . "." . $sKey . ", 'DD/MM/YYYY')"; - default : - if (!empty($sFunction)) { - if ($sWhereClause == "" & !$isWhereExist) - $sWhereClause .= " WHERE " . $sFunction . " LIKE '%" . $sValue . "%' "; - else - $sWhereClause .= " AND " . $sFunction . " LIKE '%" . $sValue . "%' "; - }else { - if ($sWhereClause == "" & !$isWhereExist) - $sWhereClause .= " WHERE " . $sTable . "." . $sKey . " LIKE '%" . $sValue . "%' "; - else - $sWhereClause .= " AND " . $sTable . "." . $sKey . " LIKE '%" . $sValue . "%' "; - } - if ($bListQuery) - $sQueryList .= $sKey . "='" . $sValue . "' & "; - break; - } - $sWhereClause .= " AND " . $sTable . "." . $pKey . " = " . $sTable_sql . "." . $pKey; - } - - $i++; - } - } - $resultat = $this->fermeResultat(); - if ($sQueryList != "") - $sQueryList = substr($sQueryList, 0, -3); - return array("WhereClause" => $sWhereClause, "QueryList" => $sQueryList); - } - -// Fin de la classe -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/BdDataAccess.inc b/src/vitis/vas/rest/class/vmlib/BdDataAccess.inc deleted file mode 100755 index c719389b38d80d77ee63d0f302648e0fc53124e3..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/BdDataAccess.inc +++ /dev/null @@ -1,20 +0,0 @@ -<?php - -/* - * - * BdDataAccess.inc : - * - */ - -switch ($properties["sgbd"]) { - case "mysql" : - require_once("vmlib/MysqlDataAccess.class.inc"); - break; - case "pgsql" : - require_once(__DIR__ . "/PgsqlDataAccess.class.inc"); - break; - case "oci" : - //require_once("vmlib/OciDataAccess.class.inc"); - break; -} -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/Email.class.inc b/src/vitis/vas/rest/class/vmlib/Email.class.inc deleted file mode 100755 index 509b60691830e6382bdddb1c7dee04aaff7cb9a0..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/Email.class.inc +++ /dev/null @@ -1,328 +0,0 @@ -<?php - -require_once ("vmlib/logUtil.inc"); -//require_once ("PEAR/Mail.php"); -//require_once ("PEAR/Mail/mime.php"); -require_once ("vmlib/EmailTemplate.class.inc"); - -require_once 'vmlib/error.inc'; - -use PHPMailer\PHPMailer\PHPMailer; -use PHPMailer\PHPMailer\Exception; - -require_once 'PHPMailer/src/Exception.php'; -require_once 'PHPMailer/src/PHPMailer.php'; -require_once 'PHPMailer/src/SMTP.php'; - -class Email { - - protected $to; - protected $cc; - protected $cci; - protected $subject; - protected $body; - protected $bUseHTML; - protected $aAttachments; - protected $mimeVersion = '1.0'; - protected $contentType = 'text/html; charset=utf-8'; - protected $from; - protected $replyTo; - protected $xMailer; - protected $date; - protected $aObjects; - protected $aProperties; - protected $oBd; - public $oEmailTemplate; - public $aValues; - protected $logFileName; - - /* * **************************************************** - - * **************************************************** */ - /** - *@construct - *@param $oBd Database access object - *@param $iEmailTemplateId ID of the template - *@param $aProperties Properties of the application - *@param aObjects Object that initialyze the sending - *@todo Si vous utilisez cette classe avec chargement par mailStruct : $oBd = null, $iEmailTemaplteId = null, $aObjects = null - */ - function __construct($oBd, $iEmailTemplateId, $aProperties, $aObjects) { - //error_log("contructor start"); - $this->oBd = $oBd; - $this->aProperties = $aProperties; - $this->aObjects = $aObjects; - $this->xMailer = array('PHP/' => phpversion()); - //$this->from = $this->aProperties['nickname_sender'] . '<' . $this->aProperties['mail_sender'] . '>'; - //$this->replyTo = '<>'; - //$this->date = date("D, j M Y H:i:s "); - $this->aValues = array(); - $this->bUseHTML = true; - //error_log("before if"); - if(isset($this->aProperties['mail_log_file'])){ - //error_log("if1.1"); - $this->logFileName = $this->aProperties['mail_log_file']; - } else if (!isset($this->aProperties['mail_log_file']) && isset($this->aProperties['error_log_file'])){ - //error_log("if1.2"); - $this->logFileName = $this->aProperties['error_log_file']; - } else { - //error_log("if1.3"); - $this->logFileName = $properties['log_dir'] . "/mail.log"; - } - //error_log("before if 2"); - if (!empty($iEmailTemplateId)) { - //error_log("if2"); - $this->loadFromMailTemplate($iEmailTemplateId); - } - //error_log("contructor end"); - } - - /* * **************************************************** - Envoi un email. - /Retour : message - * **************************************************** */ - - /* function send() { - $sErrorMessage = ''; - $crlf = ""; // \n - // - $oMime = new Mail_mime(array('eol' => $crlf)); - // Pièce jointe ? - if (is_array($this->aAttachments) && !empty($this->aAttachments)) { - foreach ($this->aAttachments as $sAttachment) { - if (file_exists($sAttachment)) - $oMime->addAttachment($sAttachment, 'application/octet-stream'); - } - } - // - $oMime->setHTMLBody('<html><body>' . $this->body . '</body></html>'); - $aMimeParams = array( - 'text_encoding' => '7bit', - 'text_charset' => 'UTF-8', - 'html_charset' => 'UTF-8', - 'head_charset' => 'UTF-8' - ); - $sBody = $oMime->get($aMimeParams); - // - $aHeaders = array( - 'From' => $this->from, - 'Date' => $this->date, - 'To' => $this->to, - 'Subject' => $this->subject, - 'cc' => $this->cc, - ); - $aHeaders = $oMime->headers($aHeaders); - // - $oMail = new Mail(); - $aSmtp = $oMail->factory('smtp', array( - 'host' => $this->aProperties["smtp_host"], - 'port' => $this->aProperties["smtp_port"], - 'auth' => $this->aProperties["smtp_authentification"], - 'username' => $this->aProperties["smtp_login"], - 'password' => $this->aProperties["smtp_password"])); - // - if ($this->to != '') { - $sDestinataire = $this->to; - if (!empty($this->cc)) - $sDestinataire .= ',' . $this->cc; - if (!empty($this->cci)) - $sDestinataire .= ',' . $this->cci; - $sMail = $aSmtp->send($sDestinataire, $aHeaders, $sBody); - if (PEAR::isError($sMail)) { - writeToErrorLog(ERROR_0023 . $this->to . '.'); - writeToErrorLog("Error message : " . $sMail->getMessage() . "."); - writeToLog("Failed sending email to the following address : " . $this->to . ' et ' . $this->cc, $this->aProperties['mail_log_file']); - writeToLog("Error message : " . $sMail->getMessage() . '.', $this->aProperties['mail_log_file']); - $sErrorMessage = $sMail->getMessage(); - } else - writeToLog("|INFORM|PHP| An email has been sent to the following address : $sDestinataire", $this->aProperties['mail_log_file']); - } - // - return $sErrorMessage; - } */ - - /** - *Load an email from an external structure. - *@param $aMailstruct Structure of the email. - * $aMailstruct = [ - * 'to' => (string) comma separated, - * 'cc' => (string) comma separated, - * 'cci' => (string) comma separated, - * 'subject' => (string) - * 'body' => (string) - * 'aAttachments' => (array) <path|string> - * 'bUseHTML' => (boolean) if not explicit is true - * ] - * - */ - function loadFromExernalDataStruct($aMailstruct) { - //error_log(print_r("start", true)); - //$this->to = $aMailstruct["to"]; - //$this->cc = $aMailstruct["cc"]; - //$this->cci = $aMailstruct["cci"]; - $this->subject = $aMailstruct["subject"]; - $this->body = $aMailstruct["body"]; - $this->aAttachments = $aMailstruct["aAttachments"]; - - if(isset($aMailstruct["bUseHTML"])){ - $this->bUseHTML = $aMailstruct["bUseHTML"]; - } - - $aMailstruct["to"] = str_replace(chr(13), ',', $aMailstruct["to"]); - $aMailstruct["cc"] = str_replace(chr(13), ',', $aMailstruct["cc"]); - $aMailstruct["cci"] = str_replace(chr(13), ',', $aMailstruct["cci"]); - $this->to = str_replace(';', ',', $aMailstruct["to"]); - $this->cc = str_replace(';', ',', $aMailstruct["cc"]); - $this->cci = str_replace(';', ',', $aMailstruct["cci"]); - //error_log(print_r("end", true)); - } - - /** - *Load an email from a template gtf. - *@param $iTemplateId Id of the template - */ - function loadFromMailTemplate($iTemplateId) { - require_once("gtf_lib/gtf_object/Order.class.inc"); - $this->oEmailTemplate = new EmailTemplateLib($this->oBd, $iTemplateId, $this->aProperties, $this->aObjects); - if (!empty($this->oEmailTemplate->name)) { - if (!empty($this->aObjects)) { - // Si édition simple : génère le code de l'email - if (!$this->oEmailTemplate->use_advanced) - $this->oEmailTemplate->code = $this->oEmailTemplate->generateCode(); - // - eval($this->oEmailTemplate->code); - } - $this->to = str_replace(chr(13), ',', $this->to); - $this->cc = str_replace(chr(13), ',', $this->cc); - $this->cci = str_replace(chr(13), ',', $this->cci); - $this->to = str_replace(';', ',', $this->to); - $this->cc = str_replace(';', ',', $this->cc); - $this->cci = str_replace(';', ',', $this->cci); - } - } - - /** - * Send an email. - * @return $sErrorMessage Le message d'erreur - */ - function send() { - $mail = new PHPMailer(null); // create instance with try catch - $sErrorMessage = null; - - $mail->isSMTP(); // Set mailer to use SMTP - //$mail->SMTPDebug = 3; // debugger level (3 all with connection) - $mail->Debugoutput = function($str, $level) { - error_log("debug level $level; message: $str"); - }; - $mail->Host = $this->aProperties["smtp_host"]; // Specify main and backup SMTP servers - $mail->Port = $this->aProperties["smtp_port"]; // TCP port to connect to - $mail->SMTPAuth = $this->aProperties["smtp_authentification"]; // Enable SMTP authentication - // if authentication add parameter to connect SMTP - if ($this->aProperties["smtp_authentification"] === true) { - $mail->AuthType = 'LOGIN'; - $mail->Username = $this->aProperties["smtp_login"]; // SMTP username - $mail->Password = $this->aProperties["smtp_password"]; // SMTP password - $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted (deprecated) - } - //error_log("defintion mail"); - $mail->SetFrom($this->aProperties['mail_sender'], $this->aProperties['nickname_sender']); - //error_log("sender"); - //error_log(print_r($this->to, true)); - // add recipients - $aTo = array($this->to); - //error_log("br1"); - if(strpos($this->to, ",") !== false){ - //error_log("br2"); - $aTo = explode(",", $this->to); - } - //error_log(print_r($aTo, true)); - if (is_array($aTo) && !empty($aTo)) { - foreach ($aTo as $sTo) { - $mail->AddAddress($sTo); - } - } - //error_log("to"); - // add copy recipient - $aCC = array($this->cc); - if(strpos($this->cc, ",") !== false){ - $aCC = explode(",", $this->cc); - } - if (is_array($aCC) && !empty($aCC)) { - foreach ($aCC as $sCC) { - $mail->AddCC($sCC); - } - } - //error_log("cc"); - // add CCI recipient - $aCCI = array($this->cci); - if(strpos($this->cci, ",") === false){ - $aCCI = explode(",", $this->cci); - } - if (is_array($aCCI) && !empty($aCCI)) { - foreach ($aCCI as $sCCI) { - $mail->AddBCC($sCCI); - } - } - //error_log("cci"); - $mail->AddReplyTo($this->aProperties["mail_sender"], $this->aProperties["nickname_sender"]); - - $mail->IsHTML($this->bUseHTML); // Set email format to HTML - $mail->CharSet = 'UTF-8'; - - $mail->Subject = $this->subject; - //error_log("subject"); - if($this->bUseHTML){ - $this->body = '<html><body>' . $this->body . '</body></html>'; - } - - $mail->Body = /* utf8_decode */($this->body); - //error_log("body"); - // Pièce jointe ? - if (is_array($this->aAttachments) && !empty($this->aAttachments)) { - foreach ($this->aAttachments as $sAttachment) { - if (file_exists($sAttachment)) { - //$mail->addAttachment($path, $name, $encoding = 'base64', $type = 'application/octet-stream'); - $mail->addAttachment($sAttachment); - } - } - } - //error_log("pj"); - // Depuis PHP 5.6 -> vérification du certificat SSL. - if (!$this->aProperties['proxy_check_ssl']) { - $mail->SMTPOptions = array( - 'ssl' => array( - 'verify_peer' => false, - 'verify_peer_name' => false, - 'allow_self_signed' => true - ) - ); - } - //error_log("send"); - // - if (!$mail->send()) { - writeToErrorLog(ERROR_0023 . $this->to . '.'); - writeToErrorLog("Error message : " . $mail->ErrorInfo); - writeToLog("|WARN|PHP|Failed sending email to the following address : " . $this->to . ' and copy to : ' . $this->cc, $this->logFileName); - $sErrorMessage = $mail->ErrorInfo; - } else { - writeToLog("|INFORM|PHP| An email has been sent to the following address : " . $this->to . ' and copy to : ' . $this->cc, $this->logFileName); - - if ($this->aProperties['SaveSentMail'] === true) { - require_once("gtf_lib/Imap.php"); - $imap = new Imap($this->aProperties['imapBotSender_host'], $this->aProperties['imapBotSender_port'], $this->aProperties['imapBotSender_login'], $this->aProperties['imapBotSender_pwd'], $this->aProperties['imapBotSender_encrypt']); - - if ($imap->isConnected() === false) { - writeToLog("|WARN|PHP| can't connect to the IMAP at hostname : " . $this->aProperties['imapBotSender_host'], $this->logFileName); - } else { - $imap->selectFolder("Sent"); - $imap->saveMessageInSent($mail->getSentMIMEMessage(), ""); - } - } - } - - return $sErrorMessage; - } - -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/EmailTemplate.class.inc b/src/vitis/vas/rest/class/vmlib/EmailTemplate.class.inc deleted file mode 100755 index 3665bf0be5facc4d497e1d58d3c1efa7e4ad1a12..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/EmailTemplate.class.inc +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -require_once("vmlib/logUtil.inc"); -require_once 'vmlib/error.inc'; - -class EmailTemplateLib { - - public $id; - public $name; - public $to; - public $cc; - public $cci; - public $subject; - public $body; - public $code; - public $use_advanced; - public $oBd; - public $context; - public $aObjects; - public $aAttachments; - public $aProperties; - - /* * **************************************************** - Récupère les paramètres du modèle de mail - \$oBd : objet PDO - \$iEmailTemplateId : id du modèle de mail - * **************************************************** */ - - function __construct($oBd, $iEmailTemplateId, $aProperties, $aObjects) { - require("EmailTemplate.class.sql.inc"); - $this->aProperties = $aProperties; - $this->aObjects = $aObjects; - // Récupère les données du modèle de mail - $sSql = $aSql[$oBd->sgbd]['getMailModel']; - $sSql = str_replace('[iEmailTemplateId]', $iEmailTemplateId, $sSql); - $sSql = str_replace('[sSchemaGtf]', $aProperties['schema_gtf'], $sSql); - $oResult = $oBd->execute($sSql); - if ($oBd->erreurRencontree) - $sErrorMsg = $oBd->getBDMessage(); - else { - if ($oBd->nombreLigne($oResult) > 0) { - $oRow = $oBd->objetSuivant($oResult); - $this->id = $oRow->email_template_id; - $this->name = $oRow->name; - $this->to = $oRow->to; - $this->cc = $oRow->cc; - $this->cci = $oRow->cci; - $this->subject = $oRow->subject; - $this->body = $oRow->body; - $this->code = $oRow->code; - $this->use_advanced = $oRow->use_advanced; - $this->oBd = $oBd; - $this->context = $oRow->rt_emailcontext_id; - } else - $sErrorMsg = str_replace('[iEmailTemplateId]', $iEmailTemplateId, ERROR_0024); - } - if (isset($sErrorMsg)) - writeToErrorLog($sErrorMsg); - } - - /* * ***************************************************** - Génère le code php correspondant à l'édition simple. - /Return : Code php (string) - * ***************************************************** */ - - function generateCode($bUseAdvanced = false) { - $sMailModelCode = ''; - if (!$bUseAdvanced) { - // Edition simple (récupère la valeur des balises) - require 'vmlib/context/' . $this->context . '.inc'; - } else { - // Edition avancée (récupère la syntaxe du code des balises) - $sMailContextCode = file_get_contents('vmlib/context/' . $this->context . '.inc', true); - preg_match_all('/=.+;/', $sMailContextCode, $aTagCode); - foreach ($aTagCode[0] as $iIndex => $sTagCode) { - $sTagCode = trim(substr($sTagCode, 1, strlen($sTagCode) - 2)); - if (preg_match('/^[^\'"]/', $sTagCode) === 1) - $sMailContextCode = str_replace($sTagCode, "'" . str_replace("'", "\'", $sTagCode) . "'", $sMailContextCode); - } - $sMailContextCode = preg_replace("/'{2,}/", "'", $sMailContextCode); - $sMailContextCode = str_replace(array('<?php', '?>'), '', $sMailContextCode); - eval($sMailContextCode); - } - // Remplace toutes les balises par les valeurs du fichier de contexte. - if (!empty($properties)) { - foreach ($properties as $sIndex => $aValues) - $aContextTag[$sIndex] = $aValues['value']; - $aEmailParameter = array('to', 'cc', 'cci', 'subject', 'body'); - foreach ($aEmailParameter as $sEmailParameter) { - $sEmailParameterValue = str_replace("'", "\'", $this->$sEmailParameter); - foreach ($aContextTag as $sTag => $sValue) { - if ($bUseAdvanced) { - if (substr($sValue, 0, 1) == '$') - $sValue = "' . $sValue . '"; - $sEmailParameterValue = str_replace("[$sTag]", $sValue, $sEmailParameterValue); - } else - $sEmailParameterValue = str_replace("[$sTag]", str_replace("'", "\'", $sValue), $sEmailParameterValue); - } - $sMailModelCode .= '$this->' . $sEmailParameter . ' = \'' . $sEmailParameterValue . '\';' . PHP_EOL; - } - } - return $sMailModelCode; - } - -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/EmailTemplate.class.sql.inc b/src/vitis/vas/rest/class/vmlib/EmailTemplate.class.sql.inc deleted file mode 100755 index daf314cda9dcb7f54aa6bc5a4d88d44a13b262c5..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/EmailTemplate.class.sql.inc +++ /dev/null @@ -1,4 +0,0 @@ -<?php - -$aSql['pgsql']['getMailModel'] = "SELECT * FROM [sSchemaGtf].email_template WHERE email_template_id = '[iEmailTemplateId]'"; -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/Ldap.class.inc b/src/vitis/vas/rest/class/vmlib/Ldap.class.inc deleted file mode 100755 index 71af099959946ec546c30ea578451d61a49e95f2..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/Ldap.class.inc +++ /dev/null @@ -1,276 +0,0 @@ -<?php - -/** - * \file Ldap.class.inc - * \brief Ldap.class.inc \n \n Ce fichier contient la classe php Ldap. - * - * Cette classe permet de cr�er une connexion � l'annuaire Ldap et contient plusieurs m�thodes (recherche, gestion du message d'erreur). - * - * \author Fabien Marty <fabien.marty@veremes.com> - * \author Nicolas Chazeau <nicolas.chazeau@veremes.com> - */ - -/** - * \class Ldap - * \brief Ldap Class \n \n Ldap est une classe PHP qui permet de cr�er une connexion � l'annuaire Ldap . - * - * Cette classe permet de cr�er une connexion � l'annuaire Ldap et contient plusieurs m�thodes (recherche, gestion du message d'erreur). - * - * \author Fabien Marty <fabien.marty@veremes.com> - * \author Nicolas Chazeau <nicolas.chazeau@veremes.com> - */ -class Ldap { - /* - * Variable globale stockant le nom de dossier lib. - */ - - var $sFolderLib = "vmlib"; - - /** - * Objet connexion en cours au serveur. - */ - var $oConnexion; - - /** - * Message � afficher. - */ - var $sMessage = ""; - - /** - * Bool�en, permet de savoir si une erreur � �t� rencontr�e. - */ - var $bErreurRencontree = false; - - /** - * Identifiant de l'utilisateur. - */ - var $sLogin; - var $lang; - - /** - * \param $sLogin Identifiant de l'utilisateur. - * \param $sMotDePasse Mot de passe de l'utilisateur. - * \param $sDomaine Nom de domaine. - * \param $sServeur Nom ou IP du serveur utilis�. - */ - function __construct($sLogin, $sMotDePasse, $sDomaine, $sServeur, $sPageEncoding = "ISO-8859-1", $lang = "fr") { - $this->lang = $lang; - loadLang($this->sFolderLib, $this->lang); - $this->sLogin = $sLogin; - - // connecxion au serveur ldap - $this->oConnexion = ldap_connect($sServeur); - ldap_set_option($this->oConnexion, LDAP_OPT_PROTOCOL_VERSION, 3); - if ($this->oConnexion) { - @$oLdapbind = ldap_bind($this->oConnexion, $sDomaine . "\\" . $sLogin, $sMotDePasse); - if (!$oLdapbind) { - //Test utilisateur Active Directory - $sErrorMessage = ERROR_USER_NOT_FOUND_LDAP; - $sErrorMessage = $this->setEncodeLdapMessage($sErrorMessage); - $sErrorMessage = str_replace("[LOGIN]", $this->sLogin, $sErrorMessage); - $this->setLdapMessage($sErrorMessage); - $this->bErreurRencontree = true; - } - } else { - //Test connection Active Directory - $sErrorMessage = ERROR_CONNECT_LDAP; - $this->bErreurRencontree = true; - $this->setLdapMessage($sErrorMessage); - } - } - - /** - * M�thodes permettant d'encoder la chaine ISO-8859-1 vers l'encodage du client ($this->sPageEncoding). - * \param $sMessage Message � encoder. - * \private - */ - function setEncodeLdapMessage($sMessage) { - $sEncodeLdapMessage = iconv("ISO-8859-1", $this->sPageEncoding, $sMessage) . "<br>"; - return $sEncodeLdapMessage; - } - - /** - * M�thodes pour valoriser le message � afficher. - * \param $sMessage Message � afficher. - * \private - */ - function setLdapMessage($sMessage) { - $this->sMessage .= $sMessage . "<br>"; - } - - /** - * Retourne le messsage � afficher en HTML. - * \private - * \return Le message � afficher. - */ - function getLdapMessage() { - if ($this->sMessage != "") - $sResult = USER_LABEL . $this->sLogin . "<br>" . ERROR_LABEL . $this->sMessage; - else - $sResult = ""; - return $sResult; - } - - /** - * D�connexion. - */ - function quitter() { - ldap_close($this->oConnexion); - } - - /* - * Recherche sur l'ensemble des niveaux. - * \param $sBase_dn La base DN pour le dossier. - * \param $sFilter Filtre - * \param $aAttributes Un tableau d'attributs requis, e.g. array("mail", "sn", "cn"). - * \param $iAttrsOnly Doit �tre d�fini � 1 si seuls les types des attributs sont demand�s. S'il est d�fini � 0, les types et les valeurs des attributs sont r�cup�r�s, ce qui correspond au comportement par d�faut. - * \return l'objet r�sultat de la recherche. - */ - - function search($sBaseDn, $sFilter, $aAttributes, $iAttrsOnly = 0) { - return ldap_search($this->oConnexion, $sBaseDn, $sFilter, $aAttributes, $iAttrsOnly); - } - - /* - * Recherche par niveau. - * \param $sBaseDn La base DN pour le dossier. - * \param $sFilter Filtre - * \param $aAttributes Un tableau d'attributs requis, e.g. array("mail", "sn", "cn"). - * \param $iAttrsOnly Doit �tre d�fini � 1 si seuls les types des attributs sont demand�s. S'il est d�fini � 0, les types et les valeurs des attributs sont r�cup�r�s, ce qui correspond au comportement par d�faut. - * \return l'objet r�sultat de la recherche. - */ - - function searchByLevel($sBaseDn, $sFilter, $aAttributes, $iAttrsOnly = 0) { - if ($aAttributes == array() or $aAttributes == "") { - return @ldap_list($this->oConnexion, $sBaseDn, $sFilter); - } else { - return @ldap_list($this->oConnexion, $sBaseDn, $sFilter, $aAttributes, $iAttrsOnly); - } - } - - /* - * M�thode de lecture d'un objet r�sultat d'une recherche pass� en param�tre. - * \param $oSearch R�sultat de la recherche - * \return - */ - - function getResult($oSearch) { - return ldap_get_entries($this->oConnexion, $oSearch); - } - - /* - * M�thode permettant de compter le nombre d'entr�e d'un objet r�sultat d'une recherche pass� en param�tre. - * \param $oSearch R�sultat de la recherche - * \return un entier - */ - - function countResult($oSearch) { - return ldap_count_entries($this->oConnexion, $oSearch); - } - - /* - * M�thode permettant de r�cup�rer les groupe d'un utilisateur Ldap. - * \param $ldap_serveur Adresse IP du serveur - * \param $ldap_baseRecherche Base de recherche dans l'Active Directory - * \param $ldap_userConnexion Utilisateur de l'Active Directory - * \param $ldap_passwordConnexion Mot de passe de l'utilisateur de l'Active Directory - * \param $ldap_user Utilisateur de l'Active Directory - * \param $ldap_attributUtilisateur Attribut LDAP portant le nom de l'utilisateur - * \param $ldap_attributGroupe Attribut LDAP portant le nom du groupe - * \return la fin de la clause where - */ - - // FONCTION UTILISEE POUR GTF (projet EDGAR) - - /* - function whereUserGroup($ldap_serveur,$ldap_baseRecherche,$ldap_userConnexion,$ldap_passwordConnexion,$ldap_user,$ldap_attributUtilisateur,$ldap_attributGroupe, $sUserPrefixe="", $sUserSuffixe="", $oBd="", $sldap_allUserGroup="") { - define('LDAP_HOST',$ldap_serveur); // Serveur AD - define('LDAP_DN',$ldap_baseRecherche);// DN de base pour la recherche - - //Connexion au serveur LDAP - $ldap = ldap_connect(LDAP_HOST) or die(ERROR_CONNECT_LDAP); - - if ($ldap) { - if ($oBd!=""){ - $sBaseEncoding=$oBd->getSourceEncoding(); - //Le login ainsi que le mot de passe est encod� dans l'encodage de l'AD du client (encodage en ISO-8859-1) pour permettre de r�cup�rer les groupes de l'utilisateur dans l'AD - $ldap_userConnexion=iconv($sBaseEncoding,"ISO-8859-1",$ldap_userConnexion); - $ldap_passwordConnexion=iconv($sBaseEncoding,"ISO-8859-1",$ldap_passwordConnexion); - $ldap_user=iconv($sBaseEncoding,"ISO-8859-1",$ldap_user); - } - - //Connexion au serveur LDAP - $ldapbind = ldap_bind($ldap, $sUserPrefixe.$ldap_userConnexion.$sUserSuffixe, $ldap_passwordConnexion); - if ($ldapbind) { - // Une fois connect�, on v�rifie si l'ensemble des utilisateurs de l'AD sont associ� � un ou plusieurs groupes - //(ex : tous les utilisateurs de l'AD sont associ� au groupe "Domaine User"... comme au cg67) - $sWhereAllUserGroup=""; - if ($sldap_allUserGroup!=""){ - $aldap_allUserGroup=explode("|",$sldap_allUserGroup); - $j==0; - foreach ($aldap_allUserGroup as $sAllUserGroup) { - if ($j==0){ - $sWhereAllUserGroup="groupe.groupe=SimpleQuote".$sAllUserGroup."SimpleQuote"; - }else{ - $sWhereAllUserGroup.=" or groupe.groupe=SimpleQuote".$sAllUserGroup."SimpleQuote"; - } - $j++; - } - } - - //$ldap_attributUtilisateur est le nom de l'attribut LDAP portant le nom de l'utilisateur - $filter = "(".$ldap_attributUtilisateur."=".$ldap_user.")"; - //$ldap_attributGroupe est le nom de l'attribut LDAP portant le nom du groupe (il y en a plusieurs, un par groupe) - $attrs = array($ldap_attributGroupe); - $result = ldap_search($ldap, LDAP_DN, $filter, $attrs); - $entries = ldap_get_entries($ldap, $result); - - //Le nom de l'�l�ment du groupe est en minuscule dans le tableau "entries" g�n�r� - $ldap_attributGroupe=strtolower($ldap_attributGroupe); - $i=0; - $bEntreForeach=false; - $sWhereUserGroup=""; - foreach ($entries[0][$ldap_attributGroupe] as $sMemberOf) { - $asMemberOf=explode(",",$sMemberOf); - $asMemberOfGroupe=explode("=",$asMemberOf[0]); - $sGroupe=$asMemberOfGroupe[1]; - - //Quand il est �gal � 0 $asMemberOfGroupe[1] est vide car le 1er �l�ment du tableau "$entries[0]["memberof"]" correspond au norbre de r�sultat trouv�. - if ($i==1){ - if ($sWhereAllUserGroup!=""){ - $sWhereUserGroup="and (".$sWhereAllUserGroup." or groupe.groupe=SimpleQuote".$sGroupe."SimpleQuote"; - }else{ - $sWhereUserGroup="and (groupe.groupe=SimpleQuote".$sGroupe."SimpleQuote"; - } - - }else{ - $sWhereUserGroup.=" or groupe.groupe=SimpleQuote".$sGroupe."SimpleQuote"; - } - $bEntreForeach=true; - $i++; - } - if ($bEntreForeach==true){ - $sWhereUserGroup.=")"; - }else{ - if ($sWhereAllUserGroup!=""){ - $sWhereUserGroup="and (".$sWhereAllUserGroup.")"; - } - } - if ($sWhereUserGroup!=""){ - $sWhereUserGroup = str_replace("'", "''", $sWhereUserGroup); - $sWhereUserGroup = str_replace("SimpleQuote", "'", $sWhereUserGroup); - $sWhereUserGroup = $this->setEncodeLdapMessage($sWhereUserGroup); - $sWhereUserGroup = str_replace("<br>", "", $sWhereUserGroup); - } - } else { - writeToErrorLog(ERROR_LDAP_FAILED); - } - }else { - writeToErrorLog(ERROR_LDAP_FAILED); - } - return $sWhereUserGroup; - } - */ -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/PgsqlDataAccess.class.inc b/src/vitis/vas/rest/class/vmlib/PgsqlDataAccess.class.inc deleted file mode 100755 index c166072dca40d81023446f4b8ddffc1536bf3c36..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/PgsqlDataAccess.class.inc +++ /dev/null @@ -1,497 +0,0 @@ -<?php - -/** - * \file PgsqlDataAccess.class.inc - * \brief PgsqlDataAccess.class.inc \n \n Ce fichier contient la classe php PgsqlDataAccess - * - * Cette classe permet la gestion des utilisateurs PostgreSQL. - * - * Elle permet de créer un utilisateur un niveau du noyau PostgreSQL, mais aussi - * d'attribuer différents niveaux de droits à cet utilisateur sur une base de données distincte : - * - * \li Utilisateur simple (sélection). - * \li Administrateur (sélection, mise à jour, suppression) - * - * Avec cette classe, la gestion des utilisateurs se fait toujours au niveau du noyau PostgreSQL. - * - * \author Frédéric Mauro - * \author Fabien Marty <fabien.marty@veremes.com> - */ - -/** - * \class PgsqlDataAccess - * \brief PgsqlDataAccess Class \n \n PgsqlDataAccess est une classe PHP qui permet de récuperer des Meta données du noyau PostgreSQL. - * - * Cette classe permet la gestion des utilisateurs PostgreSQL. - * - * Elle permet de créer un utilisateur un niveau du noyau PostgreSQL, mais aussi - * d'attribuer différents niveaux de droits à cet utilisateur sur une base de données distincte : - * - * \li Utilisateur simple (sélection). - * \li Administrateur (sélection, mise à jour, suppression) - * - * Avec cette classe, la gestion des utilisateurs se fait toujours au niveau du noyau PostgreSQL. - * - * \author Frédéric Mauro - * \author Fabien Marty <fabien.marty@veremes.com> - */ -class PgsqlDataAccess { - - /** - * Objet connexion à la base de données PostgreSQL. - */ - var $oBd; - - /** - * Base de données métier. - */ - var $sDatabase; - - /** - * Serveur courant. - */ - var $sServer; - - /** - * Nom des groupes d'utilisateur - */ - var $sRoleUser; - var $sRoleAdmin; - - /** - * \param $oBd Base de données noyau PostgreSQL. - * \param $sDatabase Base de données métier. - * \param $sServer IP ou Nom du serveur PostgreSQL. - * \param $sRoleUser Nom du rôle pour les droits d'utilisateur. - * \param $sRoleAdmin Nom du rôle pour les droits d'administration. - * \param $sSchema Nom du schéma ou sont stockées les tables. - */ - function __construct($oBd, $sDatabase, $sServer, $sRoleUser = "veremap_pro_user", $sRoleAdmin = "veremap_pro_admin", $sSchema = "veremap_pro") { - $this->oBd = $oBd; - $this->sDatabase = $sDatabase; - $this->sServer = $sServer; - $this->sRoleUser = $sRoleUser; - $this->sRoleAdmin = $sRoleAdmin; - $this->sSchema = $sSchema; - } - - /** - * Cette méthode recherche quel est le statut PostgreSQL de l'utilisateur à gérer. - * \param $sLogin Identifiant de l'utilisateur à gérer. - * \return Le statut de l'utilisateur à gérer. - */ - function getStatus($sLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sSql = "SELECT * FROM pg_user s LEFT OUTER JOIN pg_group g on (s.usesysid = any(g.grolist) ) WHERE usename='" . $sLogin . "' and groname IN ('" . $this->sRoleUser . "', '" . $this->sRoleAdmin . "')"; - $iRecordset = $oBd->execute($sSql); - $aResultat = $iRecordset->fetchAll(PDO::FETCH_ASSOC); - if ($aResultat == array()) - return "unknown"; - $sStatut = ""; - foreach ($aResultat as $aLigne) { - if ($aLigne['usesuper'] == true || $aLigne['groname'] == $this->sRoleAdmin) - return "database_admin"; - else - if ($aLigne['groname'] == $this->sRoleUser) - $sStatut = "database_user"; - else - if ($sStatut == "") - $sStatut = "sgbd_only"; - } - return $sStatut; - } - - /** - * Cette méthode tente de créer un utilisateur PostgreSQL. - * \param $sLogin Identifiant de l'utilisateur à créer. - * \param $sPassword Mot de passe de l'utilisateur à créer. - * \return Un message d'erreur s'il y a lieu. - */ - function createSgbdUser($sLogin, $sPassword) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sServer = $this->sServer; - $sErrorMessage = ""; - $sSql = "select * from pg_user where usename = [LOGIN]"; - $aParams = array(); - $aParams['LOGIN'] = array('value' => utf8_encode($sLogin), 'type' => 'quoted_string'); - $resultat = $oBd->executeWithParams($sSql, $aParams); - if ($oBd->erreurRencontree) { - $sErrorMessage = $oBd->getBDMessage(); - } else { - if (!$aLigne = $oBd->ligneSuivante($resultat)) { - $sSql = "CREATE USER [LOGIN] PASSWORD [PASSWORD] IN ROLE " . $this->sRoleUser; - $aParams = array(); - if (mb_detect_encoding($sLogin) != 'UTF-8') - $sLogin = utf8_encode($sLogin); - $aParams['LOGIN'] = array('value' => $sLogin, 'type' => 'double_quote'); - $aParams['PASSWORD'] = array('value' => 'md5' . md5($sPassword . $sLogin), 'type' => 'quoted_string'); - $oBd->executeWithParams($sSql, $aParams); - if ($oBd->erreurRencontree) { - $sErrorMessage = $oBd->getBDMessage(); - } else { - $sSql = " GRANT vitis_user TO \"" . $sLogin . "\";"; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) - $sErrorMessage = $oBd->getBDMessage(); - } - } - } - return $sErrorMessage; - } - - /** - * Cette méthode tente de créer un utilisateur PostgreSQL. - * \param $sLogin Identifiant de l'utilisateur à créer. - * \param $sPassword Mot de passe de l'utilisateur à créer. - * \return Un message d'erreur s'il y a lieu. - */ - function createSgbdUserNoPassword($sLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sServer = $this->sServer; - $sErrorMessage = ""; - $sSql = "select * from pg_user where usename = '" . $sLogin . "'"; - $resultat = $oBd->execute($sSql); - if ($aLigne = $oBd->ligneSuivante($resultat)) { - $sErrorMessage = $this->createDatabaseUser($sLogin); - } else { - $sSql = "CREATE USER \"" . $sLogin . "\" PASSWORD NULL IN ROLE " . $this->sRoleUser; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) - $sErrorMessage = $oBd->getBDMessage(); - } - return $sErrorMessage; - } - - /** - /** - * Cette méthode tente de mettre à jour un utilisateur PostgreSQL comme utilisateur d'une nouvelle Db. - * \param $sLogin Identifiant de l'utilisateur à modifier. - * \return Un message d'erreur s'il y a lieu. - */ - function createDatabaseUser($sLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sServer = $this->sServer; - $sErrorMessage = ""; - $sSql = 'GRANT ' . $this->sRoleUser . ' TO "' . $sLogin . '"'; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) - $sErrorMessage = $oBd->getBDMessage(); - return $sErrorMessage; - } - - /** - * Cette méthode tente de mettre à jour le mot de passe d'un utilisateur PostgreSQL. - * \param $sLogin Identifiant de l'utilisateur à modifier. - * \param $sPasword Nouveau mot de passe de l'utilisateur. - * \return Un message d'erreur s'il y a lieu. - */ - function updateUserPassword($sLogin, $sPassword) { - $oBd = $this->oBd; - $sServer = $this->sServer; - $sErrorMessage = ""; - $sSql = "ALTER Role [LOGIN] PASSWORD [PASSWORD]"; - $aParams = array(); - if (mb_detect_encoding($sLogin) != 'UTF-8') - $sLogin = utf8_encode($sLogin); - $aParams['LOGIN'] = array('value' => $sLogin, 'type' => 'double_quote'); - $aParams['PASSWORD'] = array('value' => 'md5' . md5($sPassword . utf8_encode($sLogin)), 'type' => 'quoted_string'); - $oBd->executeWithParams($sSql, $aParams); - if ($oBd->erreurRencontree) - $sErrorMessage = $oBd->getBDMessage(); - return $sErrorMessage; - } - - /** - * Cette méthode tente de supprimer un utilisateur PostgreSQL comme utilisateur d'une Db en particulier. - * \param $sLogin Identifiant de l'utilisateur à supprimer. - * \return Un message d'erreur s'il y a lieu. - */ - function deleteDatabaseUser($sLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sServer = $this->sServer; - $sErrorMessage = ""; - $sSql = 'REVOKE ' . $this->sRoleUser . ' FROM "' . $sLogin . '"'; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) - $sErrorMessage = $oBd->getBDMessage(); - return $sErrorMessage; - } - - /** - * Cette méthode tente de mettre à jour un utilisateur PostgreSQL comme administrateur d'une nouvelle Db. - * \param $sLogin Identifiant de l'utilisateur à modifier. - * \return Un message d'erreur s'il y a lieu. - */ - function createDatabaseAdmin($sLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sServer = $this->sServer; - $siLoginOrUserId = intval($sLogin); - // Deprecated Juillet 2012 - // Si siLoginOrUserId renvoi 0 c'est que la valeur passée en entré est une chaine et non un entier (Compatibilité avec Veremap) - if (is_int($siLoginOrUserId) and $siLoginOrUserId <> 0) { - $sSql = 'SELECT "LOGIN" FROM ' . $this->sSchema . '."user" WHERE "USER_ID"=' . $sLogin . ''; - $resultat = $oBd->execute($sSql); - if ($oBd->erreurRencontree) { - $sErrorMessage = $oBd->getBDMessage(); - } else { - $oUser = $oBd->objetSuivant($resultat); - $sLogin = $oUser->LOGIN; - } - } - $sErrorMessage = ""; - $sSql = 'GRANT ' . $this->sRoleAdmin . ' TO "' . $sLogin . '"'; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) { - $sErrorMessage .= $oBd->getBDMessage(); - } else { - $sSql = 'ALTER ROLE "' . $sLogin . '" SUPERUSER CREATEROLE'; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) - $sErrorMessage .= $oBd->getBDMessage(); - } - return $sErrorMessage; - } - - /** - * Même fonction que la précédente mais pour gtf_v2 - */ - function createDatabaseAdminV2($sLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sServer = $this->sServer; - $siLoginOrUserId = intval($sLogin); - // Deprecated Juillet 2012 - // Si siLoginOrUserId renvoi 0 c'est que la valeur passée en entré est une chaine et non un entier (Compatibilité avec Veremap) - if (is_int($siLoginOrUserId) and $siLoginOrUserId <> 0) { - $sSql = 'SELECT "login" FROM ' . $this->sSchema . '."user" WHERE "user_id"=' . $sLogin . ''; - $resultat = $oBd->execute($sSql); - if ($oBd->erreurRencontree) { - $sErrorMessage = $oBd->getBDMessage(); - } else { - $oUser = $oBd->objetSuivant($resultat); - $sLogin = $oUser->login; - } - } - $sErrorMessage = ""; - $sSql = 'GRANT ' . $this->sRoleAdmin . ' TO "' . $sLogin . '"'; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) { - $sErrorMessage .= $oBd->getBDMessage(); - } else { - $sSql = 'ALTER ROLE "' . $sLogin . '" CREATEROLE'; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) - $sErrorMessage .= $oBd->getBDMessage(); - } - return $sErrorMessage; - } - - /** - * Cette méthode tente de supprimer un utilisateur PostgreSQL comme administrateur d'une Db en particulier, - * l'utilisateur redevient simple utilisateur de la base. - * \param $sLogin Identifiant de l'utilisateur à supprimer. - * \return Un message d'erreur s'il y a lieu. - */ - function deleteDatabaseAdmin($sLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sServer = $this->sServer; - $siLoginOrUserId = intval($sLogin); - // Deprecated Juillet 2012 - // Si siLoginOrUserId renvoi 0 c'est que la valeur passée en entré est une chaine et non un entier (Compatibilité avec Veremap) - if (is_int($siLoginOrUserId) and $siLoginOrUserId <> 0) { - $sSql = 'SELECT "LOGIN" FROM ' . $this->sSchema . '."user" WHERE "USER_ID"=' . $sLogin . ''; - $resultat = $oBd->execute($sSql); - if ($oBd->erreurRencontree) { - $sErrorMessage = $oBd->getBDMessage(); - } else { - $oUser = $oBd->objetSuivant($resultat); - $sLogin = $oUser->LOGIN; - } - } - $sErrorMessage = ""; - $sSql = 'REVOKE ' . $this->sRoleAdmin . ' FROM "' . $sLogin . '"'; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) { - $sErrorMessage .= "<br>" . $oBd->getBDMessage(); - } else { - $sSql = 'ALTER ROLE "' . $sLogin . '" NOSUPERUSER NOCREATEROLE'; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) - $sErrorMessage .= "<br>" . $oBd->getBDMessage(); - } - return $sErrorMessage; - } - - /** - * Même fonction que la précédente mais pour gtf_v2 - */ - function deleteDatabaseAdminV2($sLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sServer = $this->sServer; - $siLoginOrUserId = intval($sLogin); - // Deprecated Juillet 2012 - // Si siLoginOrUserId renvoi 0 c'est que la valeur passée en entré est une chaine et non un entier (Compatibilité avec Veremap) - if (is_int($siLoginOrUserId) and $siLoginOrUserId <> 0) { - $sSql = 'SELECT "login" FROM ' . $this->sSchema . '."user" WHERE "user_id"=' . $sLogin . ''; - $resultat = $oBd->execute($sSql); - if ($oBd->erreurRencontree) { - $sErrorMessage = $oBd->getBDMessage(); - } else { - $oUser = $oBd->objetSuivant($resultat); - $sLogin = $oUser->login; - } - } - $sErrorMessage = ""; - $sSql = 'REVOKE ' . $this->sRoleAdmin . ' FROM "' . $sLogin . '"'; - $oBd->execute($sSql); - if ($oBd->erreurRencontree) { - $sErrorMessage .= "<br>" . $oBd->getBDMessage(); - } - return $sErrorMessage; - } - - /** - * Cette méthode permet de déterminer si l'utilisateur se connectant à l'interface d'administration en à le droit. - * \param $sSessLogin Identifiant de l'utilisateur en cours de connexion. - * \return Vrai si l'utilisateur est administrateur. - */ - function isDatabaseAdmin($sSessLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sSql = "SELECT groname FROM pg_user RIGHT JOIN pg_group ON pg_user.usesysid = ANY(grolist) WHERE usename = '" . $sSessLogin . "'"; - $iRecordset = $oBd->execute($sSql); - $bAdmin = false; - while ($aLigne = $oBd->ligneSuivante($iRecordset)) - if ($aLigne["groname"] == $this->sRoleAdmin) - $bAdmin = true; - $iRecordset = $oBd->fermeResultat(); - if ($bAdmin) - return $bAdmin; - else { - $sSql = "SELECT * FROM pg_roles WHERE rolname='" . $sSessLogin . "' AND (rolsuper = true)"; - $iRecordset = $oBd->execute($sSql); - if ($aLigne = $oBd->ligneSuivante($iRecordset)) { - $iRecordset = $oBd->fermeResultat(); - return true; - } else { - $iRecordset = $oBd->fermeResultat(); - return false; - } - } - } - - /** - * Cette méthode permet de déterminer si l'utilisateur est un utilisateur de la base. - * \param $sSessLogin Identifiant de l'utilisateur en cours de connexion. - * \return Vrai si l'utilisateur est utilisateur. - */ - function isDatabaseUser($sSessLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sSql = "SELECT groname FROM pg_user RIGHT JOIN pg_group ON pg_user.usesysid = ANY(grolist) WHERE usename = '" . $sSessLogin . "'"; - $iRecordset = $oBd->execute($sSql); - $bUser = false; - while ($aLigne = $oBd->ligneSuivante($iRecordset)) - if ($aLigne["groname"] == $this->sRoleUser) - $bUser = true; - $iRecordset = $oBd->fermeResultat(); - return $bUser; - } - - function getUserModules($sSessLogin, $modules) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $modules = "'" . str_replace(',', "','", $modules) . "'"; - $sSql = "SELECT distinct module_id FROM pg_user RIGHT JOIN pg_group ON pg_user.usesysid = ANY(grolist) inner join " . $this->sSchema . ".vm_mode_rolname ON groname = vm_mode_rolname.rolname left join " . $this->sSchema . ".vm_mode ON vm_mode_rolname.mode_id = vm_mode.mode_id WHERE usename = '" . $sSessLogin . "' and module_id IN (" . $modules . ")"; - - $iRecordset = $oBd->execute($sSql); - while ($aLigne = $oBd->ligneSuivante($iRecordset)) { - - $aModules[] = $aLigne['module_id']; - } - $iRecordset = $oBd->fermeResultat(); - return $aModules; - } - - function getUserModes($sSessLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sSql = "SELECT distinct mode_id, \"index\" FROM pg_user RIGHT JOIN pg_group ON pg_user.usesysid = ANY(grolist) inner join " . $this->sSchema . ".vm_mode_rolname ON groname = vm_mode_rolname.rolname WHERE usename = '" . $sSessLogin . "' order by \"index\""; - - $iRecordset = $oBd->execute($sSql); - while ($aLigne = $oBd->ligneSuivante($iRecordset)) { - - $aMode[] = $aLigne["mode_id"]; - } - $iRecordset = $oBd->fermeResultat(); - return $aMode; - } - - function getUserModesFramework($sSessLogin, $modules) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $modules = "'" . str_replace(',', "','", $modules) . "'"; - $sSql = "SELECT distinct module_id, vm_mode.mode_id, \"index\" FROM pg_user RIGHT JOIN pg_group ON pg_user.usesysid = ANY(grolist) inner join " . $this->sSchema . ".vm_mode_rolname ON groname = vm_mode_rolname.rolname left join " . $this->sSchema . ".vm_mode ON vm_mode_rolname.mode_id = vm_mode.mode_id WHERE usename = '" . $sSessLogin . "' and module_id IN (" . $modules . ") order by \"index\""; - - $iRecordset = $oBd->execute($sSql); - while ($aLigne = $oBd->ligneSuivante($iRecordset)) { - - $aMode[] = $aLigne; - } - $iRecordset = $oBd->fermeResultat(); - return $aMode; - } - - function getModeTabsFramework($aMode, $lang = 'fr') { - $sModeId = $aMode['mode_id']; - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sSql = "SELECT vm_translation.translation as label, event FROM " . $this->sSchema . ".vm_tab LEFT JOIN " . $this->sSchema . ".vm_translation ON vm_tab.label_id = vm_translation.translation_id where mode_id='" . $sModeId . "' and vm_translation.lang='" . $lang . "' order by \"index\""; - $iRecordset = $oBd->execute($sSql); - while ($aLigne = $oBd->ligneSuivante($iRecordset)) { - $aTab['module_id'] = $aMode['module_id']; - $aTab['tab'][] = $aLigne; - } - $iRecordset = $oBd->fermeResultat(); - - return $aTab; - } - - function getModeTabs($sMode, $lang = 'fr') { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sSql = "SELECT vm_translation.translation as label, event FROM " . $this->sSchema . ".vm_tab LEFT JOIN " . $this->sSchema . ".vm_translation ON vm_tab.label_id = vm_translation.translation_id where mode_id='" . $sMode . "' and vm_translation.lang='" . $lang . "' order by \"index\""; - - $iRecordset = $oBd->execute($sSql); - while ($aLigne = $oBd->ligneSuivante($iRecordset)) { - $aTab[] = $aLigne; - } - $iRecordset = $oBd->fermeResultat(); - return $aTab; - } - - function DeleteDatabaseRole($sSessLogin) { - $oBd = $this->oBd; - $sDatabase = $this->sDatabase; - $sSql = "SELECT * FROM pg_user s LEFT OUTER JOIN pg_group g on (s.usesysid = any(g.grolist) ) WHERE usename='" . $sSessLogin . "'"; - $iRecordset = $oBd->execute($sSql); - $sMessage = ""; - if ($aLigne = $oBd->ligneSuivante($iRecordset)) { - $sSql = "DROP ROLE IF EXISTS \"" . $sSessLogin . "\""; - $oPDOresult = $oBd->execute($sSql); - $sMessage = $oBd->getBDMessage(); - } - return $sMessage; - } - -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/PostgisUtil.class.inc b/src/vitis/vas/rest/class/vmlib/PostgisUtil.class.inc deleted file mode 100755 index 0fe5122e7c6e45cc609cd7a889e33d20d1a6e445..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/PostgisUtil.class.inc +++ /dev/null @@ -1,61 +0,0 @@ -<?php - -require_once ("dbUtil.inc"); -require_once ("Vm.class.inc"); -require_once ("logUtil.inc"); - -class PostgisUtil { - /* - * Variable globale stockant le nom de dossier lib. - */ - - var $sFolderLib = "vmlib"; - var $oBd; - var $lang; - - function __construct($oConnection, $lang = "fr") { - $this->lang = $lang; - loadLang($this->sFolderLib, $this->lang); - $this->oBd = $oConnection; - } - - // construit un buffer de $sSize m de rayon - function getBuffer($sWkt, $sSize) { - $sSql = "SELECT st_astext(public.st_buffer(st_geomfromtext('sWkt'),sSize)) as geombuffer"; - $sSql = str_replace('sWkt', $sWkt, $sSql); - $sSql = str_replace('sSize', $sSize, $sSql); - - $oResultat = $this->oBd->execute($sSql); - if (!$this->oBd->erreurRencontree) { - $oGeomBuffer = $this->oBd->objetSuivant($oResultat); - $sGeomBuffer = $oGeomBuffer->geombuffer; - $oResultat = $this->oBd->fermeResultat(); - } else { - // traitement de l'erreur - writeToErrorLog(ERROR_REQUEST_IMPOSSIBLE . $sSql); - $oResultat = $this->oBd->fermeResultat(); - } - return $sGeomBuffer; - } - - // calcule la distance entre deux points. - function getDistance($sWkt, $sWkt2) { - $sSql = "SELECT st_distance('debut','fin') as distance"; - $sSql = str_replace('debut', $sWkt, $sSql); - $sSql = str_replace('fin', $sWkt2, $sSql); - $oResultat = $this->oBd->execute($sSql); - if (!$this->oBd->erreurRencontree) { - $oDistance = $this->oBd->objetSuivant($oResultat); - $sDistance = $oDistance->distance; - $oResultat = $this->oBd->fermeResultat(); - } else { - // traitement de l'erreur - writeToErrorLog(ERROR_REQUEST_IMPOSSIBLE . $sSql); - $oResultat = $this->oBd->fermeResultat(); - } - return $sDistance; - } - -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/Vm.class.inc b/src/vitis/vas/rest/class/vmlib/Vm.class.inc deleted file mode 100755 index 60d51d3ecc22146dc59691f5ac03574751124ed3..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/Vm.class.inc +++ /dev/null @@ -1,891 +0,0 @@ -<?php - -/** - * \file Vm.class.inc - * \brief Vm.class.inc \n \n Ce fichier contient la classe php Vm. - * - * - * \author Olivier Gayte <olivier.gayte@veremes.com>. - * \author Fabien Marty <fabien.marty@veremes.com>. - * \author Armand Bahi <armand.bahi@veremes.com>. - */ -/** - * \class Vm - * \brief Vm Class \n \n - */ -require_once (__DIR__ . "/BD.class.inc"); - -class Vm extends BD { - ## ============================================ ## - ## METHODES D'INTERROGATION DU CONTENU VM_TABLE ## - ## ============================================ ## - - /** - * M�thode qui renvoie un tableau associatif contenant des informations sur la table syst�me pass�e en param�tre. - * \param $sTable Nom de la table syst�me. - * \param $sSchema Nom du sch�ma � utiliser ('veremap_pro' par d�faut). - * \return Un tableau associatif. - */ - function getVM_TableInfo($sTable, $sSchema = "veremap_pro") { - include('vmlib/Vm.class.sql.inc'); - $sSql = $aSql[$this->sgbd]['getVM_TableInfo']; - $aTag = array("[sSchema]", "[sTable]"); - $aReplacer = array($sSchema, $sTable); - $sSql = str_replace($aTag, $aReplacer, $sSql); - $resultat = $this->execute($sSql); - if ($resultat !== false) { - if (!$aValues = $this->ligneSuivante($resultat)) - $aValues = array(); - $resultat = $this->fermeResultat(); - return $aValues; - } - } - - /** - * M�thode qui renvoie un tableau associatif contenant des informations sur la table syst�me pass�e en param�tre. - * \param $sTable Nom de la table syst�me. - * \param $sSchema Nom du sch�ma � utiliser ('veremap_pro' par d�faut). - * \param $lang langue de l'application ('fr' par d�faut). - * \return Un tableau associatif. - */ - function getVM_TableInfoTrad($sTable, $sSchema = "veremap_pro", $lang = "fr") { - include('vmlib/Vm.class.sql.inc'); - $sSql = $aSql[$this->sgbd]['getVM_TableInfoTrad']; - $aTag = array("[sSchema]", "[sTable]", "[sLang]"); - $aReplacer = array($sSchema, $sTable, $lang); - $sSql = str_replace($aTag, $aReplacer, $sSql); - $resultat = $this->execute($sSql); - if ($resultat !== false) { - if (!$aValues = $this->ligneSuivante($resultat)) - $aValues = array(); - $resultat = $this->fermeResultat(); - return $aValues; - } - } - - /** - * M�thode qui renvoie un tableau associatif contenant des informations sur la table syst�me pass�e en param�tre. - * \param $sTable Nom de la table syst�me. - * \param $sSchema Nom du sch�ma � utiliser ('veremap_pro' par d�faut). - * \param $lang langue de l'application ('fr' par d�faut). - * \return Un tableau associatif. - */ - function getVM_TableInfoTradFramework($sTable, $sSchema = "veremap_pro", $lang = "fr") { - include('vmlib/Vm.class.sql.inc'); - $sSql = $aSql[$this->sgbd]['getVM_TableInfoTradFramework']; - $aTag = array("[sSchema]", "[sTable]", "[sLang]"); - $aReplacer = array($sSchema, $sTable, $lang); - $sSql = str_replace($aTag, $aReplacer, $sSql); - $resultat = $this->execute($sSql); - if ($resultat !== false) { - if (!$aValues = $this->ligneSuivante($resultat)) - $aValues = array(); - $resultat = $this->fermeResultat(); - return $aValues; - } - } - - /** - * M�thode qui renvoie un tableau associatif contenant des informations sur la couche syst�me pass�e en param�tre. - * \param $sLayer Nom de la couche syst�me. - * \param $sSchema Nom du sch�ma � utiliser ('veremap_pro' par d�faut). - * \return Un tableau associatif. - */ - function getVM_LayerInfo($sLayer, $sSchema = "veremap_pro") { - include('vmlib/Vm.class.sql.inc'); - $sSql = $aSql[$this->sgbd]['getVM_LayerInfo']; - $aTag = array("[sSchema]", "[sLayer]"); - $aReplacer = array($sSchema, $sLayer); - $sSql = str_replace($aTag, $aReplacer, $sSql); - $resultat = $this->execute($sSql); - if ($resultat !== false) { - if (!$aValues = $this->ligneSuivante($resultat)) - $aValues = array(); - $resultat = $this->fermeResultat(); - return $aValues; - } - } - - ## ============================================================ ## - ## METHODES D'INTERROGATION DES DROITS SUR LES COUCHES ## - ## ============================================================ ## - - /** - * M�thode qui renvoie un tableau associatif contenant les droits sur la couche pour un groupe pass�e en param�tre. - * \param $sLayer Nom de la couche syst�me. - * \param $iGroupId Groupe de l'utilisateur. - * \return Un tableau associatif. - */ - function getVM_LayerRightInfo($sLayer, $iGroupId, $sSchema = 'veremap_pro') { - include('vmlib/Vm.class.sql.inc'); - $aValues = Array("UPDATE" => false, "DELETE" => false, "INSERT" => false, "EXTRACT" => false, "UPLOAD" => false); - $sSql = $aSql[$this->sgbd]['getVM_LayerRightInfo']; - $sSql = str_replace('[sSchema]', $sSchema, $sSql); - $sSql = str_replace(array("[sLayerName]", "[iGroupId]"), array($sLayer, $iGroupId), $sSql); - $oResultat = $this->execute($sSql); - // DEPRECATED 2011_01 - if ($this->erreurRencontree) { - $sSql = $aSql[$this->sgbd]['getVM_LayerRightInfo_0']; - $sSql = str_replace('[sSchema]', $sSchema, $sSql); - $sSql = str_replace(array("[sLayerName]", "[iGroupId]"), array($sLayer, $iGroupId), $sSql); - $oResultat = $this->execute($sSql); - } - // - if ($oResultat !== false) { - $aValues = $this->ligneSuivante($oResultat); - } - $resultat = $this->fermeResultat(); - return $aValues; - } - - ## ===================================================== ## - ## METHODES AUTOUR DE LA STRUCTURE DE LA BASE DE DONNEES ## - ## ===================================================== ## - - /** - * M�thode permettant de tester si une table est une vue. - * Si c'est le cas, cette m�thode permet de rapatrier le nom de la table contenant la colonne g�om�trique utilis�e dans la vue. - * \param $sTable Nom de la table � tester. - * \param $sSchema Nom du sch�ma contenant la table � tester (vide par d�faut). - * \return Le nom de la table d'origine de la g�om�trie. - */ - function ifTableIsAView($sTable, $sSchema = "") { - $bReturn = false; - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['ifTableIsAView']; - - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sSchema]", "[sTable]"); - $aReplacer = array($sSchema, $sTable); - $sSql = str_replace($aTag, $aReplacer, $sSql); - break; - } - $sOriginTable = $sTable; - $iResult = $this->execute($sSql); - - if ($aValues = $this->ligneSuivante($iResult)) { - $iPos = strpos($aValues["definition"], ".geom_cad"); - if ($iPos === false) { - $sGeometrieColumn = ".geom"; - $iPos = strpos($aValues["definition"], $sGeometrieColumn); - } else { - $sGeometrieColumn = ".geom_cad"; - } - $schaineAnalyse = substr($aValues["definition"], 0, $iPos + strlen($sGeometrieColumn)); - $iPosVirgule = strpos($schaineAnalyse, ","); - if ($iPosVirgule == "") { - $aTableauVirg = explode(" ", $schaineAnalyse); - $iNbrValTabVirg = count($aTableauVirg); - $sValeur2 = $aTableauVirg[$iNbrValTabVirg - 1]; - $iPosChaineAnalyse2 = strpos($sValeur2, $sGeometrieColumn); - $sOriginTable = trim(substr($sValeur2, 0, $iPosChaineAnalyse2)); - } else { - $sOriginTable = trim(substr(strrchr(substr($aValues["definition"], 0, $iPos), ","), 1)); - } - $iPosParenthese = strpos($sOriginTable, "("); - if ($iPosParenthese != "") { - $aTableauPar = explode("(", $sOriginTable); - $iNbrValTab = count($aTableauPar); - $sOriginTable = trim($aTableauPar[$iNbrValTab - 1]); - } - } - $iResult = $this->fermeResultat(); - return $sOriginTable; - } - - /** - * M�thode permettant de r�cup�rer le nom du sch�ma contenant la table pass�e en param�tre. - * \param $sTable Nom de la table � tester. - * \return Le nom du sch�ma. - */ - function getTableSchema($sTable) { - $bReturn = false; - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['getTableSchema']; - switch ($this->sgbd) { - case "pgsql" : - $sSql = str_replace("[sTable]", $sTable, $sSql); - break; - } - $sSchema = ""; - $iResult = $this->execute($sSql); - if ($aValues = $this->ligneSuivante($iResult)) { - $sSchema = $aValues["nspname"]; - } - $iResult = $this->fermeResultat(); - return $sSchema; - } - - /** - * M�thode permettant de cloner un enregistrement en tenant compte de la liste des cl�s uniques - * sp�cifi�es dans la vm_table et en leur associant la valeur 'null' lors de l'insertion. - * \param $sSchema Schema de la base de donn�es - * \param $sTable Table dans laquelle on ajoute. - * \param $aValues Valeurs � ajouter. - * \param $sSequence Nom de la s�quence � utiliser. - * \param $iIdField Nom de l'attribut identifiant. - * \param $sUkList Liste des cl�s uniques dans la table s�par�es par un '|'. - * \return L'id de la derni�re ligne ins�r�e. - */ - function cloneObj($sSchema, $sTable, $aValues, $sSequence, $iIdField, $sUkList) { - $aUk = explode("|", $sUkList); - foreach ($aUk as $sUk) - foreach ($aValues as $sKey => $sValue) - if ($sKey === $sUk) - $aValues[$sKey] = ""; - - return $this->insert($sSchema, $sTable, $aValues, $sSequence, $iIdField); - } - - ## ============================================ ## - ## METHODES DE MANIPULATION DES OBJETS SPATIAUX ## - ## ============================================ ## - - /** - * M�thode permettant de tester si une g�om�trie est au format EWKT - * \param $sGeom G�om�trie - * \return Bool�en. - */ - function isEWKTFormat($sGeom) { - if (strtoupper(substr($sGeom, 0, 5)) === 'SRID=') - return true; - else - return false; - } - - /** - * M�thode permettant de tester si une table contient une colonne supportant le stockage de donn�es spatiales. - * \param $sTable Nom de la table � tester. - * \param $sSchema Nom du sch�ma contenant la table � tester (vide par d�faut). - * \return Bool�en. - */ - function isTableSpatial($sTable, $sSchema = "") { - $bReturn = false; - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['isTableSpatial']; - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sSchema]", "[sTable]"); - $aReplacer = array($sSchema, $sTable); - $sSql = str_replace($aTag, $aReplacer, $sSql); - break; - } - - $iResult = $this->execute($sSql); - if ($this->nombreLigne($iResult) != 0) - $bReturn = true; - $iResult = $this->fermeResultat(); - return $bReturn; - } - - /** - * M�thode permettant de r�cup�rer le 'SRID' d'une table contenant des donn�es spatiales. - * \private - * \param $sTable Nom de la table. - * \param $sSchema Nom du sch�ma contenant la table (vide par d�faut). - * \return Code SRID (nombre entier, 4 ou 5 chiffres) retourne 0 si aucun SRID d�fini. - */ - function getTableSRID($sTable, $sSchema = "") { - $iSrid = 0; - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['getTableSrid']; - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sSchema]", "[sTable]"); - $aReplacer = array($sSchema, $sTable); - $sSql = str_replace($aTag, $aReplacer, $sSql); - break; - } - $iResult = $this->execute($sSql); - if ($aValue = $this->ligneSuivante($iResult)) - $iSrid = $aValue['srid']; - $iResult = $this->fermeResultat(); - return $iSrid; - } - - /** - * Get a column projection - * @param string $sSchema - * @param string $sTable - * @param string $sColumn - * @return string - */ - function getColumnSRID($sSchema, $sTable, $sColumn) { - $sColumnProj = null; - $sSchemaKey = 'schema_' . vitisUniqId(); - $sTableKey = 'table_' . vitisUniqId(); - $sColumnKey = 'column_' . vitisUniqId(); - - $aParams = array(); - $aParams[$sSchemaKey] = array('value' => $sSchema, 'type' => 'column_name'); - $aParams[$sTableKey] = array('value' => $sTable, 'type' => 'column_name'); - $aParams[$sColumnKey] = array('value' => $sColumn, 'type' => 'column_name'); - $sSQLSRID = 'SELECT st_srid("[' . $sColumnKey . ']") as column_srid FROM "[' . $sSchemaKey . ']"."[' . $sTableKey . ']" WHERE "[' . $sColumnKey . ']" is not null AND st_srid("[' . $sColumnKey . ']") != 0 LIMIT 1'; - - $oResult = $this->executeWithParams($sSQLSRID, $aParams); - if ($this->enErreur()) { - writeToErrorLog($this->getBDMessage()); - } else { - if (!isset($this->enErreur)) { - $this->enErreur = false; - } - if (!$this->enErreur && $this->nombreLigne($oResult) > 0) { - $aData = array(); - while ($aObject = $this->ligneSuivante($oResult)) { - foreach ($aObject as $sParamKey => $sParamValue) { - if ($sParamKey === 'column_srid') { - $sColumnProj = $sParamValue; - } - } - } - } - } - - // Nouvelle tentative avec une requête différente - if ($sColumnProj === null || $sColumnProj == "0") { - // ne fonctionne pas dans tous les cas pour les vues - $sSQLSRID = "SELECT Find_SRID('[" . $sSchemaKey . "]', '[" . $sTableKey . "]', '[" . $sColumnKey . "]') as column_srid"; - - $oResult = $this->executeWithParams($sSQLSRID, $aParams); - if ($this->enErreur()) { - writeToErrorLog($this->getBDMessage()); - } else { - if (!isset($this->enErreur)) { - $this->enErreur = false; - } - if (!$this->enErreur && $this->nombreLigne($oResult) > 0) { - $aData = array(); - while ($aObject = $this->ligneSuivante($oResult)) { - foreach ($aObject as $sParamKey => $sParamValue) { - if ($sParamKey === 'column_srid') { - $sColumnProj = $sParamValue; - } - } - } - } - } - } - - // Nouvelle tentative avec une requête différente - if ($sColumnProj === null || $sColumnProj == "0") { - $sColumnProj = $this->getTableSRID($sTable, $sSchema); - } - - return $sColumnProj; - } - - /** - * M�thode permettant de r�cup�rer le type de g�om�trie d'une table contenant des donn�es spatiales. - * \private - * \param $sTable Nom de la table. - * \param $sSchema Nom du sch�ma contenant la table (vide par d�faut). - * \return Type de g�om�trie support�e retourne GEOMETRY si aucun type de g�om�trie d�fini. - */ - function getTableGeometryType($sTable, $sSchema = "") { - $sGeometryType = "GEOMETRY"; - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['getTableGeometryType']; - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sSchema]", "[sTable]"); - $aReplacer = array($sSchema, $sTable); - $sSql = str_replace($aTag, $aReplacer, $sSql); - break; - } - $iResult = $this->execute($sSql); - if ($aValue = $this->ligneSuivante($iResult)) - $sGeometryType = $aValue['type']; - $iResult = $this->fermeResultat(); - return $sGeometryType; - } - - /** - * M�thode permettant de r�cup�rer la dimension d'une table contenant des donn�es spatiales (2 pour 2D, 3 pour 3D...). - * \private - * \param $sTable Nom de la table. - * \param $sSchema Nom du sch�ma contenant la table (vide par d�faut). - * \return Un entier correspondant au nombre de dimension d'une table. - */ - function getTableDimension($sTable, $sSchema = "") { - $iDims = "2"; - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['getTableDimension']; - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sSchema]", "[sTable]"); - $aReplacer = array($sSchema, $sTable); - $sSql = str_replace($aTag, $aReplacer, $sSql); - break; - } - $iResult = $this->execute($sSql); - if ($aValue = $this->ligneSuivante($iResult)) - $iDims = $aValue['coord_dimension']; - $iResult = $this->fermeResultat(); - return $iDims; - } - - /** - * M�thode permettant de r�cup�rer la dimension d'une colonne contenant des donn�es spatiales (2 pour 2D, 3 pour 3D...). - * \private - * \param $sSchema Nom du sch�ma contenant la table. - * \param $sTable Nom de la table. - * \param $sColumn Nom de la colonne. - * \return Un entier correspondant au nombre de dimension d'une table. - */ - function getColumnDimension($sSchema, $sTable, $sColumn) { - $iDims = "2"; - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['getColumnDimension']; - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sSchema]", "[sTable]", "[sColumn]"); - $aReplacer = array($sSchema, $sTable, $sColumn); - $sSql = str_replace($aTag, $aReplacer, $sSql); - break; - } - $iResult = $this->execute($sSql); - if ($aValue = $this->ligneSuivante($iResult)) - $iDims = $aValue['coord_dimension']; - $iResult = $this->fermeResultat(); - return $iDims; - } - - /** - * M�thode permettant de renvoyer la g�om�trie (sous la forme d'une cha�ne WKT) en cours d'�dtion - * apr�s ajout des d'un nouveau vertex dont les coordonn�es ont �t� interpol�es selon les coordonn�es - * du point saisie par l'utilisateur dans l'interface graphique. - * \param $sTable Nom de la table dans laquelle se trouve la g�om�trie en cours d'�dition. - * \param $sSchema Sch�ma contenant la 'vm_table' � exploiter. - * \param $sX Coordonn�es X du point cliqu�. - * \param $sY Coordonn�es Y du point cliqu�. - * \param $sWKT Cha�ne WKT constitutive de la g�om�trie en cours d'�dition. - * \param $dTolerance Tol�rance de distance entre le nouveau vertex et la g�om�trie en cours d'�dition. - * \return La cha�ne WKT mise � jour. - */ - function geomAddVertex($sTable, $sSchema = "", $sX, $sY, $sWKT, $dTolerance) { - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['geomAddVertex']; - - $aTableInfo = $this->getVM_TableInfo($sTable, $sSchema); - $sTable = $this->ifTableIsAView($sTable, $aTableInfo["SCHEMA_NAME"]); - if ($sTable != $aTableInfo["TABLE_NAME"]) { - $sSchema = $this->getTableSchema($sTable); - $iSRID = $this->getTableSRID($sTable, $sSchema); - } else { - $iSRID = $this->getTableSRID($sTable, $aTableInfo["SCHEMA_NAME"]); - } - $sVertexCoords = $sX . " " . $sY; - - // Cas des polygones - $bPolygon = false; - if (substr_count($sWKT, "POLYGON") === 1) - $bPolygon = true; - - if ($bPolygon) - $sWKT = str_replace(array("POLYGON((", "))"), array("LINESTRING(", ")"), $sWKT); - // ---- - - $dCurrentDistance = $this->getVertexDistance($sWKT, $iSRID, $sVertexCoords); - if ($dTolerance >= $dCurrentDistance) { - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sWKT]", "[sVertexCoords]", "[iSRID]"); - $aReplacer = array($sWKT, $sVertexCoords, $iSRID); - $sSql = str_replace($aTag, $aReplacer, $sSql); - break; - } - - $iResult = $this->execute($sSql); - if ($iResult !== false) { - $aValues = $this->ligneSuivante($iResult); - $sWKT = $aValues["wkt"]; - } - $iResult = $this->fermeResultat(); - } - - if ($bPolygon) - $sWKT = str_replace(array("LINESTRING(", ")"), array("POLYGON((", "))"), $sWKT); - - return $sWKT; - } - - /** - * M�thode permettant de renvoyer deux g�om�tries (sous la forme de deux cha�nes WKT) - * apr�s d�coupe de la g�om�trie d'origine (selon la localisation d'un vertex de d�coupe...). - * \param $sTable Nom de la table dans laquelle se trouve la g�om�trie en cours d'�dition. - * \param $sSchema Sch�ma contenant la 'vm_table' � exploiter. - * \param $sX Coordonn�es X du point cliqu�. - * \param $sY Coordonn�es Y du point cliqu�. - * \param $sWKT Cha�ne WKT constitutive de la g�om�trie en cours d'�dition. - * \param $dTolerance Tol�rance de distance entre le nouveau vertex et la g�om�trie en cours d'�dition. - * \return La cha�ne WKT mise � jour. - */ - function geomCutLine($sTable, $sSchema = "", $sX, $sY, $sWKT, $dTolerance) { - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['geomCutLine']; - - $aTableInfo = $this->getVM_TableInfo($sTable, $sSchema); - $sTable = $this->ifTableIsAView($sTable, $aTableInfo["SCHEMA_NAME"]); - if ($sTable != $aTableInfo["TABLE_NAME"]) { - $sSchema = $this->getTableSchema($sTable); - $iSRID = $this->getTableSRID($sTable, $sSchema); - } else { - $iSRID = $this->getTableSRID($sTable, $aTableInfo["SCHEMA_NAME"]); - } - - $sVertexCoords = $sX . " " . $sY; - - $dCurrentDistance = $this->getVertexDistance($sWKT, $iSRID, $sVertexCoords); - if ($dTolerance >= $dCurrentDistance) { - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sWKT]", "[sVertexCoords]", "[iSRID]"); - $aReplacer = array($sWKT, $sVertexCoords, $iSRID); - $sSql = str_replace($aTag, $aReplacer, $sSql); - break; - } - - $iResult = $this->execute($sSql); - ($iResult !== false) ? - $aValues = $this->ligneSuivante($iResult) : - $aValues = array(); - $iResult = $this->fermeResultat(); - } - - return $aValues; - } - - /** - * M�thode permettant d'assurer l'accrochage de la g�om�trie en cours d'�dition s'il y a lieu. - * \param $sIdValue Valeur de l'identifiant associ� � la g�om�trie (vide lors d'un ajout). - * \param $sWKT Cha�ne WKT constitutive de la g�om�trie en cours d'�dition. - * \param $aTableInfo Informations provenant de la vm_table pour la table en cours d'�dition. - * \param $sExtendLine Param�tre valoris� uniquement pour le prolongement des lignes (vaut "start" ou "end" dans ce cas, vide sinon). - * \return La cha�ne WKT mise � jour. - */ - function geomBinding($sIdValue, $sWKT, $aTableInfo, $sExtendLine = "") { - include("vmlib/Vm.class.sql.inc"); - $sWhereClause = ""; - if ($sIdValue != "") - $sWhereClause = $aTableInfo["ID_FIELD"] . " != " . $sIdValue . " AND"; - $sOriginTable = $this->ifTableIsAView($aTableInfo["TABLE_NAME"], $aTableInfo["SCHEMA_NAME"]); - if ($sOriginTable != $aTableInfo["TABLE_NAME"]) - $sSchema = $this->getTableSchema($sOriginTable); - else - $sSchema = $aTableInfo["SCHEMA_NAME"]; - $iSRID = $this->getTableSRID($sOriginTable, $sSchema); - $sGeomType = $this->getTableGeometryType($sOriginTable, $sSchema); - if ($sGeomType == "GEOMETRY" || $sGeomType == "ST_Geometry") - $sGeomType = substr($sWKT, 0, 10); - if ($sGeomType == "LINESTRING" || $sGeomType == "ST_LineString") { - $sSqlStart = $aSql[$this->sgbd]['geomBinding_1']; - $sSqlEnd = $aSql[$this->sgbd]['geomBinding_2']; - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sWKT]", "[iSRID]", "[sSchema]", "[sTable]", "[sWhereClause]", "[dTolerance]"); - $aReplacer = array($sWKT, $iSRID, $aTableInfo["SCHEMA_NAME"], $aTableInfo["TABLE_NAME"], $sWhereClause, round($aTableInfo["BIND_TOLERANCE"], 2)); - $sSqlStart = str_replace($aTag, $aReplacer, $sSqlStart); - $sSqlEnd = str_replace($aTag, $aReplacer, $sSqlEnd); - break; - } - $bStart = $bEnd = true; - switch ($sExtendLine) { - case "start" : - $bEnd = false; - break; - case "end" : - $bStart = false; - break; - } - - if ($bStart) { - $iResult = $this->execute($sSqlStart); - if ($iResult !== false) { - if ($aValues = $this->ligneSuivante($iResult)) { - if ($aValues["distance"] <= $aTableInfo["BIND_TOLERANCE"]) { - $iVertexIndex = 0; - $aValues = array($sWKT, $iSRID, $aValues["wkt"], $iVertexIndex); - $sWKT = $this->geomBinding_private($aSql[$this->sgbd]['geomBinding_3'], $aValues); - } - } - } - $iResult = $this->fermeResultat(); - } - - if ($bEnd) { - $iResult = $this->execute($sSqlEnd); - if ($iResult !== false) { - if ($aValues = $this->ligneSuivante($iResult)) { - if ($aValues["distance"] <= $aTableInfo["BIND_TOLERANCE"]) { - $iVertexIndex = ($aValues["nb_vertex"] - 1); - $aValues = array($sWKT, $iSRID, $aValues["wkt"], $iVertexIndex); - $sWKT = $this->geomBinding_private($aSql[$this->sgbd]['geomBinding_3'], $aValues); - } - } - } - $iResult = $this->fermeResultat(); - } - } - - return $sWKT; - } - - /** - * M�thode priv�e permettant de finaliser l'accorchage des g�om�tries. - * \param $sSqlTemplate Requ�te SQL mod�le. - * \param $aValues Tableau contenant les valeurs � associer � la requ�te mod�le. - * \private - * \return La g�om�trie accroch�e selon un num�ro d'index de vertex. - */ - function geomBinding_private($sSqlTemplate, $aValues) { - switch ($this->sgbd) { - case "pgsql" : - $sWKT = $aValues[0]; - $aTag = array("[sWKT]", "[iSRID]", "[sVertexWKT]", "[iVertexIndex]"); - $aReplacer = array($aValues[0], $aValues[1], $aValues[2], $aValues[3]); - $sSql = str_replace($aTag, $aReplacer, $sSqlTemplate); - break; - } - - $iResult = $this->execute($sSql); - if ($iResult !== false) { - $aValues = $this->ligneSuivante($iResult); - $sWKT = $aValues["wkt"]; - } - $iResult = $this->fermeResultat(); - - return $sWKT; - } - - /** - * Cette m�thode permet de r�cup�rer la distance (exprim�e en unit� terrain) entre un vertex (correspondant aux - * coordonn�es du point cliqu� sur la carte) 'utilisateur' et la g�om�trie en cours d'�dition. - * \private - * \param $sWKT Cha�ne WKT constitutive de la g�om�trie en cours d'�dition. - * \param $iSRID Code SRID du syst�me de projection de la g�om�trie en cours d'�dition. - * \param $sWKT Cha�ne WKT constitutive de la g�om�trie en cours d'�dition. - * \return La distance du nouveau vertex. - */ - function getVertexDistance($sWKT, $iSRID, $sVertexCoords) { - include("vmlib/Vm.class.sql.inc"); - $sSql = $aSql[$this->sgbd]['getVertexDistance']; - - switch ($this->sgbd) { - case "pgsql" : - $aTag = array("[sWKT]", "[iSRID]", "[sVertexCoords]"); - $aReplacer = array($sWKT, $iSRID, $sVertexCoords); - $sSql = str_replace($aTag, $aReplacer, $sSql); - break; - } - - $iResult = $this->execute($sSql); - - $dDistance = 0; - if ($iResult !== false) { - $aValues = $this->ligneSuivante($iResult); - $dDistance = $aValues["distance"]; - } - - $iResult = $this->fermeResultat(); - - return $dDistance; - } - - ## ===================================== ## - ## METHODES DE STRUCTURATION DE TABLEAUX ## - ## ===================================== ## - - /** - * M�thode qui renvoie une cha�ne de caract�re de type html pr�sentant sous forme de tableau le contenu du resultset. - * \param $resultset Le jeu d'enregistrement r�sultant de l'�x�cution d'une requ�te. - * \param $sMessageSiVide Message affich� dans le tableau si le resultset est vide - * \param $sCssLabel Style css � appliquer au noms d'attributs - 1�re ligne du tableau - * \param $sCssValue Style css � appliquer aux valeurs - lignes suivantes - * \return Une cha�ne de caract�res . - */ - function resultset2Table($resultset, $sMessageSiVide = "", $sCssLabel, $sCssValue = "") { - if ($sMessageSiVide == "") { - $sMessageSiVide = NOT_RECORD_FOUND_VM; - } - $sResult = "<center><table border='1'>"; - if ($aValues = $this->tableauSuivant($resultset)) { - // s'il y a un r�sultat on construit la premi�re ligne du tableau - $iFieldCount = $this->getFieldsNumber($resultset); - - $sLigne = "<tr CLASS='$sCssLabel'>"; - for ($i = 0; $i < $iFieldCount; $i++) - $sLigne .= "<td>" . $this->getFieldName($resultset, $i) . "</td>"; - $sLigne .= "</tr>"; - - // Deuxi�me ligne avec les valeurs - $sLigne .= "<tr CLASS='$sCssValue'>"; - for ($i = 0; $i < $iFieldCount; $i++) - $sLigne .= "<td>" . $aValues{$i} . "</td>"; - $sLigne .= "</tr>"; - $sResult .= $sLigne; - - // lignes suivantes - while ($aValues = $this->tableauSuivant($resultset)) { - $sLigne = "<tr CLASS='$sCssValue'>"; - for ($i = 0; $i < $iFieldCount; $i++) - $sLigne .= "<td>" . $aValues{$i} . "</td>"; - $sLigne .= "</tr>"; - $sResult .= $sLigne; - } - } else { - $sLigne = "<tr><td>$sMessageSiVide</td></tr>"; - $sResult .= $sLigne; - } - $sResult .= "</table></center>"; - return $sResult; - } - - /** - * Méthode qui renvoie une cha�ne de caract�re de type html pr�sentant sous forme de tableau editable. - * Ce tableau a les caract�ristiques suivantes : - * Nom de champ clickable (pour d�finir l'ordre de pr�sentation) - * La premi�re colonne permet de se mettre en mode �dition - * La seconde colonne permet de supprimer l'enregistrement - * La troisi�me colonne permet d'afficher l'enregistrement - * \param $resultset Le jeu d'enregistrement r�sultant de l'�x�cution d'une requ�te. - * \param $sMessageSiVide Message affich� dans le tableau si le resultset est vide - * \param $sCssLabel Style css � appliquer au noms d'attributs - 1�re ligne du tableau - * \param $sCssValue Style css � appliquer aux valeurs - lignes suivantes - * \param $sIdField : nom du champ identifiant de la table pr�sent�e - * \return Une cha�ne de caract�res . - */ - function resultset2EditTable($resultset, $sMessageSiVide = "", $sCssLabel, $sCssValue = "", $sCssValue2 = "", $sIdField, $aRights = array(), $aTableParams = array()) { - if ($sMessageSiVide == "") { - $sMessageSiVide = NOT_RECORD_FOUND_VM; - } - // Tableau de param�trage de la m�thode - if ($aTableParams != array()) { - extract($aTableParams); - } else { - $IMAGE = false; - $CENTER = true; - $SPACING = 1; - $PADDING = 5; - $EMPTY_HEAD_CELLS = true; - $IMAGE_PATH = "../images/"; - $GEOM = false; - } - - // Red�claration des variables (pour plus de lisibilit�) - $bImage = $IMAGE; - $sImagePath = $IMAGE_PATH; - if (isset($LAYER)) - $sLayerName = $LAYER; - $bGeom = $GEOM; - - if ($CENTER) - $aCenter = array("tag" => "<center>", "endtag" => "</center>"); - else - $aCenter = array("tag" => "", "endtag" => ""); - - if ($EMPTY_HEAD_CELLS) - $sEmptyCellCss = " class='emptyCell'"; - else - $sEmptyCellCss = ""; - - $sResult = ""; - $bDisplay = true; - $bGeom ? ($iColspan = 2) : ($iColspan = 1); - - if ($aRights == array()) { - $bEdit = true; - $bDelete = true; - $bCheckBox = true; - $iColspan = $iColspan + 3; - } else { - if ($aRights["UPDATE"] == true) { - $bEdit = true; - $iColspan++; - } else { - $bEdit = false; - } - if ($aRights["DELETE"] == true) { - $bDelete = true; - $bCheckBox = true; - $iColspan = $iColspan + 2; - } else { - $bDelete = false; - $bCheckBox = false; - } - } - - $iIdField = 4; - $bPremiereLigne = true; - $iJ = 0; - $iN = 0; - - //ligneSuivante � la place tableauSuivant - while ($aValues = $this->ligneSuivante($resultset)) { - $iJ++; - $iN++; - $sLigne = ""; - if ($bPremiereLigne) { - $sResult = $aCenter["tag"] . "<table border='0' cellpadding='" . $PADDING . "' cellspacing='" . $SPACING . "'><form name='listForm'>"; - $iFieldCount = $this->getFieldsNumber($resultset); - $iColspan = $iColspan + $iFieldCount; - $sLigne = "<tr class='$sCssLabel'>"; - if ($bEdit) - $sLigne .= "<td" . $sEmptyCellCss . "> </td>"; - if ($bDisplay) - $sLigne .= "<td" . $sEmptyCellCss . "> </td>"; - if ($bGeom) - $sLigne .= "<td" . $sEmptyCellCss . "> </td>"; - if ($bDelete) - $sLigne .= "<td" . $sEmptyCellCss . "> </td>"; - if ($bCheckBox) - $sLigne .= "<td" . $sEmptyCellCss . "> </td>"; - $i = 0; - foreach ($aValues as $valueName => $value) { - if ($valueName != 'LIMIT_NUM_ROW') { - $i++; - $sField = $valueName; - $sLigne .= '<td><a class="tabLink" href="javascript:parent.orderby(\'' . $sField . '\');">' . $sField . '</a></td>'; - } - } - $sLigne .= "</tr>"; - if ($bImage) - $sLigne .= "<tr><td colspan='" . $iColspan . "' width='100%' class='interligne'> </td></tr>"; - $bPremiereLigne = false; - } - if (($iN % 2) == 0) - $sLigne .= "<tr CLASS='$sCssValue2'>"; - else - $sLigne .= "<tr CLASS='$sCssValue'>"; - - $IdValue = $aValues{$sIdField}; - if ($bEdit) - $sLigne .= '<td><a href="javascript:parent.edit(\'' . $IdValue . '\');"><img src="' . $sImagePath . 'button_edit.png" alt="Modifier" title="Modifier" border="0" /></a></td>'; - if ($bDisplay) - $sLigne .= '<td><a href="javascript:parent.display(\'' . $IdValue . '\');"><img src="' . $sImagePath . 'button_display.png" alt="Voir" title="Voir" border="0" /></a></td>'; - if ($bGeom) - $sLigne .= '<td><a href="javascript:parent.zoom(\'' . $sLayerName . '\', \'' . $IdValue . '\');"><img src="' . $sImagePath . 'button_zoom.png" alt="Zoomer" title="Zoomer" border="0" /></a></td>'; - if ($bDelete) - $sLigne .= '<td><a href="javascript:parent.deleteRecord(\'' . $IdValue . '\');" onclick="return confirm(' . WARNING_DELETE_VM_01 . $IdValue . WARNING_DELETE_VM_02 . '\')"><img src="' . $sImagePath . 'button_delete.png" alt="Supprimer" title="Supprimer" border="0" /></a></td>'; - if ($bCheckBox) - $sLigne .= '<td><input type="checkbox" name="' . $IdValue . '" value="" id="checkbox_' . $iJ . '" /></td>'; - - foreach ($aValues as $valueName => $value) - if ($valueName != 'LIMIT_NUM_ROW') - $sLigne .= "<td>" . $value . "</td>"; - //for ($i=0;$i<$iFieldCount;$i++) $sLigne .= "<td>".$aValues{$i}."</td>"; - $sLigne .= "</tr>"; - if ($bImage) - $sLigne .= "<tr><td colspan='" . $iColspan . "' width='100%' class='interligne'> </td></tr>"; - $sResult .= $sLigne; - } - if ($sResult == "") - $sResult = $aCenter["tag"] . "<table border='1' cellpadding='" . $PADDING . "' cellspacing='" . $SPACING . "'><form name='listForm'><tr CLASS='$sCssValue'><td>$sMessageSiVide</td></tr>"; - $sResult .= "</form></table>" . $aCenter["endtag"]; - return $sResult; - } - -// Fin de la classe -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/Vm.class.sql.inc b/src/vitis/vas/rest/class/vmlib/Vm.class.sql.inc deleted file mode 100755 index 2154255e30febeb339f37f60622a6b4078730138..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/Vm.class.sql.inc +++ /dev/null @@ -1,30 +0,0 @@ -<?php - -//Requ�te de la classe Vm pour mysql -$aSql['mysql']['getVM_TableInfo'] = "SELECT * FROM vm_table WHERE name = '[sTable]'"; - -//Requ�te de la classe Vm pour pgsql -$aSql['pgsql']['getVM_TableInfo'] = "SELECT * FROM [sSchema].vm_table WHERE \"TABLE_NAME\" = '[sTable]'"; -$aSql['pgsql']['getVM_TableInfoTradFramework'] = "SELECT \"name\", \"id_field\", \"id_field_type\", \"id_field_label\", \"sql_list\", \"form_class\", \"sql_form\", translation_title.\"translation\" as \"TITRE_LISTE\", translation_form.\"translation\" as \"form_title\", \"id_field_sequence\", \"schema_name\", \"sorted_by\", \"sorted_dir\", \"edit_column\" , \"show_column\", \"module\", \"work_class\", \"business_id\" FROM [sSchema].vm_table INNER JOIN [sSchema].vm_translation as translation_title ON translation_title.translation_id = vm_table.\"title_list_label_id\" INNER JOIN [sSchema].vm_translation as translation_form ON translation_form.translation_id = vm_table.\"title_form_label_id\" and translation_form.lang=translation_title.lang WHERE \"name\" = '[sTable]' AND translation_title.lang = '[sLang]'"; -$aSql['pgsql']['getVM_TableInfoTrad'] = "SELECT \"name\", \"id_field\", \"id_field_type\", \"id_field_label\", \"sql_list\", \"form_class\", \"sql_form\", translation_title.\"translation\" as \"TITRE_LISTE\", translation_form.\"translation\" as \"form_title\", \"id_field_sequence\", \"schema_name\", \"sorted_by\", \"sorted_dir\", \"edit_column\" , \"show_column\", \"business_id\" FROM [sSchema].vm_table INNER JOIN [sSchema].vm_translation as translation_title ON translation_title.translation_id = vm_table.\"title_list_label_id\" INNER JOIN [sSchema].vm_translation as translation_form ON translation_form.translation_id = vm_table.\"title_form_label_id\" and translation_form.lang=translation_title.lang WHERE \"name\" = '[sTable]' AND translation_title.lang = '[sLang]'"; -$aSql['pgsql']['getVM_LayerInfo'] = "SELECT * FROM [sSchema].vm_table WHERE \"LAYER_NAME\" = '[sLayer]'"; -$aSql['pgsql']['getVM_LayerRightInfo'] = "SELECT \"UPDATE\", \"DELETE\", \"INSERT\", \"UPLOAD\", \"EXTRACT\" FROM [sSchema].group_rights LEFT JOIN [sSchema].layer ON group_rights.\"LAYER_ID\" = layer.\"LAYER_ID\" WHERE \"LAYER_NAME\" ='[sLayerName]' AND \"GROUP_ID\" IN ([iGroupId])"; -// getVM_LayerRightInfo_0 DEPRECATED 2011_01 -$aSql['pgsql']['getVM_LayerRightInfo_0'] = "SELECT \"UPDATE\", \"UPDATE\" AS \"INSERT\", \"UPDATE\" AS \"DELETE\", \"UPLOAD\", \"EXTRACT\" FROM [sSchema].group_rights LEFT JOIN [sSchema].layer ON group_rights.\"LAYER_ID\" = layer.\"LAYER_ID\" WHERE \"LAYER_NAME\" ='[sLayerName]' AND \"GROUP_ID\" IN ([iGroupId])"; -$aSql['pgsql']['isTableSpatial'] = "SELECT attname, relname, typname, nspname FROM pg_attribute, pg_class, pg_type, pg_namespace WHERE pg_attribute.attrelid = pg_class.oid AND pg_class.relnamespace = pg_namespace.oid AND pg_attribute.atttypid = pg_type.oid AND nspname = '[sSchema]' AND relname = '[sTable]' AND typname = 'geometry' ORDER BY attname ASC"; -$aSql['pgsql']['ifTableIsAView'] = "SELECT definition FROM pg_views WHERE schemaname = '[sSchema]' AND viewname = '[sTable]'"; -$aSql['pgsql']['getTableSchema'] = "SELECT nspname FROM pg_class, pg_namespace WHERE pg_class.relnamespace = pg_namespace.oid AND relname = '[sTable]'"; -$aSql['pgsql']['getTableSrid'] = "SELECT COALESCE(NULLIF(postgis_typmod_srid(pg_attribute.atttypmod), 0), postgis_constraint_srid(pg_namespace.nspname::text, pg_class.relname::text, pg_attribute.attname::text), 0) AS srid FROM pg_class, pg_attribute, pg_type, pg_namespace WHERE pg_type.typname = 'geometry'::name AND pg_attribute.attisdropped = false AND pg_attribute.atttypid = pg_type.oid AND pg_attribute.attrelid = pg_class.oid AND pg_class.relnamespace = pg_namespace.oid AND (pg_class.relkind = 'r'::\"char\" OR pg_class.relkind = 'v'::\"char\") AND NOT pg_is_other_temp_schema(pg_class.relnamespace) AND pg_namespace.nspname = '[sSchema]'::name AND pg_class.relname = '[sTable]'::name;"; -$aSql['pgsql']['getTableGeometryType'] = "SELECT replace(replace(COALESCE(NULLIF(upper(postgis_typmod_type(pg_attribute.atttypmod)), 'GEOMETRY'::text), postgis_constraint_type(pg_namespace.nspname::text, pg_class.relname::text, pg_attribute.attname::text)::text, 'GEOMETRY'::text), 'ZM'::text, ''::text), 'Z'::text, ''::text)::character varying(30) AS type FROM pg_class, pg_attribute, pg_type, pg_namespace WHERE pg_type.typname = 'geometry'::name AND pg_attribute.attisdropped = false AND pg_attribute.atttypid = pg_type.oid AND pg_attribute.attrelid = pg_class.oid AND pg_class.relnamespace = pg_namespace.oid AND (pg_class.relkind = 'r'::\"char\" OR pg_class.relkind = 'v'::\"char\") AND NOT pg_is_other_temp_schema(pg_class.relnamespace) AND pg_namespace.nspname = '[sSchema]'::name AND pg_class.relname = '[sTable]'::name;"; -$aSql['pgsql']['getTableDimension'] = "SELECT COALESCE(NULLIF(postgis_typmod_dims(pg_attribute.atttypmod), 2), postgis_constraint_dims(pg_namespace.nspname::text, pg_class.relname::text, pg_attribute.attname::text), 2) AS coord_dimension FROM pg_class, pg_attribute, pg_type, pg_namespace WHERE pg_type.typname = 'geometry'::name AND pg_attribute.attisdropped = false AND pg_attribute.atttypid = pg_type.oid AND pg_attribute.attrelid = pg_class.oid AND pg_class.relnamespace = pg_namespace.oid AND (pg_class.relkind = 'r'::\"char\" OR pg_class.relkind = 'v'::\"char\") AND NOT pg_is_other_temp_schema(pg_class.relnamespace) AND pg_namespace.nspname = '[sSchema]'::name AND pg_class.relname = '[sTable]'::name;"; -$aSql['pgsql']['getColumnDimension'] = "SELECT COALESCE(NULLIF(postgis_typmod_dims(pg_attribute.atttypmod), 2), postgis_constraint_dims(pg_namespace.nspname::text, pg_class.relname::text, pg_attribute.attname::text), 2) AS coord_dimension FROM pg_class, pg_attribute, pg_type, pg_namespace WHERE pg_type.typname = 'geometry'::name AND pg_attribute.attisdropped = false AND pg_attribute.atttypid = pg_type.oid AND pg_attribute.attrelid = pg_class.oid AND pg_class.relnamespace = pg_namespace.oid AND (pg_class.relkind = 'r'::\"char\" OR pg_class.relkind = 'v'::\"char\") AND NOT pg_is_other_temp_schema(pg_class.relnamespace) AND pg_namespace.nspname = '[sSchema]'::name AND pg_class.relname = '[sTable]'::name AND pg_attribute.attname = '[sColumn]'::name;"; -$aSql['pgsql']['getVertexDistance'] = "SELECT st_distance(st_geometryFromText('[sWKT]', [iSRID]), st_geometryFromText('POINT([sVertexCoords])', [iSRID])) as distance"; -$aSql['pgsql']['geomAddVertex'] = "SELECT st_asText(st_addPoint(st_geometryFromText('[sWKT]', [iSRID]), st_line_interpolate_point(st_geometryFromText('[sWKT]', [iSRID]), st_line_locate_point(st_geometryFromText('[sWKT]', [iSRID]), st_geometryFromText('POINT([sVertexCoords])', [iSRID]))), vm_get_new_vertex_position(st_geometryFromText('[sWKT]', [iSRID]) ,st_line_interpolate_point(st_geometryFromText('[sWKT]', [iSRID]), st_line_locate_point(st_geometryFromText('[sWKT]', [iSRID]), st_geometryFromText('POINT([sVertexCoords])', [iSRID])))))) as wkt"; -$aSql['pgsql']['geomBinding_1'] = "SELECT st_asText(vm_get_nearest_vertex(geom, st_startPoint(st_geometryFromText('[sWKT]', [iSRID])))) as wkt, st_distance(vm_get_nearest_vertex(geom, st_startPoint(st_geometryFromText('[sWKT]', [iSRID]))), st_startPoint(st_geometryFromText('[sWKT]', [iSRID]))) as distance FROM [sSchema].[sTable] WHERE [sWhereClause] st_intersects(geom, st_buffer(st_geometryFromText('[sWKT]', [iSRID]), [dTolerance])) = true ORDER BY distance ASC"; -$aSql['pgsql']['geomBinding_2'] = "SELECT st_asText(vm_get_nearest_vertex(geom, st_endPoint(st_geometryFromText('[sWKT]', [iSRID])))) as wkt, st_distance(vm_get_nearest_vertex(geom, st_endPoint(st_geometryFromText('[sWKT]', [iSRID]))), st_endPoint(st_geometryFromText('[sWKT]', [iSRID]))) as distance, st_npoints(st_geometryFromText('[sWKT]', [iSRID])) as nb_vertex FROM [sSchema].[sTable] WHERE [sWhereClause] st_intersects(geom, st_buffer(st_geometryFromText('[sWKT]', [iSRID]), [dTolerance])) = true ORDER BY distance ASC"; -$aSql['pgsql']['geomBinding_3'] = "SELECT st_asText(vm_move_vertex_from_geom(st_geometryFromText('[sWKT]', [iSRID]), st_geometryFromText('[sVertexWKT]', [iSRID]), [iVertexIndex])) as wkt"; -$aSql['pgsql']['geomCutLine'] = "SELECT st_asText(st_line_substring(st_geometryFromText('[sWKT]', [iSRID]), 0, st_line_locate_point(st_geometryFromText('[sWKT]', [iSRID]), st_geometryFromText('POINT([sVertexCoords])', [iSRID])))) as wkt_start, st_asText(st_line_substring(st_geometryFromText('[sWKT]', [iSRID]), st_line_locate_point(st_geometryFromText('[sWKT]', [iSRID]), st_geometryFromText('POINT([sVertexCoords])', [iSRID])), 1)) as wkt_end"; - -//Requ�te de la classe Vm pour oci -$aSql['oci']['getVM_TableInfo'] = "SELECT * FROM vm_table WHERE name = '[sTable]'"; -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/class.websocket_client.php b/src/vitis/vas/rest/class/vmlib/class.websocket_client.php deleted file mode 100755 index ad5acc665f34cf551a1cff3ec651466bec1beb70..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/class.websocket_client.php +++ /dev/null @@ -1,296 +0,0 @@ -<?php - -//ini_set('display_errors', 1); -//error_reporting(E_ALL); - -/** - * Very basic websocket client. - * Supporting draft hybi-10. - * - * @author Simon Samtleben <web@lemmingzshadow.net> - * @author Armand Bahi <armand.bahi@veremes.com> - * @version 2011-10-18 - */ -class WebsocketClient { - - private $_host; - private $_port; - private $_path; - private $_origin; - private $_Socket = null; - private $_connected = false; - - public function __construct() { - - } - - public function __destruct() { - $this->disconnect(); - } - - public function isConnected() { - return $this->_connected; - } - - public function sendData($data, $type = 'text', $masked = true) { - if ($this->_connected === false) { - trigger_error("Not connected", E_USER_WARNING); - return false; - } - if (!is_string($data)) { - trigger_error("Not a string data was given.", E_USER_WARNING); - return false; - } - if (strlen($data) == 0) { - return false; - } - $res = @fwrite($this->_Socket, $this->_hybi10Encode($data, $type, $masked)); - if ($res === 0 || $res === false) { - return false; - } - $buffer = ' '; - while ($buffer !== '') { - $buffer = fread($this->_Socket, 512); // drop? - } - - return true; - } - - public function connect($host, $port, $path, $origin = 'foo.lh') { - $this->_host = $host; - $this->_port = $port; - $this->_path = $path; - $this->_origin = $origin; - - $key = base64_encode($this->_generateRandomString(16, false, true)); - $header = "GET " . $path . " HTTP/1.1\r\n"; - $header .= "Host: " . $host . ":" . $port . "\r\n"; - $header .= "Upgrade: websocket\r\n"; - $header .= "Connection: Upgrade\r\n"; - $header .= "Sec-WebSocket-Key: " . $key . "\r\n"; - if ($origin !== false) { - $header .= "Sec-WebSocket-Origin: " . $origin . "\r\n"; - } - $header .= "Sec-WebSocket-Version: 13\r\n"; - - $this->_Socket = fsockopen($host, $port, $errno, $errstr, 2); - socket_set_timeout($this->_Socket, 0, 10000); - $response = @fread($this->_Socket, 1500); - - @fwrite($this->_Socket, $header); - $response = @fread($this->_Socket, 1500); - preg_match('#Sec-WebSocket-Accept:\s(.*)$#mU', $response, $matches); - - if ($matches) { - $keyAccept = trim($matches[1]); - $expectedResonse = base64_encode(pack('H*', sha1($key . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'))); - $this->_connected = ($keyAccept === $expectedResonse) ? true : false; - } - - return $this->_connected; - } - - public function checkConnection() { - $this->_connected = false; - - // send ping: - $data = 'ping?'; - @fwrite($this->_Socket, $this->_hybi10Encode($data, 'ping', true)); - $response = @fread($this->_Socket, 300); - if (empty($response)) { - return false; - } - $response = $this->_hybi10Decode($response); - if (!is_array($response)) { - return false; - } - if (!isset($response['type']) || $response['type'] !== 'pong') { - return false; - } - $this->_connected = true; - return true; - } - - public function disconnect() { - $this->_connected = false; - is_resource($this->_Socket) and fclose($this->_Socket); - } - - public function reconnect() { - sleep(10); - $this->_connected = false; - fclose($this->_Socket); - $this->connect($this->_host, $this->_port, $this->_path, $this->_origin); - } - - private function _generateRandomString($length = 10, $addSpaces = true, $addNumbers = true) { - $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"§$%&/()=[]{}'; - $useChars = array(); - // select some random chars: - for ($i = 0; $i < $length; $i++) { - $useChars[] = $characters[mt_rand(0, strlen($characters) - 1)]; - } - // add spaces and numbers: - if ($addSpaces === true) { - array_push($useChars, ' ', ' ', ' ', ' ', ' ', ' '); - } - if ($addNumbers === true) { - array_push($useChars, rand(0, 9), rand(0, 9), rand(0, 9)); - } - shuffle($useChars); - $randomString = trim(implode('', $useChars)); - $randomString = substr($randomString, 0, $length); - return $randomString; - } - - private function _hybi10Encode($payload, $type = 'text', $masked = true) { - $frameHead = array(); - $frame = ''; - $payloadLength = strlen($payload); - - switch ($type) { - case 'text': - // first byte indicates FIN, Text-Frame (10000001): - $frameHead[0] = 129; - break; - - case 'close': - // first byte indicates FIN, Close Frame(10001000): - $frameHead[0] = 136; - break; - - case 'ping': - // first byte indicates FIN, Ping frame (10001001): - $frameHead[0] = 137; - break; - - case 'pong': - // first byte indicates FIN, Pong frame (10001010): - $frameHead[0] = 138; - break; - } - - // set mask and payload length (using 1, 3 or 9 bytes) - if ($payloadLength > 65535) { - $payloadLengthBin = str_split(sprintf('%064b', $payloadLength), 8); - $frameHead[1] = ($masked === true) ? 255 : 127; - for ($i = 0; $i < 8; $i++) { - $frameHead[$i + 2] = bindec($payloadLengthBin[$i]); - } - // most significant bit MUST be 0 (close connection if frame too big) - if ($frameHead[2] > 127) { - $this->close(1004); - return false; - } - } elseif ($payloadLength > 125) { - $payloadLengthBin = str_split(sprintf('%016b', $payloadLength), 8); - $frameHead[1] = ($masked === true) ? 254 : 126; - $frameHead[2] = bindec($payloadLengthBin[0]); - $frameHead[3] = bindec($payloadLengthBin[1]); - } else { - $frameHead[1] = ($masked === true) ? $payloadLength + 128 : $payloadLength; - } - - // convert frame-head to string: - foreach (array_keys($frameHead) as $i) { - $frameHead[$i] = chr($frameHead[$i]); - } - if ($masked === true) { - // generate a random mask: - $mask = array(); - for ($i = 0; $i < 4; $i++) { - $mask[$i] = chr(rand(0, 255)); - } - - $frameHead = array_merge($frameHead, $mask); - } - $frame = implode('', $frameHead); - - // append payload to frame: - $framePayload = array(); - for ($i = 0; $i < $payloadLength; $i++) { - $frame .= ($masked === true) ? $payload[$i] ^ $mask[$i % 4] : $payload[$i]; - } - - return $frame; - } - - private function _hybi10Decode($data) { - $payloadLength = ''; - $mask = ''; - $unmaskedPayload = ''; - $decodedData = array(); - - // estimate frame type: - $firstByteBinary = sprintf('%08b', ord($data[0])); - $secondByteBinary = sprintf('%08b', ord($data[1])); - $opcode = bindec(substr($firstByteBinary, 4, 4)); - $isMasked = ($secondByteBinary[0] == '1') ? true : false; - $payloadLength = ord($data[1]) & 127; - - switch ($opcode) { - // text frame: - case 1: - $decodedData['type'] = 'text'; - break; - - case 2: - $decodedData['type'] = 'binary'; - break; - - // connection close frame: - case 8: - $decodedData['type'] = 'close'; - break; - - // ping frame: - case 9: - $decodedData['type'] = 'ping'; - break; - - // pong frame: - case 10: - $decodedData['type'] = 'pong'; - break; - - default: - return false; - break; - } - - if ($payloadLength === 126) { - $mask = substr($data, 4, 4); - $payloadOffset = 8; - $dataLength = bindec(sprintf('%08b', ord($data[2])) . sprintf('%08b', ord($data[3]))) + $payloadOffset; - } elseif ($payloadLength === 127) { - $mask = substr($data, 10, 4); - $payloadOffset = 14; - $tmp = ''; - for ($i = 0; $i < 8; $i++) { - $tmp .= sprintf('%08b', ord($data[$i + 2])); - } - $dataLength = bindec($tmp) + $payloadOffset; - unset($tmp); - } else { - $mask = substr($data, 2, 4); - $payloadOffset = 6; - $dataLength = $payloadLength + $payloadOffset; - } - - if ($isMasked === true) { - for ($i = $payloadOffset; $i < $dataLength; $i++) { - $j = $i - $payloadOffset; - if (isset($data[$i])) { - $unmaskedPayload .= $data[$i] ^ $mask[$j % 4]; - } - } - $decodedData['payload'] = $unmaskedPayload; - } else { - $payloadOffset = $payloadOffset - 4; - $decodedData['payload'] = substr($data, $payloadOffset); - } - - return $decodedData; - } - -} diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/class.jstocoffee.php b/src/vitis/vas/rest/class/vmlib/coffeescript/class.jstocoffee.php deleted file mode 100755 index f1341a0d995d4bf5962d985b71291188bdcdfe3c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/class.jstocoffee.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php -/** - * Dynamically convert coffeescript to javascript. - * - * @author Simon Samtleben <web@lemmingzshadow.net> - */ -include_once 'coffeescript.php'; - -class JsToCoffee -{ - const CACHING = true; - const CACHING_TYPE = 'file'; // @todo support for memcache - - private $_cacheDir = ''; - private $_coffeeDir = array(); - - public function makeJavascript($coffeeFile) - { - if(false === ($coffeeFile = $this->_getCoffeefilePath($coffeeFile))) - { - return false; - } - - return $this->_getJs($coffeeFile); - } - - private function _getJs($coffeeFile) - { - // get file from cache if possible: - if(self::CACHING === true) - { - $coffeeHash = sha1_file($coffeeFile); - if(file_exists($this->_cacheDir . $coffeeHash)) - { - return file_get_contents($this->_cacheDir . $coffeeHash); - } - } - - // file not cached or cache disabled -> covert, cache, return: - $coffee = file_get_contents($coffeeFile); - try - { - $js = CoffeeScript\compile($coffee); - if(self::CACHING === true) - { - $this->_cacheJs($js, $coffeeFile, $coffeeHash); - } - return $js; - } - catch (Exception $e) - { - var_dump($e); - } - - return false; - } - - private function _cacheJs($js, $coffeeFile, $coffeeHash) - { - // save to cache: - file_put_contents($this->_cacheDir . $coffeeHash, $js); - - // register in cache-content and delete possible old version: - if(!file_exists($this->_cacheDir . 'cache_content')) - { - $cacheConent = array(); - file_put_contents($this->_cacheDir . 'cache_content', serialize($cacheConent)); - } - $temp = file_get_contents($this->_cacheDir . 'cache_content'); - $cacheConent = unserialize($temp); - unset($temp); - - if(isset($cacheConent[$coffeeFile])) - { - unlink($this->_cacheDir . $cacheConent[$coffeeFile]); - unset($cacheConent[$coffeeFile]); - } - $cacheConent[$coffeeFile] = $coffeeHash; - file_put_contents($this->_cacheDir . 'cache_content', serialize($cacheConent)); - unset($cacheConent); - } - - private function _getCoffeefilePath($coffeeFile) - { - $coffeeFile = preg_replace('#[^a-z0-9\.]#', '', $coffeeFile); - foreach($this->_coffeeDir as $coffeeDir) - { - if(file_exists($coffeeDir . $coffeeFile)) - { - return $coffeeDir . $coffeeFile; - } - } - return false; - } - - - /** - * Sets cache folder. - * - * @param string $path Path to cache folder. - * @return bool True if cache path could be set. - */ - public function setCacheDir($path) - { - if(file_exists($path) && is_dir($path)) - { - if(substr($path, 0, -1) !== '/') - { - $path = $path . '/'; - } - $this->_cacheDir = $path; - return true; - } - return false; - } - - /** - * Adds a path with is searched for coffeescripts. - * - * @param string $path Path containing coffeescript. - * @return bool True if path was added. - */ - public function setAllowedCoffeeDir($path) - { - if(file_exists($path) && is_dir($path)) - { - if(substr($path, 0, -1) !== '/') - { - $path = $path . '/'; - } - $this->_coffeeDir[] = $path; - return true; - } - return false; - } -} \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/errors.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/errors.php deleted file mode 100755 index 437657b472104542981ba9d72f2a205354a074ee..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/errors.php +++ /dev/null @@ -1,15 +0,0 @@ -<?php - -namespace CoffeeScript; - -class Error extends \Exception -{ - function __construct($message) - { - $this->message = $message; - } -} - -class SyntaxError extends Error {} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/helpers.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/helpers.php deleted file mode 100755 index eb6f95740ed6fdc96b0714b947995041f2382921..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/helpers.php +++ /dev/null @@ -1,236 +0,0 @@ -<?php - -namespace CoffeeScript; - -function compact(array $array) -{ - $compacted = array(); - - foreach ($array as $k => $v) - { - if ($v) - { - $compacted[] = $v; - } - } - - return $compacted; -} - -function del( & $obj, $key) -{ - $val = NULL; - - if (isset($obj[$key])) - { - $val = $obj[$key]; - unset($obj[$key]); - } - - return $val; -} - -function extend($obj, $properties) -{ - foreach ($properties as $k => $v) - { - $obj->{$k} = $v; - } - - return $obj; -} - -function flatten(array $array) -{ - $flattened = array(); - - foreach ($array as $k => $v) - { - if (is_array($v)) - { - $flattened = array_merge($flattened, flatten($v)); - } - else - { - $flattened[] = $v; - } - } - - return $flattened; -} - -function & last( & $array, $back = 0) -{ - static $NULL; - $i = count($array) - $back - 1; - - if (isset($array[$i])) - { - return $array[$i]; - } - else - { - // Make sure $NULL is really NULL. - $NULL = NULL; - - return $NULL; - } -} - -/** - * In Jison, token tags can be represented simply using strings, whereas with - * ParserGenerator (a port of Lemon) we're stuck using numeric constants for - * everything. - * - * This function maps those string representations to their numeric constants, - * making it easier to port directly from the CoffeeScript source. - */ -function t($name) -{ - static $map = array( - '.' => 'ACCESSOR', - '[' => 'ARRAY_START', - ']' => 'ARRAY_END', - '@' => 'AT_SIGN', - '=>' => 'BOUND_FUNC', - ':' => 'COLON', - ',' => 'COMMA', - '--' => 'DECREMENT', - '=' => 'EQUALS', - '?' => 'EXISTENTIAL', - '?.' => 'EXISTENTIAL_ACCESSOR', - '->' => 'FUNC', - '++' => 'INCREMENT', - '&' => 'LOGIC', - '&&' => 'LOGIC', - '||' => 'LOGIC', - '-' => 'MINUS', - '{' => 'OBJECT_START', - '}' => 'OBJECT_END', - '(' => 'PAREN_START', - ')' => 'PAREN_END', - '+' => 'PLUS', - '::' => 'PROTOTYPE', - '...' => 'RANGE_EXCLUSIVE', - '..' => 'RANGE_INCLUSIVE', - ); - - if (func_num_args() > 1) - { - $name = func_get_args(); - } - - if (is_array($name) || (func_num_args() > 1 && $name = func_get_args())) - { - $tags = array(); - - foreach ($name as $v) - { - $tags[] = t($v); - } - - return $tags; - } - - $name = 'CoffeeScript\Parser::YY_'.(isset($map[$name]) ? $map[$name] : $name); - - // Don't return the original name if there's no matching constant, in some - // cases intermediate token types are created and the value returned by this - // function still needs to be unique. - return defined($name) ? constant($name) : $name; -} - -/** - * Change a CoffeeScript PHP token tag to it's equivalent canonical form (the - * form used in the JavaScript version). - * - * This function is used for testing purposes only. - */ -function t_canonical($token) -{ - static $map = array( - 'ACCESSOR' => '.', - - // These are separate from INDEX_START and INDEX_END. - 'ARRAY_START' => '[', - 'ARRAY_END' => ']', - - 'AT_SIGN' => '@', - 'BOUND_FUNC' => '=>', - 'COLON' => ':', - 'COMMA' => ',', - 'DECREMENT' => '--', - 'EQUALS' => '=', - 'EXISTENTIAL' => '?', - 'EXISTENTIAL_ACCESSOR' => '?.', - 'FUNC' => '->', - 'INCREMENT' => '++', - 'MINUS' => '-', - 'OBJECT_START' => '{', - 'OBJECT_END' => '}', - - // These are separate from CALL_START and CALL_END. - 'PAREN_START' => '(', - 'PAREN_END' => ')', - - 'PLUS' => '+', - 'PROTOTYPE' => '::', - 'RANGE_EXCLUSIVE' => '...', - 'RANGE_INCLUSIVE' => '..' - ); - - if (is_array($token)) - { - if (is_array($token[0])) - { - for ($i = 0; $i < count($token); $i++) - { - $token[$i] = t_canonical($token[$i]); - } - } - else - { - // Single token. - $token[0] = t_canonical($token[0]); - $token[1] = ''.$token[1]; - } - - return $token; - } - else if (is_numeric($token)) - { - $token = substr(Parser::tokenName($token), 3); - } - else if (is_string($token)) - { - // The token type isn't known to the parser, so t() returned a unique - // string to use instead. - $token = substr($token, strlen('CoffeeScript\Parser::YY_')); - } - - return isset($map[$token]) ? $map[$token] : $token; -} - -class Value -{ - function __construct($v) - { - $this->v = $v; - } - - function __toString() - { - return $this->v; - } -} - -/** - * Wrap a primitive with an object, so that properties can be attached to it - * like in JavaScript. - */ -function wrap($v) -{ - return new Value($v); -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/lexer.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/lexer.php deleted file mode 100755 index 17411c293cf1b9e9cbe0782ec39d5be7866e0a3f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/lexer.php +++ /dev/null @@ -1,1108 +0,0 @@ -<?php - -namespace CoffeeScript; - -require_once 'errors.php'; -require_once 'helpers.php'; -require_once 'nodes.php'; -require_once 'rewriter.php'; - -/** - * CoffeeScript lexer. For the most part it's directly from the original - * source code, though there are some relatively minor differences in how it - * works with the parser (since we're using Lemon). - */ -class Lexer -{ - static $COFFEE_ALIASES = array( - 'and' => '&&', - 'or' => '||', - 'is' => '==', - 'isnt' => '!=', - 'not' => '!', - 'yes' => 'true', - 'no' => 'false', - 'on' => 'true', - 'off' => 'false' - ); - - static $COFFEE_KEYWORDS = array( - 'by', - 'loop', - 'of', - 'then', - 'undefined', - 'unless', - 'until', - 'when' - ); - - // exports.RESERVED. - static $COFFEE_RESERVED = array(); - - static $JS_KEYWORDS = array( - 'break', - 'catch', - 'class', - 'continue', - 'debugger', - 'delete', - 'do', - 'else', - 'extends', - 'false', - 'finally', - 'for', - 'if', - 'in', - 'instanceof', - 'new', - 'null', - 'this', - 'throw', - 'typeof', - 'return', - 'switch', - 'super', - 'true', - 'try', - 'while', - ); - - // RESERVED. - static $JS_RESERVED = array( - '__bind', - '__extends', - '__hasProp', - '__indexOf', - '__slice', - 'case', - 'const', - 'default', - 'enum', - 'export', - 'function', - 'import', - 'let', - 'native', - 'var', - 'void', - 'with', - ); - - static $JS_FORBIDDEN = array(); - - static $ASSIGNED = '/^\s*@?([$A-Za-z_][$\w\x7f-\x{ffff}]*|[\'"].*[\'"])[^\n\S]*?[:=][^:=>]/u'; - static $CODE = '/^[-=]>/'; - static $COMMENT = '/^###([^#][\s\S]*?)(?:###[^\n\S]*|(?:###)?$)|^(?:\s*#(?!##[^#]).*)+/'; - static $HEREDOC = '/^("""|\'\'\')([\s\S]*?)(?:\n[^\n\S]*)?\1/'; - static $HEREDOC_INDENT = '/\n+([^\n\S]*)/'; - static $HEREDOC_ILLEGAL = '%\*/%'; - static $HEREGEX = '%^/{3}([\s\S]+?)/{3}([imgy]{0,4})(?!\w)%'; - static $HEREGEX_OMIT = '/\s+(?:#.*)?/'; - static $IDENTIFIER = '/^([$A-Za-z_\x7f-\x{ffff}][$\w\x7f-\x{ffff}]*)([^\n\S]*:(?!:))?/u'; - static $JSTOKEN = '/^`[^\\\\`]*(?:\\\\.[^\\\\`]*)*`/'; - static $LINE_CONTINUER = '/^\s*(?:,|\??\.(?![.\d])|::)/'; - static $MULTI_DENT = '/^(?:\n[^\n\S]*)+/'; - static $MULTILINER = '/\n/'; - static $NO_NEWLINE = '#^(?:[-+*&|/%=<>!.\\\\][<>=&|]*|and|or|is(?:nt)?|n(?:ot|ew)|delete|typeof|instanceof)$#'; - static $NUMBER = '/^0x[\da-f]+|^(?:\d+(\.\d+)?|\.\d+)(?:e[+-]?\d+)?/i'; - static $OPERATOR = '#^(?:[-=]>|[-+*/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>])\2=?|\?\.|\.{2,3})#'; - static $REGEX = '%^/(?![\s=])[^[/\n\\\\]*(?:(?:\\\\[\s\S]|\[[^\]\n\\\\]*(?:\\\\[\s\S][^\]\n\\\\]*)*\])[^[/\n\\\\]*)*/[imgy]{0,4}(?!\w)%'; - static $SIMPLESTR = '/^\'[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'/'; - static $TRAILING_SPACES = '/\s+$/'; - static $WHITESPACE = '/^[^\n\S]+/'; - - static $BOOL = array('TRUE', 'FALSE', 'NULL', 'UNDEFINED'); - static $CALLABLE = array('IDENTIFIER', 'STRING', 'REGEX', ')', ']', '}', '?', '::', '@', 'THIS', 'SUPER'); - static $COMPARE = array('==', '!=', '<', '>', '<=', '>='); - static $COMPOUND_ASSIGN = array('-=', '+=', '/=', '*=', '%=', '||=', '&&=', '?=', '<<=', '>>=', '>>>=', '&=', '^=', '|=' ); - static $INDEXABLE = array('NUMBER', 'BOOL'); - static $LINE_BREAK = array('INDENT', 'OUTDENT', 'TERMINATOR'); - static $LOGIC = array('&&', '||', '&', '|', '^'); - static $MATH = array('*', '/', '%'); - static $NOT_REGEX = array('NUMBER', 'REGEX', 'BOOL', '++', '--', ']'); - static $NOT_SPACED_REGEX = array(')', '}', 'THIS', 'IDENTIFIER', 'STRING'); - static $RELATION = array('IN', 'OF', 'INSTANCEOF'); - static $SHIFT = array('<<', '>>', '>>>'); - static $UNARY = array('!', '~', 'NEW', 'TYPEOF', 'DELETE', 'DO'); - - function __construct($code, $options) - { - if (preg_match(self::$WHITESPACE, $code)) - { - $code = "\n{$code}"; - } - - $code = preg_replace(self::$TRAILING_SPACES, '', str_replace("\r", '', $code)); - - $options = array_merge(array( - 'indent' => 0, - 'index' => 0, - 'line' => 0, - 'rewrite' => TRUE - ), - $options); - - $this->code = $code; - $this->chunk = $code; - $this->indent = 0; - $this->indents = array(); - $this->indebt = 0; - $this->index = $options['index']; - $this->length = strlen($this->code); - $this->line = $options['line']; - $this->outdebt = 0; - $this->options = $options; - $this->tokens = array(); - } - - function assignment_error() - { - throw new SyntaxError('Reserved word "'.$this->value().'" on line '.($this->line + 1).' can\'t be assigned'); - } - - function balanced_string($str, $end) - { - $stack = array($end); - $prev = NULL; - - for ($i = 1; $i < strlen($str); $i++) - { - switch ($letter = $str{$i}) - { - case '\\': - $i++; - continue 2; - - case $end: - array_pop($stack); - - if ( ! count($stack)) - { - return substr($str, 0, $i + 1); - } - - $end = $stack[count($stack) - 1]; - continue 2; - } - - if ($end === '}' && ($letter === '"' || $letter === '\'')) - { - $stack[] = $end = $letter; - } - else if ($end === '}' && $letter === '{') - { - $stack[] = $end = '}'; - } - else if ($end === '"' && $prev === '#' && $letter === '{') - { - $stack[] = $end = '}'; - } - - $prev = $letter; - } - - throw new Error('missing '.array_pop($stack).' starting on line '.($this->line + 1)); - } - - function close_indentation() - { - $this->outdent_token($this->indent); - } - - function comment_token() - { - if ( ! preg_match(self::$COMMENT, $this->chunk, $match)) - { - return 0; - } - - $comment = $match[0]; - - if (isset($match[1]) && ($here = $match[1])) - { - $this->token('HERECOMMENT', $this->sanitize_heredoc($here, array( - 'herecomment' => TRUE, - 'indent' => str_pad('', $this->indent) - ))); - - $this->token('TERMINATOR', "\n"); - } - - $this->line += substr_count($comment, "\n"); - - return strlen($comment); - } - - function escape_lines($str, $heredoc = NULL) - { - return preg_replace(self::$MULTILINER, $heredoc ? '\\n' : '', $str); - } - - function heredoc_token() - { - if ( ! preg_match(self::$HEREDOC, $this->chunk, $match)) - { - return 0; - } - - $heredoc = $match[0]; - $quote = $heredoc{0}; - $doc = $this->sanitize_heredoc($match[2], array('quote' => $quote, 'indent' => NULL)); - - if ($quote === '"' && strpos($doc, '#{') !== FALSE) - { - $this->interpolate_string($doc, array('heredoc' => TRUE)); - } - else - { - $this->token('STRING', $this->make_string($doc, $quote, TRUE)); - } - - $this->line += substr_count($heredoc, "\n"); - - return strlen($heredoc); - } - - function heregex_token($match) - { - list($heregex, $body, $flags) = $match; - - if (strpos($body, '#{') === FALSE) - { - $re = preg_replace(self::$HEREGEX_OMIT, '', $body); - $re = preg_replace('/\//', '\\/', $re); - - $this->token('REGEX', '/'.($re ? $re : '(?:)').'/'.$flags); - - return strlen($heregex); - } - - $this->token('IDENTIFIER', 'RegExp'); - $this->tokens[] = array(t('CALL_START'), '('); - - $tokens = array(); - - foreach ($this->interpolate_string($body, array('regex' => TRUE)) as $token) - { - list($tag, $value) = $token; - - if ($tag === 'TOKENS') - { - $tokens = array_merge($tokens, (array) $value); - } - else - { - if ( ! ($value = preg_replace(self::$HEREGEX_OMIT, '', $value))) - { - continue; - } - - $value = preg_replace('/\\\\/', '\\\\\\\\', $value); - $tokens[] = array(t('STRING'), $this->make_string($value, '"', TRUE)); - } - - $tokens[] = array(t('+'), '+'); - } - - array_pop($tokens); - - if ( ! (isset($tokens[0]) && $tokens[0][0] === 'STRING')) - { - array_push($this->tokens, array(t('STRING'), '""'), array(t('+'), '+')); - } - - $this->tokens = array_merge($this->tokens, $tokens); - - if ($flags) - { - array_push($this->tokens, array(t(','), ','), array(t('STRING'), "\"{$flags}\"")); - } - - $this->token(')', ')'); - - return strlen($heregex); - } - - function identifier_error($word) - { - throw new SyntaxError('Reserved word "'.$word.'" on line '.($this->line + 1)); - } - - function identifier_token() - { - if ( ! preg_match(self::$IDENTIFIER, $this->chunk, $match)) - { - return 0; - } - - list($input, $id) = $match; - - $colon = isset($match[2]) ? $match[2] : NULL; - - if ($id === 'own' && $this->tag() === t('FOR')) - { - $this->token('OWN', $id); - - return strlen($id); - } - - $forced_identifier = $colon || ($prev = last($this->tokens)) && - (in_array($prev[0], t('.', '?.', '::')) || - ( ! (isset($prev['spaced']) && $prev['spaced']) && $prev[0] === t('@'))); - - $tag = 'IDENTIFIER'; - - if (in_array($id, self::$JS_KEYWORDS) || ! $forced_identifier && in_array($id, self::$COFFEE_KEYWORDS)) - { - $tag = strtoupper($id); - - if ($tag === 'WHEN' && in_array($this->tag(), t(self::$LINE_BREAK))) - { - $tag = 'LEADING_WHEN'; - } - else if ($tag === 'FOR') - { - $this->seen_for = TRUE; - } - else if ($tag === 'UNLESS') - { - $tag = 'IF'; - } - else if (in_array($tag, self::$UNARY)) - { - $tag = 'UNARY'; - } - else if (in_array($tag, self::$RELATION)) - { - if ($tag !== 'INSTANCEOF' && (isset($this->seen_for) && $this->seen_for)) - { - $tag = 'FOR'.$tag; - $this->seen_for = FALSE; - } - else - { - $tag = 'RELATION'; - - if ($this->value() === '!') - { - array_pop($this->tokens); - $id = '!'. $id; - } - } - } - } - - $reserved = FALSE; - - if (in_array($id, self::$JS_FORBIDDEN, TRUE)) - { - if ($forced_identifier) - { - // TODO: Doing this seems to work just fine. Sometime in the future I - // will take out the nastiness of attaching properties to the token - // rather than directly to the value like below. - $id = wrap($id); - $id->reserved = $reserved = TRUE; - - $tag = 'IDENTIFIER'; - } - else if (in_array($id, self::$JS_RESERVED, TRUE)) - { - $this->identifier_error($id); - } - } - - if ( ! $forced_identifier) - { - if (isset(self::$COFFEE_ALIASES[$id])) - { - $id = self::$COFFEE_ALIASES[$id]; - } - - $map = array( - 'UNARY' => array('!'), - 'COMPARE' => array('==', '!='), - 'LOGIC' => array('&&', '||'), - 'BOOL' => array('true', 'false', 'null', 'undefined'), - 'STATEMENT' => array('break', 'continue', 'debugger') - ); - - foreach ($map as $k => $v) - { - if (in_array($id, $v)) - { - $tag = $k; - break; - } - } - } - - $this->token($tag, $id, array('reserved' => $reserved)); - - if ($colon) - { - $this->token(':', ':'); - } - - return strlen($input); - } - - /** - * Initialize some static variables (called at the end of this file). - */ - static function init() - { - self::$COFFEE_KEYWORDS = array_merge(self::$COFFEE_KEYWORDS, array_keys(self::$COFFEE_ALIASES)); - self::$COFFEE_RESERVED = array_merge(array_merge(self::$JS_RESERVED, self::$JS_KEYWORDS), self::$COFFEE_KEYWORDS); - self::$JS_FORBIDDEN = array_merge(self::$JS_KEYWORDS, self::$JS_RESERVED); - self::$INDEXABLE = array_merge(self::$CALLABLE, self::$INDEXABLE); - self::$NOT_SPACED_REGEX = array_merge(self::$NOT_REGEX, self::$NOT_SPACED_REGEX); - } - - function interpolate_string($str, array $options = array()) // #{0} - { - $options = array_merge(array( - 'heredoc' => '', - 'regex' => NULL - ), - $options); - - $tokens = array(); - $pi = 0; - $i = -1; - - while ( isset($str{++$i}) ) - { - $letter = $str{$i}; - - if ($letter === '\\') - { - $i++; - continue; - } - - if ( ! ($letter === '#' && $str{$i + 1} === '{' && - ($expr = $this->balanced_string(substr($str, $i + 1), '}'))) ) - { - continue; - } - - if ($pi < $i) - { - $tokens[] = array('NEOSTRING', substr($str, $pi, $i - $pi)); - } - - $inner = substr($expr, 1, -1); - - if (strlen($inner)) - { - $lexer = new Lexer($inner, array( - 'line' => $this->line, - 'rewrite' => FALSE, - )); - - $nested = $lexer->tokenize(); - - array_pop($nested); - - if (isset($nested[0]) && $nested[0][0] === t('TERMINATOR')) - { - array_shift($nested); - } - - if ( ($length = count($nested)) ) - { - if ($length > 1) - { - array_unshift($nested, array(t('('), '(')); - $nested[] = array(t(')'), ')'); - } - - $tokens[] = array('TOKENS', $nested); - } - } - - $i += strlen($expr); - $pi = $i + 1; - } - - if ($i > $pi && $pi < strlen($str)) - { - $tokens[] = array('NEOSTRING', substr($str, $pi)); - } - - if ($options['regex']) - { - return $tokens; - } - - if ( ! count($tokens)) - { - return $this->token('STRING', '""'); - } - - if ( ! ($tokens[0][0] === 'NEOSTRING')) - { - array_unshift($tokens, array('', '')); - } - - if ( ($interpolated = count($tokens) > 1) ) - { - $this->token('(', '('); - } - - for ($i = 0; $i < count($tokens); $i++) - { - list($tag, $value) = $tokens[$i]; - - if ($i) - { - $this->token('+', '+'); - } - - if ($tag === 'TOKENS') - { - $this->tokens = array_merge($this->tokens, $value); - } - else - { - $this->token('STRING', $this->make_string($value, '"', $options['heredoc'])); - } - } - - if ($interpolated) - { - $this->token(')', ')'); - } - - return $tokens; - } - - function js_token() - { - if ( ! ($this->chunk{0} === '`' && preg_match(self::$JSTOKEN, $this->chunk, $match))) - { - return 0; - } - - $this->token('JS', substr($script = $match[0], 1, -1)); - - return strlen($script); - } - - function line_token() - { - if ( ! preg_match(self::$MULTI_DENT, $this->chunk, $match)) - { - return 0; - } - - $indent = $match[0]; - $this->line += substr_count($indent, "\n"); - - // $prev = & last($this->tokens, 1); - $size = strlen($indent) - 1 - strrpos($indent, "\n"); - - $no_newlines = $this->unfinished(); - - if (($size - $this->indebt) === $this->indent) - { - if ($no_newlines) - { - $this->suppress_newlines(); - } - else - { - $this->newline_token(); - } - - return strlen($indent); - } - - if ($size > $this->indent) - { - if ($no_newlines) - { - $this->indebt = $size - $this->indent; - $this->suppress_newlines(); - - return strlen($indent); - } - - $diff = $size - $this->indent + $this->outdebt; - - $this->token('INDENT', $diff); - $this->indents[] = $diff; - $this->outdebt = $this->indebt = 0; - } - else - { - $this->indebt = 0; - $this->outdent_token($this->indent - $size, $no_newlines); - } - - $this->indent = $size; - - return strlen($indent); - } - - function literal_token() - { - if (preg_match(self::$OPERATOR, $this->chunk, $match)) - { - list($value) = $match; - - if (preg_match(self::$CODE, $value)) - { - $this->tag_parameters(); - } - } - else - { - $value = $this->chunk{0}; - } - - $tag = $value; - $prev = & last($this->tokens); - - if ($value === '=' && $prev) - { - if (isset($prev['reserved']) && $prev['reserved'] && in_array($prev[1], t(self::$JS_FORBIDDEN))) - { - $this->assignment_error(); - } - - if (in_array($prev[1], array('||', '&&'))) - { - $prev[0] = t('COMPOUND_ASSIGN'); - $prev[1] .= '='; - - return 1; // strlen($value); - } - } - - $map = array( - 'TERMINATOR' => array(';'), - 'MATH' => self::$MATH, - 'COMPARE' => self::$COMPARE, - 'COMPOUND_ASSIGN' => self::$COMPOUND_ASSIGN, - 'UNARY' => self::$UNARY, - 'SHIFT' => self::$SHIFT - ); - - $mapped = FALSE; - - foreach ($map as $k => $v) - { - if (in_array($value, $v)) - { - $tag = $k; - $mapped = TRUE; - - break; - } - } - - if ( ! $mapped) - { - if (in_array($value, self::$LOGIC) || $value === '?' && ($prev && isset($prev['spaced']) && $prev['spaced'])) - { - $tag = 'LOGIC'; - } - else if ($prev && ! (isset($prev['spaced']) && $prev['spaced'])) - { - if ($value === '(' && in_array($prev[0], t(self::$CALLABLE))) - { - if ($prev[0] === t('?')) - { - $prev[0] = t('FUNC_EXIST'); - } - - $tag = 'CALL_START'; - } - else if ($value === '[' && in_array($prev[0], t(self::$INDEXABLE))) - { - $tag = 'INDEX_START'; - - if ($prev[0] === t('?')) - { - $prev[0] = t('INDEX_SOAK'); - } - else if ($prev[0] === t('::')) - { - $prev[0] = t('INDEX_PROTO'); - } - } - } - } - - $this->token($tag, $value); - - return strlen($value); - } - - function make_string($body, $quote, $heredoc = NULL) - { - if ( ! $body) - { - return $quote.$quote; - } - - $body = preg_replace_callback('/\\\\([\s\S])/', function($match) use ($quote) - { - $contents = $match[1]; - - if (in_array($contents, array("\n", $quote))) - { - return $contents; - } - - return $match[0]; - }, - $body); - - $body = preg_replace('/'.$quote.'/', '\\\\$0', $body); - - return $quote.$this->escape_lines($body, $heredoc).$quote; - } - - function newline_token() - { - if ($this->tag() !== t('TERMINATOR')) - { - $this->token('TERMINATOR', "\n"); - } - } - - function number_token() - { - if ( ! preg_match(self::$NUMBER, $this->chunk, $match)) - { - return 0; - } - - $this->token('NUMBER', $number = $match[0]); - - return strlen($number); - } - - function outdent_token($move_out, $no_newlines = FALSE, $close = NULL) - { - while ($move_out > 0) - { - $len = count($this->indents) - 1; - - if ( ! isset($this->indents[$len])) - { - $move_out = 0; - } - else if ($this->indents[$len] === $this->outdebt) - { - $move_out -= $this->outdebt; - $this->outdebt = 0; - } - else if ($this->indents[$len] < $this->outdebt) - { - $this->outdebt -= $this->indents[$len]; - $move_out -= $this->indents[$len]; - } - else - { - $dent = array_pop($this->indents) - $this->outdebt; - $move_out -= $dent; - $this->outdebt = 0; - $this->token('OUTDENT', $dent); - } - } - - if (isset($dent) && $dent) - { - $this->outdebt -= $move_out; - } - - if ( ! ($this->tag() === t('TERMINATOR') || $no_newlines)) - { - $this->token('TERMINATOR', "\n"); - } - - return $this; - } - - function regex_token() - { - if ($this->chunk{0} !== '/') - { - return 0; - } - - if (preg_match(self::$HEREGEX, $this->chunk, $match)) - { - $length = $this->heregex_token($match); - - // This seems to be broken in the JavaScript compiler... - // $this->line += substr_count($match[0], "\n"); - - return $length; - } - - $prev = last($this->tokens); - - if ($prev) - { - if (in_array($prev[0], t((isset($prev['spaced']) && $prev['spaced']) ? - self::$NOT_REGEX : self::$NOT_SPACED_REGEX))) - { - return 0; - } - } - - if ( ! preg_match(self::$REGEX, $this->chunk, $match)) - { - return 0; - } - - $regex = $match[0]; - - $this->token('REGEX', $regex === '//' ? '/(?:)/' : $regex); - - return strlen($regex); - } - - function sanitize_heredoc($doc, array $options) - { - $herecomment = isset($options['herecomment']) ? $options['herecomment'] : NULL; - $indent = isset($options['indent']) ? $options['indent'] : NULL; - - if ($herecomment) - { - if (preg_match(self::$HEREDOC_ILLEGAL, $doc)) - { - throw new Error('block comment cannot contain \"*/\", starting on line '.($line + 1)); - } - - if (strpos($doc, "\n") == 0) // No match or 0 - { - return $doc; - } - } - else - { - $offset = 0; - - while (preg_match(self::$HEREDOC_INDENT, $doc, $match, PREG_OFFSET_CAPTURE, $offset)) - { - $attempt = $match[1][0]; - $offset = strlen($match[0][0]) + $match[0][1]; - - if ( is_null($indent) || (strlen($indent) > strlen($attempt) && strlen($attempt) > 0)) - { - $indent = $attempt; - } - } - } - - if ($indent) - { - $doc = preg_replace('/\n'.$indent.'/', "\n", $doc); - } - - if ( ! $herecomment) - { - $doc = preg_replace('/^\n/', '', $doc); - } - - return $doc; - } - - function string_token() - { - switch ($this->chunk{0}) - { - case "'": - if ( ! preg_match(self::$SIMPLESTR, $this->chunk, $match)) - { - return 0; - } - - $this->token('STRING', preg_replace(self::$MULTILINER, "\\\n", $string = $match[0])); - break; - - case '"': - if ( ! ($string = $this->balanced_string($this->chunk, '"'))) - { - return 0; - } - - if (strpos($string, '#{', 1) > 0) - { - $this->interpolate_string(substr($string, 1, -1)); - } - else - { - $this->token('STRING', $this->escape_lines($string)); - } - - break; - - default: - return 0; - } - - $this->line += substr_count($string, "\n"); - - return strlen($string); - } - - function suppress_newlines() - { - if ($this->value() === '\\') - { - array_pop($this->tokens); - } - } - - function tag($index = 0, $tag = NULL) - { - $token = & last($this->tokens, $index); - - if ( ! is_null($tag)) - { - $token[0] = $tag; - } - - return $token[0]; - } - - function tag_parameters() - { - if ($this->tag() !== t(')')) - { - return $this; - } - - $stack = array(); - $tokens = &$this->tokens; - - $i = count($tokens); - $tokens[--$i][0] = t('PARAM_END'); - - while ( ($tok = &$tokens[--$i]) ) - { - if ($tok[0] === t(')')) - { - $stack[] = $tok; - } - else if (in_array($tok[0], t('(', 'CALL_START'))) - { - if (count($stack)) - { - array_pop($stack); - } - else if ($tok[0] === t('(')) - { - $tok[0] = t('PARAM_START'); - return $this; - } - } - } - - return $this; - } - - function token($tag, $value = NULL, $props = array()) - { - if ( ! is_numeric($tag)) - { - $tag = t($tag); - } - - $token = array($tag, $value, $this->line); - - if ($props) - { - foreach ($props as $k => $v) - { - $token[$k] = $v; - } - } - - return ($this->tokens[] = $token); - } - - function tokenize() - { - while ( ($this->chunk = substr($this->code, $this->index)) !== FALSE ) - { - $types = array('identifier', 'comment', 'whitespace', 'line', 'heredoc', - 'string', 'number', 'regex', 'js', 'literal'); - - foreach ($types as $type) - { - if ( ($d = $this->{$type.'_token'}()) ) - { - $this->index += $d; - break; - } - } - } - - $this->close_indentation(); - - if ($this->options['rewrite']) - { - $rewriter = new Rewriter($this->tokens); - $this->tokens = $rewriter->rewrite(); - } - - return $this->tokens; - } - - function value($index = 0, $value = NULL) - { - $token = & last($this->tokens, $index); - - if ( ! is_null($value)) - { - $token[1] = $value; - } - - return $token[1]; - } - - function unfinished() - { - return - preg_match(self::$LINE_CONTINUER, $this->chunk) || - ($prev = last($this->tokens, 1)) && - ($prev[0] !== t('.')) && - ($value = $this->value()) && - // ( ! (isset($value->reserved) && $value->reserved)) && - ( ! (isset($prev['reserved']) && $prev['reserved'])) && - preg_match(self::$NO_NEWLINE, $value) && - ( ! preg_match(self::$CODE, $value)) && - ( ! preg_match(self::$ASSIGNED, $this->chunk)); - } - - function whitespace_token() - { - if ( ! (preg_match(self::$WHITESPACE, $this->chunk, $match) || ($nline = ($this->chunk{0} === "\n")))) - { - return 0; - } - - $prev = & last($this->tokens); - - if ($prev) - { - $prev[$match ? 'spaced' : 'newLine'] = TRUE; - } - - return $match ? strlen($match[0]) : 0; - } -} - -Lexer::init(); - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes.php deleted file mode 100755 index 70e8769b37ed00a49ff778ad367ee8fcc6199fed..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes.php +++ /dev/null @@ -1,137 +0,0 @@ -<?php - -namespace CoffeeScript; - -require_once 'helpers.php'; -require_once 'scope.php'; - -define('LEVEL_TOP', 1); -define('LEVEL_PAREN', 2); -define('LEVEL_LIST', 3); -define('LEVEL_COND', 4); -define('LEVEL_OP', 5); -define('LEVEL_ACCESS', 6); - -define('TAB', ' '); - -define('IDENTIFIER', '/^[$A-Za-z_\x7f-\x{ffff}][$\w\x7f-\x{ffff}]*$/u'); -define('IS_STRING', '/^[\'"]/'); -define('SIMPLENUM', '/^[+-]?\d+$/'); - -$UTILITIES = array( - 'hasProp' => 'Object.prototype.hasOwnProperty', - 'slice' => 'Array.prototype.slice' -); - -$UTILITIES['bind'] = <<<'BIND' -function(fn, me){ return function(){ return fn.apply(me, arguments); }; } -BIND; - -$UTILITIES['extends'] = <<<'EXTENDS' -function(child, parent) { - for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } - function ctor() { this.constructor = child; } - ctor.prototype = parent.prototype; - child.prototype = new ctor; - child.__super__ = parent.prototype; - return child; -} -EXTENDS; - -$UTILITIES['indexOf'] = <<<'INDEXOF' -Array.prototype.indexOf || function(item) { - for (var i = 0, l = this.length; i < l; i++) { - if (this[i] === item) return i; - } - return -1; -} -INDEXOF; - -function multident($code, $tab) -{ - return preg_replace('/\n/', "\n{$tab}", $code); -} - -function unfold_soak($options, $parent, $name) -{ - if ( ! (isset($parent->{$name}) && $parent->{$name} && $ifn = $parent->{$name}->unfold_soak($options))) - { - return; - } - - $parent->{$name} = $ifn->body; - $ifn->body = yy('Value', $parent); - - return $ifn; -} - -function utility($name) -{ - global $UTILITIES; - - Scope::$root->assign($ref = "__$name", $UTILITIES[$name]); - - return $ref; -} - -/** - * Since PHP can't return values from __construct, and some of the node - * classes rely heavily on this feature in JavaScript, we use this function - * instead of the new keyword to instantiate and implicitly call the - * constructor. - */ -function yy($type) -{ - $args = func_get_args(); - array_shift($args); - - $type = __NAMESPACE__.'\yy_'.$type; - - $inst = new $type; - $inst = call_user_func_array(array($inst, 'constructor'), $args); - - return $inst; -} - -// Base class. -require_once 'nodes/base.php'; - -$nodes = array( - 'access', - 'arr', - 'assign', - 'block', - 'call', - 'class', - 'closure', - 'code', - 'comment', - 'existence', - 'extends', - 'for', - 'if', - 'in', - 'index', - 'literal', - 'obj', - 'op', - 'param', - 'parens', - 'push', - 'range', - 'return', - 'slice', - 'splat', - 'switch', - 'throw', - 'try', - 'value', - 'while' -); - -foreach ($nodes as $node) -{ - require_once "nodes/{$node}.php"; -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/access.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/access.php deleted file mode 100755 index a98d2ae4b2af306088710087b565a485be6a04d3..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/access.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Access extends yy_Base -{ - public $children = array('name'); - - function constructor($name, $tag = NULL) - { - $this->name = $name; - $this->name->as_key = TRUE; - - $this->proto = $tag === 'proto' ? '.prototype' : ''; - $this->soak = $tag === 'soak'; - - return $this; - } - - function compile($options, $level = NULL) - { - $name = $this->name->compile($options); - return $this->proto.(preg_match(IS_STRING, $name) ? "[{$name}]" : ".{$name}"); - } - - function is_complex() - { - return FALSE; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/arr.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/arr.php deleted file mode 100755 index cb37656802d2aee7fa92f7b3a93dbe2f2fd8ae00..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/arr.php +++ /dev/null @@ -1,69 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Arr extends yy_Base -{ - public $children = array('objects'); - - function constructor($objs) - { - $this->objects = $objs ? $objs : array(); - - return $this; - } - - function assigns($name) - { - foreach ($this->objects as $obj) - { - if ($obj->assigns($name)) - { - return TRUE; - } - } - - return FALSE; - } - - function compile_node($options) - { - if ( ! count($options)) - { - return '[]'; - } - - $options['indent'] .= TAB; - $objs = $this->filter_implicit_objects($this->objects); - - if (($code = yy_Splat::compile_splatted_array($options, $objs))) - { - return $code; - } - - $code = array(); - - foreach ($objs as $obj) - { - $code[] = $obj->compile($options); - } - - $code = implode(', ', $code); - - if (strpos($code, "\n") !== FALSE) - { - return "[\n{$options['indent']}{$code}\n{$this->tab}]"; - } - else - { - return "[{$code}]"; - } - } - - function filter_implicit_objects() - { - return call_user_func_array(array(yy('Call'), __FUNCTION__), func_get_args()); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/assign.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/assign.php deleted file mode 100755 index e7d2e2ca42526250dfc1b1208195257c0420ddaa..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/assign.php +++ /dev/null @@ -1,300 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Assign extends yy_Base -{ - public $children = array('variable', 'value'); - - const METHOD_DEF = '/^(?:(\S+)\.prototype\.|\S+?)?\b([$A-Za-z_][$\w\x7f-\x{ffff}]*)$/u'; - - function constructor($variable, $value, $context = '', $options = NULL) - { - $this->variable = $variable; - $this->value = $value; - $this->context = $context; - $this->param = $options ? $options['param'] : NULL; - - return $this; - } - - function assigns($name) - { - if ($this->context === 'object') - { - return $this->value->assigns($name); - } - else - { - return $this->variable->assigns($name); - } - } - - function compile_conditional($options) - { - list($left, $rite) = $this->variable->cache_reference($options); - $tmp = yy('Op', substr($this->context, 0, -1), $left, yy('Assign', $rite, $this->value, '=')); - - return $tmp->compile($options); - } - - function compile_node($options) - { - if (($is_value = ($this->variable instanceof yy_Value))) - { - if ($this->variable->is_array() || $this->variable->is_object()) - { - return $this->compile_pattern_match($options); - } - - if ($this->variable->is_splice()) - { - return $this->compile_splice($options); - } - - if (in_array($this->context, array('||=', '&&=', '?='), TRUE)) - { - return $this->compile_conditional($options); - } - } - - $name = $this->variable->compile($options, LEVEL_LIST); - - if ( ! ($this->context || $this->variable->is_assignable())) - { - throw new SyntaxError('"'.$this->variable->compile($options).'" cannot be assigned.'); - } - - if ( ! ($this->context || $is_value && - ((isset($this->variable->namespaced) && $this->variable->namespaced) || - $this->variable->has_properties()))) - { - if ($this->param) - { - $options['scope']->add($name, 'var'); - } - else - { - $options['scope']->find($name); - } - } - - if ($this->value instanceof yy_Code && preg_match(self::METHOD_DEF, $name, $match)) - { - $this->value->name = $match[2]; - - if (isset($match[1]) && $match[1]) - { - $this->value->klass = $match[1]; - } - } - - $val = $this->value->compile($options, LEVEL_LIST); - - if ($this->context === 'object') - { - return "{$name}: {$val}"; - } - - $val = $name.' '.($this->context ? $this->context : '=').' '.$val; - - return $options['level'] <= LEVEL_LIST ? $val : "({$val})"; - } - - function compile_pattern_match($options) - { - $top = $options['level'] === LEVEL_TOP; - $value = $this->value; - $objects = $this->variable->base->objects; - - if ( ! ($olen = count($objects))) - { - $code = $value->compile($options); - return $options['level'] >= LEVEL_OP ? "({$code})" : $code; - } - - $is_object = $this->variable->is_object(); - - if ($top && $olen === 1 && ! (($obj = $objects[0]) instanceof yy_Splat)) - { - if ($obj instanceof yy_Assign) - { - $idx = $obj->variable->base; - $obj = $obj->value; - } - else - { - if ($obj->base instanceof yy_Parens) - { - $tmp = yy('Value', $obj->unwrap_all()); - list($obj, $idx) = $tmp->cache_reference($options); - } - else - { - if ($is_object) - { - $idx = $obj->this ? $obj->properties[0]->name : $obj; - } - else - { - $idx = yy('Literal', 0); - } - } - } - - $acc = preg_match(IDENTIFIER, $idx->unwrap()->value); - $value = yy('Value', $value); - - if ($acc) - { - $value->properties[] = yy('Access', $idx); - } - else - { - $value->properties[] = yy('Index', $idx); - } - - $tmp = yy('Assign', $obj, $value); - - return $tmp->compile($options); - } - - $vvar = $value->compile($options, LEVEL_LIST); - $assigns = array(); - $splat = FALSE; - - if ( ! preg_match(IDENTIFIER, $vvar) || $this->variable->assigns($vvar)) - { - $assigns[] = ($ref = $options['scope']->free_variable('ref')).' = '.$vvar; - $vvar = $ref; - } - - foreach ($objects as $i => $obj) - { - $idx = $i; - - if ($is_object) - { - if ($obj instanceof yy_Assign) - { - $idx = $obj->variable->base; - $obj = $obj->value; - } - else - { - if ($obj->base instanceof yy_Parens) - { - $tmp = yy('Value', $obj->unwrap_all()); - list($obj, $idx) = $tmp->cache_reference($options); - } - else - { - $idx = $obj->this ? $obj->properties[0]->name : $obj; - } - } - } - - if ( ! $splat && ($obj instanceof yy_Splat)) - { - $val = "{$olen} <= {$vvar}.length ? ".utility('slice').".call({$vvar}, {$i}"; - $ivar = 'undefined'; - - if (($rest = $olen - $i - 1)) - { - $ivar = $options['scope']->free_variable('i'); - $val .= ", {$ivar} = {$vvar}.length - {$rest}) : ({$ivar} = {$i}, [])"; - } - else - { - $val .= ') : []'; - } - - $val = yy('Literal', $val); - $splat = "{$ivar}++"; - } - else - { - if ($obj instanceof yy_Splat) - { - $obj = $obj->name->compile($options); - throw SyntaxError("multiple splats are disallowed in an assignment: {$obj} ..."); - } - - if (is_numeric($idx)) - { - $idx = yy('Literal', $splat ? $splat : $idx); - $acc = FALSE; - } - else - { - $acc = $is_object ? preg_match(IDENTIFIER, $idx->unwrap()->value) : 0; - } - - $val = yy('Value', yy('Literal', $vvar), array($acc ? yy('Access', $idx) : yy('Index', $idx))); - } - - $tmp = yy('Assign', $obj, $val, NULL, array('param' => $this->param)); - $assigns[] = $tmp->compile($options, LEVEL_TOP); - } - - if ( ! $top) - { - $assigns[] = $vvar; - } - - $code = implode(', ', $assigns); - - return $options['level'] < LEVEL_LIST ? $code : "({$code})"; - } - - function compile_splice($options) - { - $tmp = array_pop($this->variable->properties); - - $from = $tmp->range->from; - $to = $tmp->range->to; - $exclusive = $tmp->range->exclusive; - - $name = $this->variable->compile($options); - - list($from_decl, $from_ref) = $from ? $from->cache($options, LEVEL_OP) : array('0', '0'); - - if ($to) - { - if (($from && $from->is_simple_number()) && $to->is_simple_number()) - { - $to = intval($to->compile($options)) - intval($from_ref); - - if ( ! $exclusive) - { - $to++; - } - } - else - { - $to = $to->compile($options).' - '. $from_ref; - - if ( ! $exclusive) - { - $to .= ' + 1'; - } - } - } - else - { - $to = '9e9'; - } - - list($val_def, $val_ref) = $this->value->cache($options, LEVEL_LIST); - - $code = "[].splice.apply({$name}, [{$from_decl}, {$to}].concat({$val_def})), {$val_ref}"; - return $options['level'] > LEVEL_TOP ? "({$code})" : $code; - } - - function unfold_soak($options) - { - return unfold_soak($options, $this, 'variable'); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/base.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/base.php deleted file mode 100755 index 05b570eba71b77849389d1911c8cdcfe11deb921..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/base.php +++ /dev/null @@ -1,279 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Base -{ - public $as_key = FALSE; - public $assigns = FALSE; - public $children = array(); - public $ctor = NULL; - public $exclusive = NULL; - public $expression = NULL; - public $from = NULL; - public $front = NULL; - public $namespaced = FALSE; - public $negated = FALSE; - public $no_return = FALSE; - public $proto = FALSE; - public $soak = FALSE; - public $this = NULL; - public $to = NULL; - - function __construct() {} - - function constructor() { return $this; } - - function __toString() - { - return ''.$this->to_string(); - } - - function cache($options, $level = NULL, $reused = NULL) - { - if ( ! $this->is_complex()) - { - $ref = $level ? $this->compile($options, $level) : $this; - return array($ref, $ref); - } - else - { - $ref = yy('Literal', $reused ? $reused : $options['scope']->free_variable('ref')); - $sub = yy('Assign', $ref, $this); - - if ($level) - { - return array($sub->compile($options, $level), $ref->value); - } - else - { - return array($sub, $ref); - } - } - } - - function compile($options, $level = NULL) - { - if ($level) - { - $options['level'] = $level; - } - - if ( ! ($node = $this->unfold_soak($options))) - { - $node = $this; - } - - $node->tab = $options['indent']; - - if ($options['level'] === LEVEL_TOP || ! $node->is_statement($options)) - { - return $node->compile_node($options); - } - - return $node->compile_closure($options); - } - - function compile_closure($options) - { - if ($this->jumps() || ($this instanceof yy_Throw)) - { - throw new SyntaxError('cannot use a pure statement in an expression.'); - } - - $options['shared_scope'] = TRUE; - - $closure = yy_Closure::wrap($this); - return $closure->compile_node($options); - } - - function compile_loop_reference($options, $name) - { - $src = $tmp = $this->compile($options, LEVEL_LIST); - - if ( ! (abs($src) < INF || preg_match(IDENTIFIER, $src) && - $options['scope']->check($src, TRUE))) - { - $src = ($tmp = $options['scope']->free_variable($name)).' = '.$src; - } - - return array($src, $tmp); - } - - function contains($pred) - { - $contains = FALSE; - - if (is_string($pred)) - { - $tmp = __NAMESPACE__.'\\'.$pred; - - $pred = function($node) use ($tmp) - { - return call_user_func($tmp, $node); - }; - } - - $this->traverse_children(FALSE, function($node) use ( & $contains, & $pred) - { - if ($pred($node)) - { - $contains = TRUE; - return FALSE; - } - }); - - return $contains; - } - - function contains_type($type) - { - return ($this instanceof $type) || $this->contains(function($node) use ( & $type) - { - return $node instanceof $type; - }); - } - - function each_child($func) - { - if ( ! ($this->children)) - { - return $this; - } - - foreach ($this->children as $i => $attr) - { - if (isset($this->{$attr}) && $this->{$attr}) - { - foreach (flatten(array($this->{$attr})) as $i => $child) - { - if ($func($child) === FALSE) - { - break 2; - } - } - } - } - - return $this; - } - - function invert() - { - return yy('Op', '!', $this); - } - - function is_assignable() - { - return FALSE; - } - - function is_complex() - { - return FALSE; - } - - function is_chainable() - { - return FALSE; - } - - function is_object() - { - return FALSE; - } - - function is_statement() - { - return FALSE; - } - - function is_undefined() - { - return FALSE; - } - - function jumps() - { - return FALSE; - } - - function last_non_comment($list) - { - $i = count($list); - - while ($i--) - { - if ( ! ($list[$i] instanceof yy_Comment)) - { - return $list[$i]; - } - } - - return NULL; - } - - function make_return() - { - return yy('Return', $this); - } - - function to_string($idt = '', $name = NULL) - { - if ($name === NULL) - { - $name = get_class($this); - } - - $tree = "\n{$idt}{$name}"; - - if ($this->soak) - { - $tree .= '?'; - } - - $this->each_child(function($node) use ($idt, & $tree) - { - $tree .= $node->to_string($idt.TAB); - }); - - return $tree; - } - - function traverse_children($cross_scope, $func) - { - $this->each_child(function($child) use ($cross_scope, & $func) - { - if ($func($child) === FALSE) - { - return FALSE; - } - - return $child->traverse_children($cross_scope, $func); - }); - } - - function unfold_soak($options) - { - return FALSE; - } - - function unwrap() - { - return $this; - } - - function unwrap_all() - { - $node = $this; - - while ($node !== ($node = $node->unwrap())) - { - continue; - } - - return $node; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/block.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/block.php deleted file mode 100755 index 5fadbf914a172369c8e76a9f3d2a142772a05781..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/block.php +++ /dev/null @@ -1,226 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Block extends yy_Base -{ - public $children = array('expressions'); - - function constructor($nodes = array()) - { - $this->expressions = compact(flatten($nodes)); - - return $this; - } - - function compile($options, $level = NULL) - { - if (isset($options['scope'])) - { - return parent::compile($options, $level); - } - else - { - return $this->compile_root($options); - } - } - - function compile_node($options) - { - $this->tab = $options['indent']; - - $top = $options['level'] === LEVEL_TOP; - $codes = array(); - - foreach ($this->expressions as $i => $node) - { - $node = $node->unwrap_all(); - $node = ($tmp = $node->unfold_soak($options)) ? $tmp : $node; - - if ($top) - { - $node->front = TRUE; - $code = $node->compile($options); - - if ($node->is_statement($options)) - { - $codes[] = $code; - } - else - { - $codes[] = $this->tab.$code.';'; - } - } - else - { - $codes[] = $node->compile($options, LEVEL_LIST); - } - } - - if ($top) - { - return implode("\n", $codes); - } - - $code = ($tmp = implode(', ', $codes)) ? $tmp : 'void 0'; - - if (count($codes) && $options['level'] >= LEVEL_LIST) - { - return "({$code})"; - } - else - { - return $code; - } - } - - function compile_root($options) - { - $options['indent'] = ($this->tab = isset($options['bare']) && $options['bare'] ? '' : TAB); - $options['scope'] = new Scope(NULL, $this, NULL); - $options['level'] = LEVEL_TOP; - - $code = $this->compile_with_declarations($options); - - return (isset($options['bare']) && $options['bare']) ? $code : - "(function() {\n{$code}\n}).call(this);\n"; - } - - function compile_with_declarations($options) - { - $code = $post = ''; - - foreach ($this->expressions as $i => $expr) - { - $expr = $expr->unwrap(); - - if ( ! ($expr instanceof yy_Comment || $expr instanceof yy_Literal)) - { - break; - } - } - - $options = array_merge($options, array('level' => LEVEL_TOP)); - - if ($i) - { - $rest = array_splice($this->expressions, $i, count($this->expressions)); - $code = $this->compile_node($options); - - $this->expressions = $rest; - } - - $post = $this->compile_node($options); - - $scope = $options['scope']; - - if ($scope->expressions === $this) - { - if ($scope->has_declarations()) - { - $code .= $this->tab.'var '.implode(', ', $scope->declared_variables()).";\n"; - } - - if ($scope->has_assignments()) - { - $code .= $this->tab.'var '.multident(implode(', ', $scope->assigned_variables()), $this->tab).";\n"; - } - } - - return $code.$post; - } - - function is_empty() - { - return ! count($this->expressions); - } - - function is_statement($options) - { - foreach ($this->expressions as $i => $expr) - { - if ($expr->is_statement($options)) - { - return TRUE; - } - } - - return FALSE; - } - - function jumps($options = array()) - { - foreach ($this->expressions as $i => $expr) - { - if ($expr->jumps($options)) - { - return $expr; - } - } - - return FALSE; - } - - function make_return() - { - $len = count($this->expressions); - - while ($len--) - { - $expr = $this->expressions[$len]; - - if ( ! ($expr instanceof yy_Comment)) - { - $this->expressions[$len] = $expr->make_return(); - - if ($expr instanceof yy_Return && ! $expr->expression) - { - return array_splice($this->expressions, $len, 1); - } - - break; - } - } - - return $this; - } - - function pop() - { - return array_pop($this->expressions); - } - - function push($node) - { - $this->expressions[] = $node; - return $this; - } - - function unshift($node) - { - array_unshift($this->expressions, $node); - return $this; - } - - function unwrap() - { - return count($this->expressions) === 1 ? $this->expressions[0] : $this; - } - - static function wrap($nodes) - { - if ( ! is_array($nodes)) - { - $nodes = array($nodes); - } - - if (count($nodes) === 1 && $nodes[0] instanceof yy_Block) - { - return $nodes[0]; - } - - return yy('Block', $nodes); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/call.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/call.php deleted file mode 100755 index a942919984a4f5af93da180d38235287be3b3f66..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/call.php +++ /dev/null @@ -1,271 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Call extends yy_Base -{ - public $children = array('variable', 'args'); - - private $is_new; - private $is_super; - - function constructor($variable = NULL, $args = array(), $soak = FALSE) - { - $this->args = $args; - $this->is_new = FALSE; - $this->is_super = $variable === 'super'; - $this->variable = $this->is_super() ? NULL : $variable; - - return $this; - } - - function compile_node($options) - { - if ($this->variable) - { - $this->variable->front = $this->front; - } - - if (($code = yy_Splat::compile_splatted_array($options, $this->args, TRUE))) - { - return $this->compile_splat($options, $code); - } - - $args = $this->filter_implicit_objects($this->args); - $tmp = array(); - - foreach ($args as $arg) - { - $tmp[] = $arg->compile($options, LEVEL_LIST); - } - - $args = implode(', ', $tmp); - - if ($this->is_super()) - { - return $this->super_reference($options).'.call(this'.($args ? ', '.$args : '').')'; - } - else - { - return ($this->is_new() ? 'new ' : '').$this->variable->compile($options, LEVEL_ACCESS)."({$args})"; - } - } - - function compile_super($args, $options) - { - return $this->super_reference($options).'.call(this'.(count($args) ? ', ' : '').$args.')'; - } - - function compile_splat($options, $splat_args) - { - if ($this->is_super()) - { - return $this->super_reference($options).'.apply(this, '.$splat_args.')'; - } - - if ($this->is_new()) - { - $idt = $this->tab.TAB; - - return - "(function(func, args, ctor) {\n" - . "{$idt}ctor.prototype = func.prototype;\n" - . "{$idt}var child = new ctor, result = func.apply(child, args);\n" - . "{$idt}return typeof result === \"object\" ? result : child;\n" - . "{$this->tab}})(".$this->variable->compile($options, LEVEL_LIST).", $splat_args, function() {})"; - } - - $base = yy('Value', $this->variable); - - if (($name = array_pop($base->properties)) && $base->is_complex()) - { - $ref = $options['scope']->free_variable('ref'); - $fun = "($ref = ".$base->compile($options, LEVEL_LIST).')'.$name->compile($options).''; - } - else - { - $fun = $base->compile($options, LEVEL_ACCESS); - $fun = preg_match(SIMPLENUM, $fun) ? "($fun)" : $fun; - - if ($name) - { - $ref = $fun; - $fun .= $name->compile($options); - } - else - { - $ref = NULL; - } - } - - return "{$fun}.apply({$ref}, {$splat_args})"; - } - - function is_new($set = NULL) - { - if ($set !== NULL) - { - $this->is_new = !! $set; - } - - return $this->is_new; - } - - function is_super() - { - return $this->is_super; - } - - function filter_implicit_objects($list) - { - $nodes = array(); - - foreach ($list as $node) - { - if ( ! ($node->is_object() && $node->base->generated)) - { - $nodes[] = $node; - continue; - } - - $obj = $tmp = NULL; - - foreach ($node->base->properties as $prop) - { - if ($prop instanceof yy_Assign) - { - if ( ! $obj) - { - $nodes[] = ($obj = $tmp = yy('Obj', array(), TRUE)); - } - - $tmp->properties[] = $prop; - } - else - { - $nodes[] = $prop; - $obj = NULL; - } - } - } - - return $nodes; - } - - function new_instance() - { - $base = isset($this->variable->base) ? $this->variable->base : $this->variable; - - if ($base instanceof yy_Call) - { - $base->new_instance(); - } - else - { - $this->is_new = TRUE; - } - - return $this; - } - - function super_reference($options) - { - $method = $options['scope']->method; - - if ( ! $method) - { - throw SyntaxError('cannot call super outside of a function.'); - } - - $name = $method->name; - - if ( ! $name) - { - throw SyntaxError('cannot call super on an anonymous function.'); - } - - if (isset($method->klass) && $method->klass) - { - return $method->klass.'.__super__.'.$name; - } - else - { - return $name.'.__super__.constructor'; - } - } - - function unfold_soak($options) - { - if ($this->soak) - { - if ($this->variable) - { - if ($ifn = unfold_soak($options, $this, 'variable')) - { - return $ifn; - } - - $tmp = yy('Value', $this->variable); - list($left, $rite) = $tmp->cache_reference($options); - } - else - { - $left = yy('Literal', $this->super_reference($options)); - $rite = yy('Value', $left); - } - - $rite = yy('Call', $rite, $this->args); - $rite->is_new($this->is_new()); - $left = yy('Literal', 'typeof '.$left->compile($options).' === "function"'); - - return yy('If', $left, yy('Value', $rite), array('soak' => TRUE)); - } - - $call = $this; - $list = array(); - - while (TRUE) - { - if ($call->variable instanceof yy_Call) - { - $list[] = $call; - $call = $call->variable; - - continue; - } - - if ( ! ($call->variable instanceof yy_Value)) - { - break; - } - - $list[] = $call; - - if ( ! (($call = $call->variable->base) instanceof yy_Call)) - { - break; - } - } - - foreach (array_reverse($list) as $call) - { - if (isset($ifn)) - { - if ($call->variable instanceof yy_Call) - { - $call->variable = $ifn; - } - else - { - $call->variable->base = $ifn; - } - } - - $ifn = unfold_soak($options, $call, 'variable'); - } - - return isset($ifn) ? $ifn : NULL; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/class.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/class.php deleted file mode 100755 index a8ce027b6418c349f036e4655378d9ba499b937c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/class.php +++ /dev/null @@ -1,236 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Class extends yy_Base -{ - public $children = array('variable', 'parent', 'body'); - - function constructor($variable = NULL, $parent = NULL, $body = NULL) - { - $this->variable = $variable; - $this->parent = $parent; - - $this->body = $body === NULL ? yy('Block') : $body; - $this->body->class_body = TRUE; - - $this->bound_funcs = array(); - - return $this; - } - - function add_bound_functions($options) - { - if (count($this->bound_funcs)) - { - foreach ($this->bound_funcs as $bvar) - { - $bname = $bvar->compile($options); - $body = is_array($this->ctor->body) ? $this->ctor->body : array($this->ctor->body); - array_unshift($body, yy('Literal', "this.{$bname} = ".utility('bind')."(this.{$bname}, this)")); - } - } - } - - function add_properties($node, $name, $options) - { - $props = array_slice($node->base->properties, 0); - $exprs = array(); - - while ($assign = array_shift($props)) - { - if ($assign instanceof yy_Assign) - { - $base = $assign->variable->base; - $func = $assign->value; - - $assign->context = NULL; - - if ($base->value === 'constructor') - { - if ($this->ctor) - { - throw new Error('cannot define more than one constructor in a class'); - } - - if (isset($func->bound) && $func->bound) - { - throw new Error('cannot define a constructor as a bound functions'); - } - - if ($func instanceof yy_Code) - { - $assign = $this->ctor = $func; - } - else - { - $this->external_ctor = $options['scope']->free_variable('class'); - $assign = yy('Assign', yy('Literal', $this->external_ctor), $func); - } - } - else - { - if ( ! (isset($assign->variable->this) && $assign->variable->this)) - { - $assign->variable = yy('Value', yy('Literal', $name), array(yy('Access', $base, 'proto'))); - } - - if ($func instanceof yy_Code && isset($func->bound) && $func->bound) - { - $this->bound_funcs[] = $base; - $func->bound = FALSE; - } - } - } - - $exprs[] = $assign; - } - - return compact($exprs); - } - - function compile_node($options) - { - $decl = $this->determine_name(); - - if ($decl) - { - $name = $decl; - } - else if (isset($this->name) && $this->name) - { - $name = $this->name; - } - else - { - $name = '_Class'; - } - - $lname = yy('Literal', $name); - - $this->set_context($name); - $this->walk_body($name, $options); - $this->ensure_constructor($name); - - if ($this->parent) - { - array_unshift($this->body->expressions, yy('Extends', $lname, $this->parent)); - } - - if ( ! ($this->ctor instanceof yy_Code)) - { - array_unshift($this->body->expressions, $this->ctor); - } - - $this->body->expressions[] = $lname; - - $this->add_bound_functions($options); - - $klass = yy('Parens', yy_Closure::wrap($this->body), TRUE); - - if ($this->variable) - { - $klass = yy('Assign', $this->variable, $klass); - } - - return $klass->compile($options); - } - - function determine_name() - { - if ( ! (isset($this->variable) && $this->variable)) - { - return NULL; - } - - if (($tail = last($this->variable->properties))) - { - $decl = $tail instanceof yy_Access ? $tail->name->value : FALSE; - } - else - { - $decl = $this->variable->base->value; - } - - $decl = $decl ? (preg_match(IDENTIFIER, $decl) ? $decl : FALSE) : FALSE; - - return $decl; - } - - function ensure_constructor($name) - { - if ( ! (isset($this->ctor) && $this->ctor)) - { - $this->ctor = yy('Code'); - - if ($this->parent) - { - $this->ctor->body->push(yy('Literal', "{$name}.__super__.constructor.apply(this, arguments)")); - } - - if (isset($this->external_ctor) && $this->external_ctor) - { - $this->ctor->body->push(yy('Literal', "{$this->external_ctor}.apply(this, arguments)")); - } - - array_unshift($this->body->expressions, $this->ctor); - } - - $this->ctor->ctor = $this->ctor->name = $name; - $this->ctor->klass = NULL; - $this->ctor->no_return = TRUE; - } - - function set_context($name) - { - $this->body->traverse_children(FALSE, function($node) use ($name) - { - if (isset($node->class_body) && $node->class_body) - { - return FALSE; - } - - if ($node instanceof yy_Literal && ''.$node->value === 'this') - { - $node->value = $name; - } - else if ($node instanceof yy_Code) - { - $node->klass = $name; - - if ($node->bound) - { - $node->context = $name; - } - } - }); - } - - function walk_body($name, $options) - { - $self = $this; - - $this->traverse_children(FALSE, function($child) use ($name, $options, & $self) - { - if ($child instanceof yy_Class) - { - return FALSE; - } - - if ($child instanceof yy_Block) - { - foreach (($exps = $child->expressions) as $i => $node) - { - if ($node instanceof yy_Value && $node->is_object(TRUE)) - { - $exps[$i] = $self->add_properties($node, $name, $options); - } - } - - $child->expressions = $exps = flatten($exps); - } - }); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/closure.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/closure.php deleted file mode 100755 index 5751ab0b5a1019a3844760a9c8d41f999347bcc0..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/closure.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Closure -{ - static function wrap($expressions, $statement = NULL, $no_return = FALSE) - { - if ($expressions->jumps()) - { - return $expressions; - } - - $func = yy('Code', array(), yy_Block::wrap(array($expressions))); - $args = array(); - - if (($mentions_args = $expressions->contains('yy_Closure::literal_args')) || - $expressions->contains('yy_Closure::literal_this')) - { - $meth = yy('Literal', $mentions_args ? 'apply' : 'call'); - $args = array(yy('Literal', 'this')); - - if ($mentions_args) - { - $args[] = yy('Literal', 'arguments'); - } - - $func = yy('Value', $func, array(yy('Access', $meth))); - } - - $func->no_return = $no_return; - $call = yy('Call', $func, $args); - - return $statement ? yy_Block::wrap(array($call)) : $call; - } - - static function literal_args($node) - { - return ($node instanceof yy_Literal) && (''.$node->value === 'arguments') && ! $node->as_key; - } - - static function literal_this($node) - { - return (($node instanceof yy_Literal) && (''.$node->value === 'this') && ! $node->as_key) || - ($node instanceof yy_Code && $node->bound); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/code.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/code.php deleted file mode 100755 index 33f5db2d42fadda0e4d39bce67988c52814f57e6..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/code.php +++ /dev/null @@ -1,160 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Code extends yy_Base -{ - public $children = array('params', 'body'); - - function constructor($params = NULL, $body = NULL, $tag = NULL) - { - $this->params = $params ? $params : array(); - $this->body = $body ? $body : yy('Block'); - $this->bound = $tag === 'boundfunc'; - $this->context = $this->bound ? 'this' : NULL; - - return $this; - } - - function compile_node($options) - { - $options['scope'] = new Scope($options['scope'], $this->body, $this); - $options['scope']->shared = del($options, 'sharedScope'); - $options['indent'] .= TAB; - - unset($options['bare']); - - $vars = array(); - $exprs = array(); - - foreach ($this->params as $param) - { - if ($param->splat) - { - if (isset($param->name->value) && $param->name->value) - { - $options['scope']->add($param->name->value, 'var'); - } - - $params = array(); - - foreach ($this->params as $p) - { - $params[] = $p->as_reference($options); - } - - $splats = yy('Assign', yy('Value', yy('Arr', $params)), yy('Value', yy('Literal', 'arguments'))); - - break; - } - } - - foreach ($this->params as $param) - { - if ($param->is_complex()) - { - $val = $ref = $param->as_reference($options); - - if ($param->value) - { - $val = yy('Op', '?', $ref, $param->value); - } - - $exprs[] = yy('Assign', yy('Value', $param->name), $val, '=', array('param' => TRUE)); - } - else - { - $ref = $param; - - if ($param->value) - { - $lit = yy('Literal', $ref->name->value.' == null'); - $val = yy('Assign', yy('Value', $param->name), $param->value, '='); - - $exprs[] = yy('If', $lit, $val); - } - } - - if ( ! (isset($splats) && $splats)) - { - $vars[] = $ref; - } - } - - $was_empty = $this->body->is_empty(); - - if (isset($splats) && $splats) - { - array_unshift($exprs, $splats); - } - - if (count($exprs)) - { - $this->body->expressions = array_merge($this->body->expressions, $exprs); - } - - if ( ! (isset($splats) && $splats)) - { - foreach ($vars as $i => $v) - { - $options['scope']->parameter(($vars[$i] = $v->compile($options))); - } - } - - if ( ! ($was_empty || $this->no_return)) - { - $this->body->make_return(); - } - - $idt = $options['indent']; - $code = 'function'; - - if ($this->ctor) - { - $code .= ' '.$this->name; - } - - $code .= '('.implode(', ', $vars).') {'; - - if ( ! $this->body->is_empty()) - { - $code .= "\n".$this->body->compile_with_declarations($options)."\n{$this->tab}"; - } - - $code .= '}'; - - if ($this->ctor) - { - return $this->tab.$code; - } - - if ($this->bound) - { - return utility('bind')."({$code}, {$this->context})"; - } - - return ($this->front || $options['level'] >= LEVEL_ACCESS) ? "({$code})" : $code; - } - - function is_statement() - { - return !! $this->ctor; - } - - function jumps() - { - return FALSE; - } - - function traverse_children($cross_scope, $func) - { - if ($cross_scope) - { - return parent::traverse_children($cross_scope, $func); - } - - return NULL; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/comment.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/comment.php deleted file mode 100755 index 12555dd3bc1f64cf945a30195154bfc04f42daad..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/comment.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Comment extends yy_Base -{ - function constructor($comment) - { - $this->comment = $comment; - - return $this; - } - - function compile_node($options, $level = NULL) - { - $code = '/*'.multident($this->comment, $this->tab).'*/'; - - if ($level === LEVEL_TOP || $options['level'] === LEVEL_TOP) - { - $code = $options['indent'].$code; - } - - return $code; - } - - function is_statement() - { - return TRUE; - } - - function make_return() - { - return $this; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/existence.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/existence.php deleted file mode 100755 index fd338739f484f7b550c8d93252e6f40227eaf6ae..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/existence.php +++ /dev/null @@ -1,47 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Existence extends yy_Base -{ - public $children = array('expression'); - - function constructor($expression) - { - $this->expression = $expression; - - return $this; - } - - function compile_node($options = array()) - { - $code = $this->expression->compile($options, LEVEL_OP); - - if (preg_match(IDENTIFIER, $code) && ! $options['scope']->check($code)) - { - if ($this->negated) - { - $code = "typeof {$code} === \"undefined\" || {$code} === null"; - } - else - { - $code = "typeof {$code} !== \"undefined\" && {$code} !== null"; - } - } - else - { - $sym = $this->negated ? '==' : '!='; - $code = "{$code} {$sym} null"; - } - - return (isset($options['level']) && $options['level'] <= LEVEL_COND) ? $code : "({$code})"; - } - - function invert() - { - $this->negated = ! $this->negated; - return $this; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/extends.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/extends.php deleted file mode 100755 index a547e49ea347b11f014a26299659f18a21293e0f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/extends.php +++ /dev/null @@ -1,28 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Extends extends yy_Base -{ - public $children = array('child', 'parent'); - - function constructor($child, $parent) - { - $this->child = $child; - $this->parent = $parent; - - return $this; - } - - function compile($options) - { - utility('hasProp'); - - $tmp = yy('Call', yy('Value', yy('Literal', utility('extends'))), - array($this->child, $this->parent)); - - return $tmp->compile($options); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/for.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/for.php deleted file mode 100755 index 05c1119017c44186bd7cfef5787f22ac07bfd344..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/for.php +++ /dev/null @@ -1,258 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_For extends yy_Base -{ - public $children = array('body', 'source', 'guard', 'step'); - - function constructor($body, $source) - { - $this->source = $source['source']; - $this->guard = isset($source['guard']) ? $source['guard'] : NULL; - $this->step = isset($source['step']) ? $source['step'] : NULL; - $this->name = isset($source['name']) ? $source['name'] : NULL; - $this->index = isset($source['index']) ? $source['index'] : NULL; - - $this->body = yy_Block::wrap(array($body)); - - $this->own = (isset($source['own']) && $source['own']); - $this->object = (isset($source['object']) && $source['object']); - - if ($this->object) - { - $tmp = $this->name; - $this->name = $this->index; - $this->index = $tmp; - } - - if ($this->index instanceof yy_Value) - { - throw SyntaxError('index cannot be a pattern matching expression'); - } - - $this->range = $this->source instanceof yy_Value && $this->source->base instanceof yy_Range && - ! count($this->source->properties); - - $this->pattern = $this->name instanceof yy_Value; - - if ($this->range && $this->index) - { - throw SyntaxError('indexes do not apply to range loops'); - } - - if ($this->range && $this->pattern) - { - throw SyntaxError('cannot pattern match over range loops'); - } - - $this->returns = FALSE; - - return $this; - } - - function compile_node($options) - { - $body = yy_Block::wrap(array($this->body)); - - $last_jumps = last($body->expressions); - $last_jumps = $last_jumps ? $last_jumps->jumps() : FALSE; - - if ($last_jumps && $last_jumps instanceof yy_Return) - { - $this->returns = FALSE; - } - - if ($this->range) - { - $source = $this->source->base; - } - else - { - $source = $this->source; - } - - $scope = $options['scope']; - - $name = $this->name ? $this->name->compile($options, LEVEL_LIST) : FALSE; - $index = $this->index ? $this->index->compile($options, LEVEL_LIST) : FALSE; - - if ($name && ! $this->pattern) - { - $scope->find($name, array('immediate' => TRUE)); - } - - if ($index) - { - $scope->find($index, array('immediate' => TRUE)); - } - - if ($this->returns) - { - $rvar = $scope->free_variable('results'); - } - - $ivar = $this->range ? $name : $index; - $ivar = $ivar ? $ivar : $scope->free_variable('i'); - - if ($this->step && ! $this->range) - { - $stepvar = $scope->free_variable('step'); - } - - if ($this->pattern) - { - $name = $ivar; - } - - $var_part = ''; - $guard_part = ''; - $def_part = ''; - - $idt1 = $this->tab.TAB; - - if ($this->range) - { - $for_part = $source->compile(array_merge($options, array('index' => $ivar, 'step' => $this->step))); - } - else - { - $svar = $this->source->compile($options, LEVEL_LIST); - - if (($name || $this->own) && ! preg_match(IDENTIFIER, $svar)) - { - $ref = $scope->free_variable('ref'); - $def_part = "{$this->tab}{$ref} = {$svar};\n"; - $svar = $ref; - } - - if ($name && ! $this->pattern) - { - $name_part = "{$name} = {$svar}[{$ivar}]"; - } - - if ( ! $this->object) - { - $lvar = $scope->free_variable('len'); - $for_var_part = "{$ivar} = 0, {$lvar} = {$svar}.length"; - - if ($this->step) - { - $for_var_part .= ", {$stepvar} = ".$this->step->compile($options, LEVEL_OP); - } - - $step_part = $this->step ? "{$ivar} += {$stepvar}" : "{$ivar}++"; - $for_part = "{$for_var_part}; {$ivar} < {$lvar}; {$step_part}"; - } - } - - if ($this->returns) - { - $result_part = "{$this->tab}{$rvar} = [];\n"; - $return_result = "\n{$this->tab}return {$rvar};"; - $body = yy_Push::wrap($rvar, $body); - } - - if ($this->guard) - { - $body = yy_Block::wrap(array(yy('If', $this->guard, $body))); - } - - if ($this->pattern) - { - array_unshift($body->expressions, yy('Assign', $this->name, yy('Literal', "{$svar}[{$ivar}]"))); - } - - $def_part .= $this->pluck_direct_call($options, $body); - - if (isset($name_part) && $name_part) - { - $var_part = "\n{$idt1}{$name_part};"; - } - - if ($this->object) - { - $for_part = "{$ivar} in {$svar}"; - - if ($this->own) - { - $guard_part = "\n{$idt1}if (!".utility('hasProp').".call({$svar}, {$ivar})) continue;"; - } - } - - $body = $body->compile(array_merge($options, array('indent' => $idt1)), LEVEL_TOP); - - if ($body) - { - $body = "\n{$body}\n"; - } - - return - "{$def_part}" - . (isset($result_part) ? $result_part : '') - . "{$this->tab}for ({$for_part}) {{$guard_part}{$var_part}{$body}{$this->tab}}" - . (isset($return_result) ? $return_result : ''); - } - - function is_statement() - { - return TRUE; - } - - function jumps() - { - return call_user_func_array(array(yy('While'), __FUNCTION__), func_get_args()); - } - - function make_return() - { - $this->returns = TRUE; - return $this; - } - - function pluck_direct_call($options, $body) - { - $defs = ''; - - foreach ($body->expressions as $idx => $expr) - { - $expr = $expr->unwrap_all(); - - if ( ! ($expr instanceof yy_Call)) - { - continue; - } - - $val = $expr->variable->unwrap_all(); - - if ( ! ( ($val instanceof yy_Code) || - ($val instanceof yy_Value) && - (isset($val->base) && $val->base && ($val->base->unwrap_all() instanceof yy_Code) && - count($val->properties) === 1 && - isset($val->properties[0]->name) && - in_array($val->properties[0]->name['value'], array('call', 'apply'), TRUE)))) - { - continue; - } - - $fn = (isset($val->base) && $val->base) ? $val->base->unwrap_all() : $val; - $ref = yy('Literal', $options['scope']->free_variable('fn')); - $base = yy('Value', $ref); - - if (isset($val->base) && $val->base) - { - $val->base = $base; - $base = $val; - array_unshift($args, yy('Literal', 'this')); - } - - $body->expressions[$idx] = yy('Call', $base, $expr->args); - $tmp = yy('Assign', $ref, $fn); - $defs .= $this->tab.$tmp->compile($options, LEVEL_TOP).";\n"; - } - - return $defs; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/if.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/if.php deleted file mode 100755 index b4b0a23c8123d25aaa54001b8b9f544cdfed299c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/if.php +++ /dev/null @@ -1,146 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_If extends yy_Base -{ - public $children = array('condition', 'body', 'elsebody'); - - function constructor($condition, $body, $options = array()) - { - $this->condition = (isset($options['type']) && $options['type'] === 'unless') ? $condition->invert() : $condition; - $this->body = $body; - $this->else_body = NULL; - $this->is_chain = FALSE; - $this->soak = isset($options['soak']) ? $options['soak'] : NULL; - - return $this; - } - - function add_else($else_body) - { - if ($this->is_chain()) - { - $this->else_body_node()->add_else($else_body); - } - else - { - $this->is_chain = $else_body instanceof yy_If; - $this->else_body = $this->ensure_block($else_body); - } - - return $this; - } - - function body_node() - { - return $this->body ? $this->body->unwrap() : NULL; - } - - function compile_node($options = array()) - { - return $this->is_statement($options) ? $this->compile_statement($options) : $this->compile_expression($options); - } - - function compile_expression($options) - { - $cond = $this->condition->compile($options, LEVEL_COND); - $body = $this->body_node()->compile($options, LEVEL_LIST); - - $alt = ($tmp = $this->else_body_node()) ? $tmp->compile($options, LEVEL_LIST) : 'void 0'; - $code = "{$cond} ? {$body} : {$alt}"; - - return (isset($options['level']) && $options['level'] > LEVEL_COND) ? "({$code})" : $code; - } - - function compile_statement($options) - { - $child = del($options, 'chainChild'); - $cond = $this->condition->compile($options, LEVEL_PAREN); - $options['indent'] .= TAB; - $body = $this->ensure_block($this->body)->compile($options); - - if ($body) - { - $body = "\n{$body}\n{$this->tab}"; - } - - $if_part = "if ({$cond}) {{$body}}"; - - if ( ! $child) - { - $if_part = $this->tab.$if_part; - } - - if ( ! $this->else_body) - { - return $if_part; - } - - $ret = $if_part.' else '; - - if ($this->is_chain()) - { - $options['indent'] = $this->tab; - $options['chainChild'] = TRUE; - - $ret .= $this->else_body->unwrap()->compile($options, LEVEL_TOP); - } - else - { - $ret .= "{\n".$this->else_body->compile($options, LEVEL_TOP)."\n{$this->tab}}"; - } - - return $ret; - } - - function else_body_node() - { - return (isset($this->else_body) && $this->else_body) ? $this->else_body->unwrap() : NULL; - } - - function ensure_block($node) - { - return $node instanceof yy_Block ? $node : yy('Block', array($node)); - } - - function is_chain() - { - return $this->is_chain; - } - - function is_statement($options = array()) - { - return (isset($options['level']) && $options['level'] === LEVEL_TOP) || - $this->body_node()->is_statement($options) || - ( ($tmp = $this->else_body_node()) && $tmp && $tmp->is_statement($options)); - } - - function jumps($options = array()) - { - return $this->body->jumps($options) || - (isset($this->else_body) && $this->else_body && $this->else_body->jumps($options)); - } - - function make_return() - { - if ($this->body) - { - $this->body = yy('Block', array($this->body->make_return())); - } - - if ($this->else_body) - { - $this->else_body = yy('Block', array($this->else_body->make_return())); - } - - return $this; - } - - function unfold_soak() - { - return $this->soak ? $this : FALSE; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/in.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/in.php deleted file mode 100755 index ef849f657065e2345bf06c6f929bd759e023472e..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/in.php +++ /dev/null @@ -1,79 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_In extends yy_Base -{ - public $children = array('object', 'array'); - - function constructor($object = NULL, $array = NULL) - { - $this->array = $array; - $this->object = $object; - - return $this; - } - - function compile_node($options = array()) - { - if ($this->array instanceof yy_Value && $this->array->is_array()) - { - return $this->compile_or_test($options); - } - else - { - return $this->compile_loop_test($options); - } - } - - function compile_or_test($options) - { - list($sub, $ref) = $this->object->cache($options, LEVEL_OP); - list($cmp, $cnj) = $this->negated ? array(' !== ', ' && ') : array(' === ', ' || '); - - $tests = array(); - - foreach ($this->array->base->objects as $i => $item) - { - $tests[] = ($i ? $ref : $sub).$cmp.$item->compile($options, LEVEL_OP); - } - - if (count($tests) === 0) - { - return 'false'; - } - - $tests = implode($cnj, $tests); - - return (isset($options['level']) && $options['level'] < LEVEL_OP) ? $tests : "({$tests})"; - } - - function compile_loop_test($options) - { - list($sub, $ref) = $this->object->cache($options, LEVEL_LIST); - - $code = utility('indexOf').".call(".$this->array->compile($options, LEVEL_LIST).", {$ref}) " - .($this->negated ? '< 0' : '>= 0'); - - if ($sub === $ref) - { - return $code; - } - - $code = $sub.', '.$code; - return (isset($options['level']) && $options['level'] < LEVEL_LIST) ? $code : "({$code})"; - } - - function invert() - { - $this->negated = ! $this->negated; - return $this; - } - - function to_string($idt = '', $name = __CLASS__) - { - return parent::to_string($idt, $name.($this->negated ? '!' : '')); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/index.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/index.php deleted file mode 100755 index e6463ab74bf39b09996a3b1e5e91e0864def4e9c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/index.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Index extends yy_Base -{ - public $children = array('index'); - - function constructor($index) - { - $this->index = $index; - - return $this; - } - - function compile($options) - { - return ($this->proto ? '.prototype' : '').'['.$this->index->compile($options, LEVEL_PAREN).']'; - } - - function is_complex() - { - return $this->index->is_complex(); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/literal.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/literal.php deleted file mode 100755 index 23894d6f620dce51292793319e905096c8026b50..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/literal.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Literal extends yy_Base -{ - private $is_undefined = FALSE; - - function constructor($value) - { - $this->value = $value; - - return $this; - } - - function assigns($name) - { - return $name === $this->value; - } - - function compile_node($options) - { - if ($this->is_undefined()) - { - $code = $options['level'] >= LEVEL_ACCESS ? '(void 0)' : 'void 0'; - } - else if (isset($this->value->reserved) && $this->value->reserved) - { - $code = '"'.$this->value.'"'; - } - else - { - $code = ''.$this->value; - } - - return $this->is_statement() ? "{$this->tab}{$code};" : $code; - } - - function is_assignable() - { - return preg_match(IDENTIFIER, ''.$this->value); - } - - function is_complex() - { - return FALSE; - } - - function is_statement() - { - return in_array(''.$this->value, array('break', 'continue', 'debugger'), TRUE); - } - - function is_undefined($set = NULL) - { - if ($set !== NULL) - { - $this->is_undefined = !! $set; - } - - return $this->is_undefined; - } - - function jumps($options = array()) - { - if ( ! $this->is_statement()) - { - return FALSE; - } - - if ( ! ((isset($options['loop']) && $options['loop']) || - (isset($options['block']) && $options['block']) && (''.$this->value !== 'continue'))) - { - return $this; - } - else - { - return FALSE; - } - } - - function make_return() - { - return $this->is_statement() ? $this : yy('Return', $this); - } - - function to_string($idt = '', $name = __CLASS__) - { - return ' "'.$this->value.'"'; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/obj.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/obj.php deleted file mode 100755 index 73e09c3365c6c5e27315c9fd54c9a7ddecc52f9a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/obj.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Obj extends yy_Base -{ - public $children = array('properties'); - - function constructor($props, $generated = FALSE) - { - $this->generated = $generated; - - $this->properties = $props ? $props : array(); - $this->objects = $this->properties; - - return $this; - } - - function assigns($name) - { - foreach ($this->properties as $prop) - { - if ($prop->assigns($name)) - { - return TRUE; - } - } - - return FALSE; - } - - function compile_node($options) - { - $props = $this->properties; - - if ( ! count($props)) - { - return ($this->front ? '({})' : '{}'); - } - - if ($this->generated) - { - foreach ($props as $node) - { - if ($node instanceof yy_Value) - { - throw new Error('cannot have an implicit value in an implicit object'); - } - } - } - - $idt = $options['indent'] .= TAB; - $last_non_com = $this->last_non_comment($this->properties); - - foreach ($props as $i => $prop) - { - if ($i === count($props) - 1) - { - $join = ''; - } - else if ($prop === $last_non_com || $prop instanceof yy_Comment) - { - $join = "\n"; - } - else - { - $join = ",\n"; - } - - $indent = $prop instanceof yy_Comment ? '' : $idt; - - if ($prop instanceof yy_Value && (isset($prop->this) && $prop->this)) - { - $prop = yy('Assign', $prop->properties[0]->name, $prop, 'object'); - } - - if ( ! ($prop instanceof yy_Comment)) - { - if ( ! ($prop instanceof yy_Assign)) - { - $prop = yy('Assign', $prop, $prop, 'object'); - } - - if (isset($prop->variable->base)) - { - $prop->variable->base->as_key = TRUE; - } - else - { - $prop->variable->as_key = TRUE; - } - } - - $props[$i] = $indent.$prop->compile($options, LEVEL_TOP).$join; - } - - $props = implode('', $props); - $obj = '{'.($props ? "\n{$props}\n{$this->tab}" : '').'}'; - - return ($this->front ? "({$obj})" : $obj); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/op.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/op.php deleted file mode 100755 index 6d84fa2db86dd26da99e4ace33cab721ea54e500..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/op.php +++ /dev/null @@ -1,230 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Op extends yy_Base -{ - static $CONVERSIONS = array( - '==' => '===', - '!=' => '!==', - 'of' => 'in' - ); - - static $INVERSIONS = array( - '!==' => '===', - '===' => '!==' - ); - - public $children = array('first', 'second'); - - public $operator = NULL; - - function constructor($op, $first, $second = NULL, $flip = NULL) - { - if ($op === 'in') - { - return yy('In', $first, $second); - } - - if ($op === 'do') - { - $call = yy('Call', $first, isset($first->params) ? $first->params : array()); - $call->do = TRUE; - - return $call; - } - - if ($op === 'new') - { - if ($first instanceof yy_Call && ! (isset($first->do) && $first->do)) - { - return $first->new_instance(); - } - - if ($first instanceof yy_Code && $first->bound || (isset($first->do) && $first->do)) - { - $first = yy('Parens', $first); - } - } - - $this->operator = isset(self::$CONVERSIONS[$op]) ? self::$CONVERSIONS[$op] : $op; - $this->first = $first; - $this->second = $second; - $this->flip = !! $flip; - - return $this; - } - - function compile_chain($options) - { - $tmp = $this->first->second->cache($options); - - $this->first->second = $tmp[0]; - $shared = $tmp[1]; - - $fst = $this->first->compile($options, LEVEL_OP); - $code = "{$fst} ".($this->invert() ? '&&' : '||').' '.$shared->compile($options).' ' - .$this->operator.' '.$this->second->compile($options, LEVEL_OP); - - return "({$code})"; - } - - function compile_existence($options) - { - if ($this->first->is_complex()) - { - $ref = yy('Literal', $options['scope']->free_variable('ref')); - $fst = yy('Parens', yy('Assign', $ref, $this->first)); - } - else - { - $fst = $this->first; - $ref = $fst; - } - - $tmp = yy('If', yy('Existence', $fst), $ref, array('type' => 'if')); - $tmp->add_else($this->second); - - return $tmp->compile($options); - } - - function compile_node($options, $level = NULL) - { - if ($this->is_unary()) - { - return $this->compile_unary($options); - } - - if ($this->is_chainable() && $this->first->is_chainable()) - { - return $this->compile_chain($options); - } - - if ($this->operator === '?') - { - return $this->compile_existence($options); - } - - $this->first->front = $this->front; - - $code = $this->first->compile($options, LEVEL_OP).' '.$this->operator.' ' - .$this->second->compile($options, LEVEL_OP); - - return $options['level'] <= LEVEL_OP ? $code : "({$code})"; - } - - function compile_unary($options) - { - $parts = array($op = $this->operator); - - if (in_array($op, array('new', 'typeof', 'delete'), TRUE) || - in_array($op, array('+', '-'), TRUE) && - $this->first instanceof yy_Op && $this->first->operator === $op) - { - $parts[] = ' '; - } - - if ($op === 'new' && $this->first->is_statement($options)) - { - $this->first = yy('Parens', $this->first); - } - - $parts[] = $this->first->compile($options, LEVEL_OP); - - if ($this->flip) - { - $parts = array_reverse($parts); - } - - return implode('', $parts); - } - - function is_chainable() - { - return in_array($this->operator, array('<', '>', '>=', '<=', '===', '!=='), TRUE); - } - - function invert() - { - if ($this->is_chainable() && $this->first->is_chainable()) - { - $all_invertable = TRUE; - $curr = $this; - - while ($curr && (isset($curr->operator) && $curr->operator)) - { - $all_invertable = $all_invertable && isset(self::$INVERSIONS[$curr->operator]); - $curr = $curr->first; - } - - if ( ! $all_invertable) - { - $tmp = yy('Parens', $this); - return $tmp->invert(); - } - - $curr = $this; - - while ($curr && (isset($curr->operator) && $curr->operator)) - { - $curr->invert = ! (isset($curr->invert) && $curr->invert); - $curr->operator = self::$INVERSIONS[$curr->operator]; - $curr = $curr->first; - } - - return $this; - } - else if (isset(self::$INVERSIONS[$this->operator]) && ($op = self::$INVERSIONS[$this->operator])) - { - $this->operator = $op; - - if ($this->first->unwrap() instanceof yy_Op) - { - $this->first->invert(); - } - - return $this; - } - else if ($this->second) - { - $tmp = yy('Parens', $this); - return $tmp->invert(); - } - else if ($this->operator === '!' && (($fst = $this->first->unwrap()) instanceof yy_Op) && - in_array($fst->operator, array('!', 'in', 'instanceof'), TRUE)) - { - return $fst; - } - else - { - return yy('Op', '!', $this); - } - } - - function is_simple_number() - { - return FALSE; - } - - function is_unary() - { - return ! (isset($this->second) && $this->second); - } - - function unfold_soak($options) - { - if (in_array($this->operator, array('++', '--', 'delete'), TRUE)) - { - return unfold_soak($options, $this, 'first'); - } - - return NULL; - } - - function to_string($idt = '', $name = __CLASS__) - { - return parent::to_string($idt, $name.' '.$this->operator); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/param.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/param.php deleted file mode 100755 index ed25f84575fb6b21d8ec754d28116e49496f7e6f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/param.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Param extends yy_Base -{ - public $children = array('name', 'value'); - - function constructor($name, $value = NULL, $splat = NULL) - { - $this->name = $name; - $this->value = $value; - $this->splat = $splat; - - return $this; - } - - function as_reference($options) - { - if (isset($this->reference) && $this->reference) - { - return $this->reference; - } - - $node = $this->name; - - if (isset($node->this) && $node->this) - { - $node = $node->properties[0]->name; - - if (isset($this->value->reserved) && $this->value->reserved) - { - $node = yy('Literal', '_'.$node->value); - } - } - else if ($node->is_complex()) - { - $node = yy('Literal', $options['scope']->free_variable('arg')); - } - - $node = yy('Value', $node); - - if ($this->splat) - { - $node = yy('Splat', $node); - } - - return ($this->reference = $node); - } - - function compile($options, $level = NULL) - { - return $this->name->compile($options, LEVEL_LIST); - } - - function is_complex() - { - return $this->name->is_complex(); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/parens.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/parens.php deleted file mode 100755 index 47e508d5e7777e77e9cb213a815e5a77710cb8bc..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/parens.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Parens extends yy_Base -{ - public $children = array('body'); - - public function constructor($body) - { - $this->body = $body; - - return $this; - } - - public function compile_node($options = array()) - { - $expr = $this->body->unwrap(); - - if ($expr instanceof yy_Value && $expr->is_atomic()) - { - $expr->front = $this->front; - return $expr->compile($options); - } - - $code = $expr->compile($options, LEVEL_PAREN); - - $bare = $options['level'] < LEVEL_OP && ($expr instanceof yy_Op || $expr instanceof yy_Call || - ($expr instanceof yy_For && $expr->returns)); - - return $bare ? $code : "({$code})"; - } - - public function is_complex() - { - return $this->body->is_complex(); - } - - public function make_return() - { - return $this->body->make_return(); - } - - public function unwrap() - { - return $this->body; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/push.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/push.php deleted file mode 100755 index d90ec8bc8a100a899c8352bdb3fa05ab18675d6a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/push.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Push -{ - static function wrap($name, $exps) - { - if ($exps->is_empty() || last($exps->expressions)->jumps()) - { - return $exps; - } - - return $exps->push(yy('Call', yy('Value', yy('Literal', $name), - array(yy('Access', yy('Literal', 'push')))), array($exps->pop()))); - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/range.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/range.php deleted file mode 100755 index 2c201b7b6e24f37d48d66da3871e245abd93246f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/range.php +++ /dev/null @@ -1,152 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Range extends yy_Base -{ - public $children = array('from', 'to'); - - public $from_num = 0; - public $to_num = 0; - - function constructor($from, $to, $tag) - { - $this->from = $from; - $this->to = $to; - $this->exclusive = $tag === 'exclusive'; - $this->equals = $this->exclusive ? '' : '='; - - return $this; - } - - function compile_array($options) - { - if ( (isset($this->from_num) && $this->from_num) && - (isset($this->to_num) && $this->to_num) && abs($this->from_num - $this->to_num) <= 20) - { - $range = range($this->from_num, $this->to_num); - - if ($this->exclusive) - { - array_pop($range); - } - - return '['.implode(', ', $range).']'; - } - - $idt = $this->tab.TAB; - $i = $options['scope']->free_variable('i'); - $result = $options['scope']->free_variable('result'); - $pre = "\n{$idt}{$result} = [];"; - - if ( (isset($this->from_num) && $this->from_num) && - (isset($this->to_num) && $this->to_num)) - { - $options['index'] = $i; - $body = $this->compile_simple($options); - } - else - { - $vars = "{$i} = {$this->from}".($this->to !== $this->to_var ? ", {$this->to}" : ''); - $cond = "{$this->from_var} <= {$this->to_var}"; - $body = "var {$vars}; {$cond} ? {$i} <{$this->equals} {$this->to_var} : {$i} >{$this->equals} {$this->to_var}; {$cond} ? {$i}++ : {$i}--"; - } - - $post = "{ {$result}.push({$i}); }\n{$idt}return {$result};\n{$options['indent']}"; - - return "(function() {{$pre}\n{$idt}for ({$body}){$post}}).apply(this, arguments)"; - } - - function compile_node($options) - { - $this->compile_variables($options); - - if ( ! (isset($options['index']) && $options['index'])) - { - return $this->compile_array($options); - } - - if ($this->from_num && $this->to_num) - { - return $this->compile_simple($options); - } - - $idx = del($options, 'index'); - $step = del($options, 'step'); - - if ($step) - { - $stepvar = $options['scope']->free_variable('step'); - } - - $var_part = "{$idx} = {$this->from}".($this->to !== $this->to_var ? ", {$this->to}" : '') - .($step ? ", {$stepvar} = ".$step->compile($options) : ''); - - $cond = "{$this->from_var} <= {$this->to_var}"; - $cond_part = "{$cond} ? {$idx} <{$this->equals} {$this->to_var} : {$idx} >{$this->equals} {$this->to_var}"; - $step_part = $step ? "{$idx} += {$stepvar}" : "{$cond} ? {$idx}++ : {$idx}--"; - - return "{$var_part}; {$cond_part}; {$step_part}"; - } - - function compile_simple($options) - { - list($from, $to) = array($this->from_num, $this->to_num); - - $idx = del($options, 'index'); - $step = del($options, 'step'); - - if ($step) - { - $stepvar = $options['scope']->free_variable('step'); - } - - $var_part = "{$idx} = {$from}"; - - if ($step) - { - $var_part .= ", {$stepvar} = ".$step->compile($options); - } - - $cond_part = $from <= $to ? "{$idx} <{$this->equals} {$to}" : "{$idx} >{$this->equals} {$to}"; - - if ($step) - { - $step_part = "{$idx} += {$stepvar}"; - } - else - { - $step_part = $from <= $to ? "{$idx}++" : "{$idx}--"; - } - - return "{$var_part}; {$cond_part}; {$step_part}"; - } - - function compile_variables($options) - { - $options = array_merge($options, array('top' => TRUE)); - - list($this->from, $this->from_var) = $this->from->cache($options, LEVEL_LIST); - list($this->to, $this->to_var) = $this->to->cache($options, LEVEL_LIST); - - preg_match(SIMPLENUM, $this->from_var, $from_num); - preg_match(SIMPLENUM, $this->to_var, $to_num); - - $this->from_num = isset($from_num[0]) ? $from_num[0] : NULL; - $this->to_num = isset($to_num[0]) ? $to_num[0] : NULL; - - $parts = array(); - - if ($this->from !== $this->from_var) - { - $parts[] = $this->from; - } - - if ($this->to !== $this->to_var) - { - $parts[] = $this->to; - } - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/return.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/return.php deleted file mode 100755 index 8cb8054964ac8935f0699f47aac859212d21bea6..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/return.php +++ /dev/null @@ -1,56 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Return extends yy_Base -{ - public $children = array('expression'); - - function constructor($expr = NULL) - { - if ($expr && ! ($expr->unwrap()->is_undefined())) - { - $this->expression = $expr; - } - - return $this; - } - - function compile($options, $level = NULL) - { - $expr = (isset($this->expression) && $this->expression) ? - $this->expression->make_return() : NULL; - - if ($expr && ! ($expr instanceof yy_Return)) - { - return $expr->compile($options, $level); - } - else - { - return parent::compile($options, $level); - } - } - - function compile_node($options) - { - return $this->tab.'return'.(isset($this->expression) && $this->expression ? - ' '.$this->expression->compile($options, LEVEL_PAREN) : '').';'; - } - - function is_statement() - { - return TRUE; - } - - function jumps() - { - return $this; - } - - function make_return() - { - return $this; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/slice.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/slice.php deleted file mode 100755 index bae5a9773446b9f8ced71e6678e8c56d8bb82eed..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/slice.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Slice extends yy_Base -{ - public $children = array('range'); - - function constructor($range) - { - parent::constructor(); - - $this->range = $range; - - return $this; - } - - function compile_node($options) - { - $to = $this->range->to; - $from = $this->range->from; - - $from_str = $from ? $from->compile($options, LEVEL_PAREN) : '0'; - $compiled = $to ? $to->compile($options, LEVEL_PAREN) : ''; - - if ($to && ! ( ! $this->range->exclusive && intval($compiled) === -1)) - { - $to_str = ', '; - - if ($this->range->exclusive) - { - $to_str .= $compiled; - } - else if (preg_match(SIMPLENUM, $compiled)) - { - $to_str .= (intval($compiled) + 1); - } - else - { - $to_str .= "({$compiled} + 1) || 9e9"; - } - } - - return ".slice({$from_str}".(isset($to_str) ? $to_str : '').')'; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/splat.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/splat.php deleted file mode 100755 index 0490358f5a182a7e071be438721c9230813cf815..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/splat.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Splat extends yy_Base -{ - public $children = array('name'); - - function constructor($name) - { - if (is_object($name)) - { - $this->name = $name; - } - else - { - $this->name = yy('Literal', $name); - } - - return $this; - } - - function assigns($name) - { - return $this->name->assigns($name); - } - - function compile($options) - { - if (isset($this->index) && $this->index) - { - return $this->compile_param($options); - } - else - { - return $this->name->compile($options); - } - } - - static function compile_splatted_array($options, $list, $apply = FALSE) - { - $index = -1; - - while (isset($list[++$index]) && ($node = $list[$index]) && ! ($node instanceof yy_Splat)) - { - continue; - } - - if ($index >= count($list)) - { - return ''; - } - - if (count($list) === 1) - { - $code = $list[0]->compile($options, LEVEL_LIST); - - if ($apply) - { - return $code; - } - - return utility('slice').".call({$code})"; - } - - $args = array_slice($list, $index); - - foreach ($args as $i => $node) - { - $code = $node->compile($options, LEVEL_LIST); - $args[$i] = ($node instanceof yy_Splat) ? utility('slice').".call({$code})" : "[{$code}]"; - } - - if ($index === 0) - { - return $args[0].'.concat('.implode(', ', array_slice($args, 1)).')'; - } - - $base = array(); - - foreach (array_slice($list, 0, $index) as $node) - { - $base[] = $node->compile($options, LEVEL_LIST); - } - - return '['.implode(', ', $base).'].concat('.implode(', ', $args).')'; - } - - function is_assignable() - { - return TRUE; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/switch.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/switch.php deleted file mode 100755 index e867768876791353bc8215216e3c1f0352bf7a7c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/switch.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Switch extends yy_Base -{ - public $children = array('subject', 'cases', 'otherwise'); - - function constructor($subject = NULL, $cases = array(), $otherwise = NULL) - { - $this->subject = $subject; - $this->cases = $cases; - $this->otherwise = $otherwise; - - return $this; - } - - function compile_node($options) - { - $idt1 = $options['indent'].TAB; - $idt2 = $options['indent'] = $idt1.TAB; - - $code = $this->tab.'switch (' - .($this->subject ? $this->subject->compile($options, LEVEL_PAREN) : 'false') - .") {\n"; - - foreach ($this->cases as $i => $case) - { - list($conditions, $block) = $case; - - foreach (flatten(array($conditions)) as $cond) - { - if ( ! $this->subject) - { - $cond = $cond->invert(); - } - - $code .= $idt1.'case '.$cond->compile($options, LEVEL_PAREN).":\n"; - } - - if ($body = $block->compile($options, LEVEL_TOP)) - { - $code .= $body."\n"; - } - - if ($i === (count($this->cases) - 1) && ! $this->otherwise) - { - break; - } - - $expr = $this->last_non_comment($block->expressions); - - if ($expr instanceof yy_Return || - ($expr instanceof yy_Literal && $expr->jumps() && ''.$expr->value !== 'debugger')) - { - continue; - } - - $code .= $idt2."break;\n"; - } - - if ($this->otherwise && count($this->otherwise->expressions)) - { - $code .= $idt1."default:\n".$this->otherwise->compile($options, LEVEL_TOP)."\n"; - } - - return $code.$this->tab.'}'; - } - - function is_statement() - { - return TRUE; - } - - function jumps($options = array()) - { - if ( ! isset($options['block'])) - { - $options['block'] = TRUE; - } - - foreach ($this->cases as $case) - { - list($conds, $block) = $case; - - if ($block->jumps($options)) - { - return $block; - } - } - - if (isset($this->otherwise) && $this->otherwise) - { - return $this->otherwise->jumps($options); - } - - return FALSE; - } - - function make_return() - { - foreach ($this->cases as $pair) - { - $pair[1]->make_return(); - } - - if (isset($this->otherwise) && $this->otherwise) - { - $this->otherwise->make_return(); - } - - return $this; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/throw.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/throw.php deleted file mode 100755 index 3a2cf39a2509d7feb7dc61b46a3293df54c884af..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/throw.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Throw extends yy_Base -{ - public $children = array('expression'); - - function constructor($expression) - { - $this->expression = $expression; - - return $this; - } - - function compile_node($options = array()) - { - return $this->tab.'throw '.$this->expression->compile($options).';'; - } - - function is_statement() - { - return TRUE; - } - - function jumps() - { - return FALSE; - } - - function make_return() - { - return $this; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/try.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/try.php deleted file mode 100755 index 0334a685cafdd4ed2968d08bc6fd2bace6fe66f7..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/try.php +++ /dev/null @@ -1,67 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Try extends yy_Base -{ - public $children = array('attempt', 'recovery', 'ensure'); - - function constructor($attempt = NULL, $error = NULL, $recovery = NULL, $ensure = NULL) - { - $this->attempt = $attempt; - $this->error = $error; - $this->recovery = $recovery; - $this->ensure = $ensure; - - return $this; - } - - function compile_node($options = array()) - { - $options['indent'] .= TAB; - $error_part = $this->error ? ' ('.$this->error->compile($options).') ' : ' '; - $catch_part = ''; - - if ($this->recovery) - { - $catch_part = " catch{$error_part}{\n".$this->recovery->compile($options, LEVEL_TOP)."\n{$this->tab}}"; - } - else if ( ! ($this->ensure || $this->recovery)) - { - $catch_part = ' catch (_e) {}'; - } - - return - "{$this->tab}try {\n" - . $this->attempt->compile($options, LEVEL_TOP)."\n" - . "{$this->tab}}{$catch_part}" - . ($this->ensure ? " finally {\n".$this->ensure->compile($options, LEVEL_TOP)."\n{$this->tab}}" : ''); - } - - function is_statement() - { - return TRUE; - } - - function jumps($options = array()) - { - return $this->attempt->jumps($options) || (isset($this->recovery) && $this->recovery->jumps($options)); - } - - function make_return() - { - if ($this->attempt) - { - $this->attempt = $this->attempt->make_return(); - } - - if ($this->recovery) - { - $this->recovery = $this->recovery->make_return(); - } - - return $this; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/value.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/value.php deleted file mode 100755 index f11e7c5d4f0a01c4109d1288540b1964c0760173..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/value.php +++ /dev/null @@ -1,218 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_Value extends yy_Base -{ - public $children = array('base', 'properties'); - - function constructor($base = NULL, $props = NULL, $tag = NULL) - { - if ( ! $props && $base instanceof yy_Value) - { - return $base; - } - - $this->base = $base; - $this->properties = $props ? $props : array(); - - if ($tag) - { - $this->{$tag} = TRUE; - } - - return $this; - } - - function assigns($name) - { - return ! count($this->properties) && $this->base->assigns($name); - } - - function cache_reference($options) - { - $name = last($this->properties); - - if (count($this->properties) < 2 && ! $this->base->is_complex() && ! ($name && $name->is_complex())) - { - return array($this, $this); - } - - $base = yy('Value', $this->base, array_slice($this->properties, 0, -1)); - $bref = NULL; - - if ($base->is_complex()) - { - $bref = yy('Literal', $options['scope']->free_variable('base')); - $base = yy('Value', yy('Parens', yy('Assign', $bref, $base))); - } - - if ( ! $name) - { - return array($base, $bref); - } - - if ($name->is_complex()) - { - $nref = yy('Literal', $options['scope']->free_variable('name')); - $name = yy('Index', yy('Assign', $nref, $name->index)); - $nref = yy('Index', $nref); - } - - $base->push($name); - - return array($base, yy('Value', isset($bref) ? $bref : $base->base, - array(isset($nref) ? $nref : $name))); - } - - function compile_node($options) - { - $this->base->front = $this->front; - $props = $this->properties; - - $code = $this->base->compile($options, count($props) ? LEVEL_ACCESS : NULL); - - if ($props && $props[0] instanceof yy_Access && $this->is_simple_number()) - { - $code = "($code)"; - } - - foreach ($props as $prop) - { - $code .= $prop->compile($options); - } - - return $code; - } - - function push($prop) - { - $this->properties[] = $prop; - - return $this; - } - - function has_properties() - { - return !! count($this->properties); - } - - function is_array() - { - return ! count($this->properties) && $this->base instanceof yy_Arr; - } - - function is_assignable() - { - return $this->has_properties() || $this->base->is_assignable(); - } - - function is_atomic() - { - foreach (array_merge($this->properties, array($this->base)) as $node) - { - if ((isset($node->soak) && $node->soak) || $node instanceof yy_Call) - { - return FALSE; - } - } - - return TRUE; - } - - function is_complex() - { - return $this->has_properties() || $this->base->is_complex(); - } - - function is_object($only_generated = FALSE) - { - if (count($this->properties)) - { - return FALSE; - } - - return ($this->base instanceof yy_Obj) && ( ! $only_generated || $this->base->generated); - } - - function is_simple_number() - { - return ($this->base instanceof yy_Literal) && preg_match(SIMPLENUM, ''.$this->base->value); - } - - function is_splice() - { - return last($this->properties) instanceof yy_Slice; - } - - function is_statement($options) - { - return ! count($this->properties) && $this->base->is_statement($options); - } - - function jumps($options = array()) - { - return ! count($this->properties) && $this->base->jumps($options); - } - - function make_return() - { - if (count($this->properties)) - { - return parent::make_return(); - } - else - { - return $this->base->make_return(); - } - } - - function unfold_soak($options) - { - if (isset($this->unfolded_soak)) - { - return $this->unfolded_soak; - } - - $result = NULL; - - if (($ifn = $this->base->unfold_soak($options))) - { - $ifn->body->properties = array_merge($ifn->body->properties, $this->properties); - $result = $ifn; - } - else - { - foreach ($this->properties as $i => $prop) - { - if (isset($prop->soak) && $prop->soak) - { - $prop->soak = FALSE; - - $fst = yy('Value', $this->base, array_slice($this->properties, 0, $i)); - $snd = yy('Value', $this->base, array_slice($this->properties, $i)); - - if ($fst->is_complex()) - { - $ref = yy('Literal', $options['scope']->free_variable('ref')); - $fst = yy('Parens', yy('Assign', $ref, $fst)); - $snd->base = $ref; - } - - $result = yy('If', yy('Existence', $fst), $snd, array('soak' => TRUE)); - } - } - } - - $this->unfolded_soak = $result ? $result : FALSE; - - return $this->unfolded_soak; - } - - function unwrap() - { - return count($this->properties) ? $this : $this->base; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/while.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/while.php deleted file mode 100755 index e19e7612d6c9aaaf7106640ff60d9f267e78d3cc..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/nodes/while.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -namespace CoffeeScript; - -class yy_While extends yy_Base -{ - public $children = array('condition', 'guard', 'body'); - - public $returns = FALSE; - - function constructor($condition = NULL, $options = NULL) - { - $this->condition = (isset($options['invert']) && $options['invert']) ? - $condition->invert() : $condition; - - $this->guard = isset($options['guard']) ? $options['guard'] : NULL; - - return $this; - } - - function add_body($body) - { - $this->body = $body; - return $this; - } - - function compile_node($options) - { - $options['indent'] .= TAB; - $set = ''; - $body = $this->body; - - if ($body->is_empty()) - { - $body = ''; - } - else - { - if ($options['level'] > LEVEL_TOP || $this->returns) - { - $rvar = $options['scope']->free_variable('results'); - $set = "{$this->tab}{$rvar} = [];\n"; - - if ($body) - { - $body = yy_Push::wrap($rvar, $body); - } - } - - if ($this->guard) - { - $body = yy_Block::wrap(array(yy('If', $this->guard, $body))); - } - - $body = "\n".$body->compile($options, LEVEL_TOP)."\n{$this->tab}"; - } - - $code = $set.$this->tab.'while ('.$this->condition->compile($options, LEVEL_PAREN).") {{$body}}"; - - if ($this->returns) - { - $code .= "\n{$this->tab}return {$rvar};"; - } - - return $code; - } - - function is_statement() - { - return TRUE; - } - - function jumps() - { - $expressions = isset($this->body->expressions) ? $this->body->expressions : array(); - - if ( ! count($expressions)) - { - return FALSE; - } - - foreach ($expressions as $node) - { - if ($node->jumps(array('loop' => TRUE))) - { - return $node; - } - } - - return FALSE; - } - - function make_return() - { - $this->returns = TRUE; - - return $this; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/parser.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/parser.php deleted file mode 100755 index 65ad16b719d033418d0fb81e4e1776f841268fc2..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/parser.php +++ /dev/null @@ -1,3291 +0,0 @@ -<?php -namespace CoffeeScript; -use \ArrayAccess as ArrayAccess; -/* Driver template for the PHP_ParserGenerator parser generator. (PHP port of LEMON) -*/ - -/** - * This can be used to store both the string representation of - * a token, and any useful meta-data associated with the token. - * - * meta-data should be stored as an array - */ -class yyToken implements ArrayAccess -{ - public $string = ''; - public $metadata = array(); - - function __construct($s, $m = array()) - { - if ($s instanceof yyToken) { - $this->string = $s->string; - $this->metadata = $s->metadata; - } else { - $this->string = (string) $s; - if ($m instanceof yyToken) { - $this->metadata = $m->metadata; - } elseif (is_array($m)) { - $this->metadata = $m; - } - } - } - - function __toString() - { - return $this->string; - } - - function offsetExists($offset) - { - return isset($this->metadata[$offset]); - } - - function offsetGet($offset) - { - return $this->metadata[$offset]; - } - - function offsetSet($offset, $value) - { - if ($offset === null) { - if (isset($value[0])) { - $x = ($value instanceof yyToken) ? - $value->metadata : $value; - $this->metadata = array_merge($this->metadata, $x); - return; - } - $offset = count($this->metadata); - } - if ($value === null) { - return; - } - if ($value instanceof yyToken) { - if ($value->metadata) { - $this->metadata[$offset] = $value->metadata; - } - } elseif ($value) { - $this->metadata[$offset] = $value; - } - } - - function offsetUnset($offset) - { - unset($this->metadata[$offset]); - } -} - -/** The following structure represents a single element of the - * parser's stack. Information stored includes: - * - * + The state number for the parser at this level of the stack. - * - * + The value of the token stored at this level of the stack. - * (In other words, the "major" token.) - * - * + The semantic value stored at this level of the stack. This is - * the information used by the action routines in the grammar. - * It is sometimes called the "minor" token. - */ -class yyStackEntry -{ - public $stateno; /* The state-number */ - public $major; /* The major token value. This is the code - ** number for the token at this stack level */ - public $minor; /* The user-supplied minor token value. This - ** is the value of the token */ - - public $generated = FALSE; -}; - -// code external to the class is included here - -// declare_class is output here -#line 2 "/var/www/coffeescript-php/grammar.y" - class Parser #line 104 "/var/www/coffeescript-php/grammar.php" -{ - static $LINE = 0; - static $FILE = 'unknown'; - -/* First off, code is included which follows the "include_class" declaration -** in the input file. */ - -/* Next is all token values, as class constants -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ - const YY_POST_IF = 1; - const YY_IF = 2; - const YY_ELSE = 3; - const YY_FOR = 4; - const YY_DO = 5; - const YY_WHILE = 6; - const YY_UNTIL = 7; - const YY_LOOP = 8; - const YY_SUPER = 9; - const YY_CLASS = 10; - const YY_FORIN = 11; - const YY_FOROF = 12; - const YY_BY = 13; - const YY_WHEN = 14; - const YY_EQUALS = 15; - const YY_COLON = 16; - const YY_COMPOUND_ASSIGN = 17; - const YY_RETURN = 18; - const YY_THROW = 19; - const YY_EXTENDS = 20; - const YY_INDENT = 21; - const YY_OUTDENT = 22; - const YY_LOGIC = 23; - const YY_COMPARE = 24; - const YY_RELATION = 25; - const YY_SHIFT = 26; - const YY_PLUS = 27; - const YY_MINUS = 28; - const YY_MATH = 29; - const YY_UNARY = 30; - const YY_EXISTENTIAL = 31; - const YY_INCREMENT = 32; - const YY_DECREMENT = 33; - const YY_CALL_START = 34; - const YY_CALL_END = 35; - const YY_ACCESSOR = 36; - const YY_EXISTENTIAL_ACCESSOR = 37; - const YY_PROTOTYPE = 38; - const YY_TERMINATOR = 39; - const YY_STATEMENT = 40; - const YY_IDENTIFIER = 41; - const YY_NUMBER = 42; - const YY_STRING = 43; - const YY_JS = 44; - const YY_REGEX = 45; - const YY_BOOL = 46; - const YY_HERECOMMENT = 47; - const YY_PARAM_START = 48; - const YY_PARAM_END = 49; - const YY_FUNC = 50; - const YY_BOUND_FUNC = 51; - const YY_COMMA = 52; - const YY_RANGE_EXCLUSIVE = 53; - const YY_INDEX_START = 54; - const YY_INDEX_END = 55; - const YY_INDEX_SOAK = 56; - const YY_INDEX_PROTO = 57; - const YY_OBJECT_START = 58; - const YY_OBJECT_END = 59; - const YY_FUNC_EXIST = 60; - const YY_THIS = 61; - const YY_AT_SIGN = 62; - const YY_ARRAY_START = 63; - const YY_ARRAY_END = 64; - const YY_RANGE_INCLUSIVE = 65; - const YY_TRY = 66; - const YY_FINALLY = 67; - const YY_CATCH = 68; - const YY_PAREN_START = 69; - const YY_PAREN_END = 70; - const YY_OWN = 71; - const YY_SWITCH = 72; - const YY_LEADING_WHEN = 73; - const YY_NO_ACTION = 510; - const YY_ACCEPT_ACTION = 509; - const YY_ERROR_ACTION = 508; - -/* Next are that tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < self::YYNSTATE Shift N. That is, -** push the lookahead -** token onto the stack -** and goto state N. -** -** self::YYNSTATE <= N < self::YYNSTATE+self::YYNRULE Reduce by rule N-YYNSTATE. -** -** N == self::YYNSTATE+self::YYNRULE A syntax error has occurred. -** -** N == self::YYNSTATE+self::YYNRULE+1 The parser accepts its -** input. (and concludes parsing) -** -** N == self::YYNSTATE+self::YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large static array $yy_action. -** Given state S and lookahead X, the action is computed as -** -** self::$yy_action[self::$yy_shift_ofst[S] + X ] -** -** If the index value self::$yy_shift_ofst[S]+X is out of range or if the value -** self::$yy_lookahead[self::$yy_shift_ofst[S]+X] is not equal to X or if -** self::$yy_shift_ofst[S] is equal to self::YY_SHIFT_USE_DFLT, it means that -** the action is not in the table and that self::$yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the static $yy_reduce_ofst array is used in place of -** the static $yy_shift_ofst array and self::YY_REDUCE_USE_DFLT is used in place of -** self::YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** self::$yy_action A single table containing all actions. -** self::$yy_lookahead A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** self::$yy_shift_ofst For each state, the offset into self::$yy_action for -** shifting terminals. -** self::$yy_reduce_ofst For each state, the offset into self::$yy_action for -** shifting non-terminals after a reduce. -** self::$yy_default Default action for each state. -*/ - const YY_SZ_ACTTAB = 4481; -static public $yy_action = array( - /* 0 */ 509, 182, 181, 233, 88, 115, 286, 281, 223, 102, - /* 10 */ 105, 251, 247, 248, 249, 250, 257, 258, 265, 266, - /* 20 */ 234, 263, 236, 186, 226, 227, 235, 48, 155, 311, - /* 30 */ 43, 51, 241, 240, 225, 162, 139, 237, 238, 239, - /* 40 */ 25, 35, 23, 36, 32, 49, 48, 246, 311, 245, - /* 50 */ 132, 158, 305, 151, 132, 292, 1, 13, 126, 128, - /* 60 */ 184, 80, 116, 286, 281, 223, 102, 105, 251, 247, - /* 70 */ 248, 249, 250, 257, 258, 265, 266, 234, 263, 236, - /* 80 */ 186, 52, 7, 235, 66, 155, 40, 34, 309, 241, - /* 90 */ 240, 290, 162, 244, 237, 238, 239, 35, 23, 36, - /* 100 */ 32, 49, 48, 140, 311, 283, 14, 24, 158, 305, - /* 110 */ 151, 132, 32, 49, 48, 291, 311, 184, 68, 116, - /* 120 */ 286, 281, 223, 102, 105, 251, 247, 248, 249, 250, - /* 130 */ 257, 258, 265, 266, 234, 263, 236, 186, 154, 156, - /* 140 */ 235, 244, 155, 64, 220, 213, 241, 240, 290, 162, - /* 150 */ 206, 237, 238, 239, 215, 173, 209, 207, 60, 210, - /* 160 */ 147, 134, 283, 2, 65, 158, 305, 151, 132, 33, - /* 170 */ 22, 214, 188, 166, 184, 80, 116, 286, 281, 223, - /* 180 */ 102, 105, 251, 247, 248, 249, 250, 257, 258, 265, - /* 190 */ 266, 234, 263, 236, 186, 218, 176, 235, 228, 155, - /* 200 */ 224, 132, 31, 241, 240, 290, 162, 303, 237, 238, - /* 210 */ 239, 179, 23, 36, 32, 49, 48, 145, 311, 283, - /* 220 */ 307, 7, 158, 305, 151, 132, 278, 133, 13, 310, - /* 230 */ 272, 184, 80, 116, 286, 281, 223, 102, 105, 251, - /* 240 */ 247, 248, 249, 250, 257, 258, 265, 266, 234, 263, - /* 250 */ 236, 186, 129, 270, 235, 7, 155, 127, 270, 304, - /* 260 */ 241, 240, 290, 162, 130, 237, 238, 239, 36, 32, - /* 270 */ 49, 48, 210, 311, 144, 246, 283, 245, 132, 158, - /* 280 */ 305, 151, 132, 279, 214, 188, 21, 159, 184, 80, - /* 290 */ 116, 286, 281, 223, 102, 105, 251, 247, 248, 249, - /* 300 */ 250, 257, 258, 265, 266, 234, 263, 236, 186, 208, - /* 310 */ 308, 235, 17, 155, 191, 44, 13, 241, 240, 290, - /* 320 */ 162, 15, 237, 238, 239, 229, 5, 243, 242, 16, - /* 330 */ 302, 147, 246, 283, 245, 132, 158, 305, 151, 132, - /* 340 */ 221, 74, 13, 294, 10, 184, 69, 116, 286, 281, - /* 350 */ 223, 102, 105, 251, 247, 248, 249, 250, 257, 258, - /* 360 */ 265, 266, 234, 263, 236, 186, 274, 222, 235, 244, - /* 370 */ 155, 153, 268, 3, 241, 240, 138, 162, 262, 237, - /* 380 */ 238, 239, 183, 180, 190, 189, 60, 177, 230, 50, - /* 390 */ 137, 2, 14, 158, 305, 151, 132, 311, 299, 275, - /* 400 */ 276, 255, 184, 80, 116, 286, 281, 223, 102, 105, - /* 410 */ 251, 247, 248, 249, 250, 257, 258, 265, 266, 234, - /* 420 */ 263, 236, 186, 175, 256, 235, 11, 155, 232, 168, - /* 430 */ 37, 241, 240, 290, 162, 297, 237, 238, 239, 5, - /* 440 */ 25, 35, 23, 36, 32, 49, 48, 289, 311, 252, - /* 450 */ 158, 305, 151, 132, 164, 253, 167, 10, 171, 184, - /* 460 */ 233, 88, 115, 286, 281, 223, 102, 105, 251, 247, - /* 470 */ 248, 249, 250, 257, 258, 265, 266, 234, 263, 236, - /* 480 */ 186, 178, 287, 235, 165, 155, 5, 284, 28, 241, - /* 490 */ 240, 169, 162, 332, 237, 238, 239, 25, 35, 23, - /* 500 */ 36, 32, 49, 48, 10, 311, 332, 332, 158, 305, - /* 510 */ 151, 132, 332, 332, 332, 332, 332, 184, 80, 116, - /* 520 */ 286, 281, 223, 102, 105, 251, 247, 248, 249, 250, - /* 530 */ 257, 258, 265, 266, 234, 263, 236, 186, 332, 332, - /* 540 */ 235, 332, 155, 332, 332, 332, 241, 240, 290, 162, - /* 550 */ 332, 237, 238, 239, 332, 25, 35, 23, 36, 32, - /* 560 */ 49, 48, 282, 311, 332, 158, 305, 151, 132, 332, - /* 570 */ 332, 332, 332, 174, 184, 233, 88, 115, 286, 281, - /* 580 */ 223, 102, 105, 251, 247, 248, 249, 250, 257, 258, - /* 590 */ 265, 266, 234, 263, 236, 186, 300, 332, 235, 332, - /* 600 */ 155, 5, 285, 42, 241, 240, 332, 162, 332, 237, - /* 610 */ 238, 239, 25, 35, 23, 36, 32, 49, 48, 10, - /* 620 */ 311, 332, 332, 158, 305, 151, 132, 332, 332, 254, - /* 630 */ 312, 332, 184, 277, 277, 332, 332, 142, 135, 172, - /* 640 */ 332, 233, 88, 115, 286, 281, 223, 102, 105, 251, - /* 650 */ 247, 248, 249, 250, 257, 258, 265, 266, 234, 263, - /* 660 */ 236, 186, 332, 192, 235, 332, 155, 332, 332, 374, - /* 670 */ 241, 240, 332, 162, 332, 237, 238, 239, 53, 332, - /* 680 */ 66, 332, 40, 34, 12, 143, 55, 374, 332, 158, - /* 690 */ 305, 151, 132, 332, 54, 38, 332, 312, 184, 332, - /* 700 */ 374, 277, 332, 19, 20, 135, 26, 46, 58, 56, - /* 710 */ 332, 246, 374, 245, 132, 332, 306, 244, 267, 264, - /* 720 */ 259, 260, 261, 231, 62, 332, 226, 227, 312, 194, - /* 730 */ 332, 332, 277, 332, 60, 332, 135, 293, 150, 4, - /* 740 */ 47, 295, 152, 332, 246, 8, 245, 132, 18, 273, - /* 750 */ 332, 94, 116, 286, 281, 223, 102, 105, 251, 247, - /* 760 */ 248, 249, 250, 257, 258, 265, 266, 234, 263, 236, - /* 770 */ 186, 61, 198, 235, 332, 155, 149, 332, 332, 241, - /* 780 */ 240, 220, 162, 332, 237, 238, 239, 206, 170, 63, - /* 790 */ 332, 219, 173, 209, 207, 271, 332, 332, 158, 305, - /* 800 */ 151, 132, 332, 332, 332, 332, 332, 184, 211, 88, - /* 810 */ 115, 286, 281, 223, 102, 105, 251, 247, 248, 249, - /* 820 */ 250, 257, 258, 265, 266, 234, 263, 236, 186, 332, - /* 830 */ 332, 235, 332, 155, 332, 195, 332, 241, 240, 332, - /* 840 */ 162, 332, 237, 238, 239, 332, 14, 196, 199, 332, - /* 850 */ 332, 204, 185, 216, 332, 332, 158, 305, 151, 132, - /* 860 */ 332, 332, 332, 332, 332, 184, 91, 116, 286, 281, - /* 870 */ 223, 102, 105, 251, 247, 248, 249, 250, 257, 258, - /* 880 */ 265, 266, 234, 263, 236, 186, 332, 61, 235, 332, - /* 890 */ 155, 332, 332, 332, 241, 240, 332, 162, 332, 237, - /* 900 */ 238, 239, 53, 332, 66, 63, 40, 34, 12, 143, - /* 910 */ 55, 131, 332, 158, 305, 151, 132, 332, 54, 38, - /* 920 */ 332, 6, 184, 332, 332, 193, 332, 19, 20, 332, - /* 930 */ 26, 332, 58, 56, 332, 205, 332, 332, 332, 332, - /* 940 */ 306, 244, 267, 264, 259, 260, 261, 231, 62, 332, - /* 950 */ 226, 227, 210, 244, 267, 264, 244, 332, 60, 231, - /* 960 */ 332, 293, 150, 4, 214, 188, 152, 332, 332, 8, - /* 970 */ 201, 332, 18, 60, 137, 53, 332, 66, 4, 40, - /* 980 */ 34, 12, 143, 55, 332, 332, 67, 332, 217, 176, - /* 990 */ 332, 54, 38, 332, 6, 332, 332, 332, 332, 332, - /* 1000 */ 19, 20, 332, 26, 332, 58, 56, 332, 332, 332, - /* 1010 */ 332, 332, 332, 306, 244, 267, 264, 259, 260, 261, - /* 1020 */ 231, 62, 332, 226, 227, 332, 332, 332, 332, 332, - /* 1030 */ 332, 60, 332, 332, 293, 150, 4, 280, 332, 152, - /* 1040 */ 332, 332, 8, 332, 332, 18, 77, 116, 286, 281, - /* 1050 */ 223, 102, 105, 251, 247, 248, 249, 250, 257, 258, - /* 1060 */ 265, 266, 234, 263, 236, 186, 332, 332, 235, 332, - /* 1070 */ 155, 332, 332, 332, 241, 240, 332, 162, 332, 237, - /* 1080 */ 238, 239, 332, 332, 332, 332, 332, 332, 332, 332, - /* 1090 */ 332, 332, 332, 158, 305, 151, 132, 332, 332, 332, - /* 1100 */ 332, 332, 184, 109, 116, 286, 281, 223, 102, 105, - /* 1110 */ 251, 247, 248, 249, 250, 257, 258, 265, 266, 234, - /* 1120 */ 263, 236, 186, 332, 332, 235, 332, 155, 332, 195, - /* 1130 */ 332, 241, 240, 332, 162, 332, 237, 238, 239, 332, - /* 1140 */ 332, 196, 199, 332, 332, 202, 185, 216, 332, 332, - /* 1150 */ 158, 305, 151, 132, 332, 332, 332, 332, 332, 184, - /* 1160 */ 117, 116, 286, 281, 223, 102, 105, 251, 247, 248, - /* 1170 */ 249, 250, 257, 258, 265, 266, 234, 263, 236, 186, - /* 1180 */ 332, 332, 235, 332, 155, 332, 332, 332, 241, 240, - /* 1190 */ 332, 162, 332, 237, 238, 239, 332, 332, 332, 332, - /* 1200 */ 332, 332, 332, 332, 332, 332, 332, 158, 305, 151, - /* 1210 */ 132, 332, 332, 332, 332, 332, 184, 84, 116, 286, - /* 1220 */ 281, 223, 102, 105, 251, 247, 248, 249, 250, 257, - /* 1230 */ 258, 265, 266, 234, 263, 236, 186, 332, 332, 235, - /* 1240 */ 332, 155, 332, 332, 332, 241, 240, 332, 162, 332, - /* 1250 */ 237, 238, 239, 332, 332, 332, 332, 332, 332, 332, - /* 1260 */ 332, 332, 332, 332, 158, 305, 151, 132, 332, 332, - /* 1270 */ 332, 332, 332, 184, 71, 116, 286, 281, 223, 102, - /* 1280 */ 105, 251, 247, 248, 249, 250, 257, 258, 265, 266, - /* 1290 */ 234, 263, 236, 186, 332, 332, 235, 332, 155, 332, - /* 1300 */ 332, 332, 241, 240, 332, 162, 332, 237, 238, 239, - /* 1310 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 1320 */ 332, 158, 305, 151, 132, 332, 332, 332, 332, 332, - /* 1330 */ 184, 93, 116, 286, 281, 223, 102, 105, 251, 247, - /* 1340 */ 248, 249, 250, 257, 258, 265, 266, 234, 263, 236, - /* 1350 */ 186, 332, 332, 235, 332, 155, 332, 332, 332, 241, - /* 1360 */ 240, 332, 162, 332, 237, 238, 239, 332, 332, 332, - /* 1370 */ 332, 332, 332, 332, 332, 332, 332, 332, 158, 305, - /* 1380 */ 151, 132, 332, 332, 332, 332, 332, 184, 103, 116, - /* 1390 */ 286, 281, 223, 102, 105, 251, 247, 248, 249, 250, - /* 1400 */ 257, 258, 265, 266, 234, 263, 236, 186, 332, 332, - /* 1410 */ 235, 332, 155, 332, 332, 332, 241, 240, 332, 162, - /* 1420 */ 332, 237, 238, 239, 332, 332, 332, 332, 332, 332, - /* 1430 */ 332, 332, 332, 332, 332, 158, 305, 151, 132, 332, - /* 1440 */ 332, 332, 332, 332, 184, 83, 116, 286, 281, 223, - /* 1450 */ 102, 105, 251, 247, 248, 249, 250, 257, 258, 265, - /* 1460 */ 266, 234, 263, 236, 186, 332, 332, 235, 332, 155, - /* 1470 */ 332, 332, 332, 241, 240, 332, 162, 332, 237, 238, - /* 1480 */ 239, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 1490 */ 332, 332, 158, 305, 151, 132, 332, 332, 332, 332, - /* 1500 */ 332, 184, 78, 116, 286, 281, 223, 102, 105, 251, - /* 1510 */ 247, 248, 249, 250, 257, 258, 265, 266, 234, 263, - /* 1520 */ 236, 186, 332, 332, 235, 332, 155, 332, 332, 332, - /* 1530 */ 241, 240, 332, 162, 332, 237, 238, 239, 332, 332, - /* 1540 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 158, - /* 1550 */ 305, 151, 132, 332, 332, 332, 332, 332, 184, 85, - /* 1560 */ 116, 286, 281, 223, 102, 105, 251, 247, 248, 249, - /* 1570 */ 250, 257, 258, 265, 266, 234, 263, 236, 186, 332, - /* 1580 */ 332, 235, 332, 155, 332, 332, 332, 241, 240, 332, - /* 1590 */ 162, 332, 237, 238, 239, 332, 332, 332, 332, 332, - /* 1600 */ 332, 332, 332, 332, 332, 332, 158, 305, 151, 132, - /* 1610 */ 332, 332, 332, 332, 332, 184, 121, 116, 286, 281, - /* 1620 */ 223, 102, 105, 251, 247, 248, 249, 250, 257, 258, - /* 1630 */ 265, 266, 234, 263, 236, 186, 332, 332, 235, 332, - /* 1640 */ 155, 332, 332, 332, 241, 240, 332, 162, 332, 237, - /* 1650 */ 238, 239, 332, 332, 332, 332, 332, 332, 332, 332, - /* 1660 */ 332, 332, 332, 158, 305, 151, 132, 332, 332, 332, - /* 1670 */ 332, 332, 184, 122, 116, 286, 281, 223, 102, 105, - /* 1680 */ 251, 247, 248, 249, 250, 257, 258, 265, 266, 234, - /* 1690 */ 263, 236, 186, 332, 332, 235, 332, 155, 332, 332, - /* 1700 */ 332, 241, 240, 332, 162, 332, 237, 238, 239, 332, - /* 1710 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 1720 */ 158, 305, 151, 132, 332, 332, 332, 332, 332, 184, - /* 1730 */ 75, 116, 286, 281, 223, 102, 105, 251, 247, 248, - /* 1740 */ 249, 250, 257, 258, 265, 266, 234, 263, 236, 186, - /* 1750 */ 332, 332, 235, 332, 155, 332, 332, 332, 241, 240, - /* 1760 */ 332, 162, 332, 237, 238, 239, 332, 332, 332, 332, - /* 1770 */ 332, 332, 332, 332, 332, 332, 332, 158, 305, 151, - /* 1780 */ 132, 332, 332, 332, 332, 332, 184, 114, 116, 286, - /* 1790 */ 281, 223, 102, 105, 251, 247, 248, 249, 250, 257, - /* 1800 */ 258, 265, 266, 234, 263, 236, 186, 332, 332, 235, - /* 1810 */ 332, 155, 332, 332, 332, 241, 240, 332, 162, 332, - /* 1820 */ 237, 238, 239, 332, 332, 332, 332, 332, 332, 332, - /* 1830 */ 332, 332, 332, 332, 158, 305, 151, 132, 332, 332, - /* 1840 */ 332, 332, 332, 184, 108, 116, 286, 281, 223, 102, - /* 1850 */ 105, 251, 247, 248, 249, 250, 257, 258, 265, 266, - /* 1860 */ 234, 263, 236, 186, 332, 332, 235, 332, 155, 332, - /* 1870 */ 332, 332, 241, 240, 332, 162, 332, 237, 238, 239, - /* 1880 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 1890 */ 332, 158, 305, 151, 132, 332, 332, 332, 332, 332, - /* 1900 */ 184, 99, 116, 286, 281, 223, 102, 105, 251, 247, - /* 1910 */ 248, 249, 250, 257, 258, 265, 266, 234, 263, 236, - /* 1920 */ 186, 332, 332, 235, 332, 155, 332, 332, 332, 241, - /* 1930 */ 240, 332, 162, 332, 237, 238, 239, 332, 332, 332, - /* 1940 */ 332, 332, 332, 332, 332, 332, 332, 332, 158, 305, - /* 1950 */ 151, 132, 332, 332, 332, 332, 332, 184, 92, 116, - /* 1960 */ 286, 281, 223, 102, 105, 251, 247, 248, 249, 250, - /* 1970 */ 257, 258, 265, 266, 234, 263, 236, 186, 332, 332, - /* 1980 */ 235, 332, 155, 332, 332, 332, 241, 240, 332, 162, - /* 1990 */ 332, 237, 238, 239, 332, 332, 332, 332, 332, 332, - /* 2000 */ 332, 332, 332, 332, 332, 158, 305, 151, 132, 332, - /* 2010 */ 332, 332, 332, 332, 184, 76, 116, 286, 281, 223, - /* 2020 */ 102, 105, 251, 247, 248, 249, 250, 257, 258, 265, - /* 2030 */ 266, 234, 263, 236, 186, 332, 332, 235, 332, 155, - /* 2040 */ 332, 332, 332, 241, 240, 332, 162, 332, 237, 238, - /* 2050 */ 239, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 2060 */ 332, 332, 158, 305, 151, 132, 332, 332, 332, 332, - /* 2070 */ 332, 184, 90, 116, 286, 281, 223, 102, 105, 251, - /* 2080 */ 247, 248, 249, 250, 257, 258, 265, 266, 234, 263, - /* 2090 */ 236, 186, 332, 332, 235, 332, 155, 332, 332, 332, - /* 2100 */ 241, 240, 332, 162, 332, 237, 238, 239, 332, 332, - /* 2110 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 158, - /* 2120 */ 305, 151, 132, 332, 332, 332, 332, 332, 184, 107, - /* 2130 */ 116, 286, 281, 223, 102, 105, 251, 247, 248, 249, - /* 2140 */ 250, 257, 258, 265, 266, 234, 263, 236, 186, 332, - /* 2150 */ 332, 235, 332, 155, 332, 332, 332, 241, 240, 332, - /* 2160 */ 162, 332, 237, 238, 239, 332, 332, 332, 332, 332, - /* 2170 */ 332, 332, 332, 332, 332, 332, 158, 305, 151, 132, - /* 2180 */ 332, 332, 332, 332, 332, 184, 113, 116, 286, 281, - /* 2190 */ 223, 102, 105, 251, 247, 248, 249, 250, 257, 258, - /* 2200 */ 265, 266, 234, 263, 236, 186, 332, 332, 235, 332, - /* 2210 */ 155, 332, 332, 332, 241, 240, 332, 162, 332, 237, - /* 2220 */ 238, 239, 332, 332, 332, 332, 332, 332, 332, 332, - /* 2230 */ 332, 332, 332, 158, 305, 151, 132, 332, 332, 332, - /* 2240 */ 332, 332, 184, 104, 116, 286, 281, 223, 102, 105, - /* 2250 */ 251, 247, 248, 249, 250, 257, 258, 265, 266, 234, - /* 2260 */ 263, 236, 186, 332, 332, 235, 332, 155, 332, 332, - /* 2270 */ 332, 241, 240, 332, 162, 332, 237, 238, 239, 332, - /* 2280 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 2290 */ 158, 305, 151, 132, 332, 332, 332, 332, 332, 184, - /* 2300 */ 95, 116, 286, 281, 223, 102, 105, 251, 247, 248, - /* 2310 */ 249, 250, 257, 258, 265, 266, 234, 263, 236, 186, - /* 2320 */ 332, 332, 235, 332, 155, 332, 332, 332, 241, 240, - /* 2330 */ 332, 162, 332, 237, 238, 239, 332, 332, 332, 332, - /* 2340 */ 332, 332, 332, 332, 332, 332, 332, 158, 305, 151, - /* 2350 */ 132, 332, 332, 332, 332, 332, 184, 87, 116, 286, - /* 2360 */ 281, 223, 102, 105, 251, 247, 248, 249, 250, 257, - /* 2370 */ 258, 265, 266, 234, 263, 236, 186, 332, 332, 235, - /* 2380 */ 332, 155, 332, 332, 332, 241, 240, 332, 162, 332, - /* 2390 */ 237, 238, 239, 332, 332, 332, 332, 332, 332, 332, - /* 2400 */ 332, 332, 332, 332, 158, 305, 151, 132, 332, 332, - /* 2410 */ 332, 332, 332, 184, 112, 116, 286, 281, 223, 102, - /* 2420 */ 105, 251, 247, 248, 249, 250, 257, 258, 265, 266, - /* 2430 */ 234, 263, 236, 186, 332, 332, 235, 332, 155, 332, - /* 2440 */ 332, 332, 241, 240, 332, 162, 332, 237, 238, 239, - /* 2450 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 2460 */ 332, 158, 305, 151, 132, 332, 332, 332, 332, 332, - /* 2470 */ 184, 97, 116, 286, 281, 223, 102, 105, 251, 247, - /* 2480 */ 248, 249, 250, 257, 258, 265, 266, 234, 263, 236, - /* 2490 */ 186, 332, 332, 235, 332, 155, 332, 332, 332, 241, - /* 2500 */ 240, 332, 162, 332, 237, 238, 239, 332, 332, 332, - /* 2510 */ 332, 332, 332, 332, 332, 332, 332, 332, 158, 305, - /* 2520 */ 151, 132, 332, 332, 332, 332, 332, 184, 119, 116, - /* 2530 */ 286, 281, 223, 102, 105, 251, 247, 248, 249, 250, - /* 2540 */ 257, 258, 265, 266, 234, 263, 236, 186, 332, 332, - /* 2550 */ 235, 332, 155, 332, 332, 332, 241, 240, 332, 162, - /* 2560 */ 332, 237, 238, 239, 332, 332, 332, 332, 332, 332, - /* 2570 */ 332, 332, 332, 332, 332, 158, 305, 151, 132, 332, - /* 2580 */ 332, 332, 332, 332, 184, 96, 116, 286, 281, 223, - /* 2590 */ 102, 105, 251, 247, 248, 249, 250, 257, 258, 265, - /* 2600 */ 266, 234, 263, 236, 186, 332, 332, 235, 332, 155, - /* 2610 */ 332, 332, 332, 241, 240, 332, 162, 332, 237, 238, - /* 2620 */ 239, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 2630 */ 332, 332, 158, 305, 151, 132, 332, 332, 332, 332, - /* 2640 */ 332, 184, 82, 116, 286, 281, 223, 102, 105, 251, - /* 2650 */ 247, 248, 249, 250, 257, 258, 265, 266, 234, 263, - /* 2660 */ 236, 186, 332, 332, 235, 332, 155, 332, 332, 332, - /* 2670 */ 241, 240, 332, 162, 332, 237, 238, 239, 53, 332, - /* 2680 */ 66, 332, 40, 34, 12, 143, 55, 332, 332, 158, - /* 2690 */ 305, 151, 132, 332, 54, 38, 332, 7, 184, 332, - /* 2700 */ 332, 332, 332, 19, 20, 332, 26, 332, 58, 56, - /* 2710 */ 332, 332, 332, 332, 332, 332, 306, 244, 267, 264, - /* 2720 */ 259, 260, 261, 231, 62, 332, 226, 227, 332, 332, - /* 2730 */ 332, 332, 332, 332, 60, 332, 332, 293, 150, 4, - /* 2740 */ 332, 332, 152, 332, 332, 8, 332, 332, 18, 332, - /* 2750 */ 332, 53, 332, 66, 332, 40, 34, 12, 143, 55, - /* 2760 */ 332, 332, 332, 332, 332, 332, 332, 54, 38, 332, - /* 2770 */ 27, 332, 332, 332, 332, 332, 19, 20, 332, 26, - /* 2780 */ 332, 58, 56, 332, 332, 332, 332, 332, 332, 306, - /* 2790 */ 244, 267, 264, 259, 260, 261, 231, 62, 332, 226, - /* 2800 */ 227, 332, 332, 332, 332, 332, 332, 60, 332, 332, - /* 2810 */ 293, 150, 4, 332, 332, 152, 332, 332, 8, 332, - /* 2820 */ 332, 18, 101, 116, 286, 281, 223, 102, 105, 251, - /* 2830 */ 247, 248, 249, 250, 257, 258, 265, 266, 234, 263, - /* 2840 */ 236, 186, 332, 332, 235, 332, 155, 332, 332, 332, - /* 2850 */ 241, 240, 332, 162, 332, 237, 238, 239, 53, 332, - /* 2860 */ 66, 332, 40, 34, 12, 143, 55, 332, 332, 158, - /* 2870 */ 305, 151, 132, 332, 54, 38, 332, 41, 184, 332, - /* 2880 */ 332, 332, 332, 19, 20, 332, 26, 332, 58, 56, - /* 2890 */ 332, 332, 332, 332, 332, 332, 306, 244, 267, 264, - /* 2900 */ 259, 260, 261, 231, 62, 332, 226, 227, 332, 332, - /* 2910 */ 332, 332, 332, 332, 60, 332, 332, 293, 150, 4, - /* 2920 */ 332, 332, 152, 332, 332, 8, 332, 332, 18, 332, - /* 2930 */ 332, 53, 332, 66, 332, 40, 34, 12, 143, 55, - /* 2940 */ 332, 332, 332, 332, 332, 332, 332, 54, 38, 332, - /* 2950 */ 45, 332, 332, 332, 332, 332, 19, 20, 332, 26, - /* 2960 */ 332, 58, 56, 332, 332, 332, 332, 332, 332, 306, - /* 2970 */ 244, 267, 264, 259, 260, 261, 231, 62, 332, 226, - /* 2980 */ 227, 332, 332, 332, 332, 332, 332, 60, 332, 332, - /* 2990 */ 293, 150, 4, 332, 332, 152, 332, 332, 8, 332, - /* 3000 */ 332, 18, 70, 116, 286, 281, 223, 102, 105, 251, - /* 3010 */ 247, 248, 249, 250, 257, 258, 265, 266, 234, 263, - /* 3020 */ 236, 186, 332, 332, 235, 332, 155, 332, 332, 332, - /* 3030 */ 241, 240, 332, 162, 332, 237, 238, 239, 332, 332, - /* 3040 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 158, - /* 3050 */ 305, 151, 132, 332, 332, 332, 332, 332, 184, 100, - /* 3060 */ 116, 286, 281, 223, 102, 105, 251, 247, 248, 249, - /* 3070 */ 250, 257, 258, 265, 266, 234, 263, 236, 186, 332, - /* 3080 */ 332, 235, 332, 155, 332, 332, 332, 241, 240, 332, - /* 3090 */ 162, 332, 237, 238, 239, 53, 332, 66, 332, 40, - /* 3100 */ 34, 12, 143, 55, 332, 332, 158, 305, 151, 132, - /* 3110 */ 332, 54, 38, 332, 6, 184, 332, 332, 332, 332, - /* 3120 */ 19, 20, 332, 26, 332, 58, 56, 332, 332, 332, - /* 3130 */ 332, 332, 332, 306, 244, 267, 264, 259, 260, 261, - /* 3140 */ 231, 62, 332, 226, 227, 332, 332, 332, 332, 332, - /* 3150 */ 332, 60, 332, 332, 293, 150, 4, 332, 332, 152, - /* 3160 */ 332, 332, 8, 332, 332, 18, 332, 332, 53, 332, - /* 3170 */ 66, 332, 40, 34, 12, 143, 55, 332, 332, 332, - /* 3180 */ 332, 332, 332, 332, 54, 38, 332, 332, 187, 332, - /* 3190 */ 332, 332, 332, 19, 20, 332, 26, 332, 58, 56, - /* 3200 */ 332, 332, 332, 332, 332, 332, 306, 244, 267, 264, - /* 3210 */ 259, 260, 261, 231, 62, 332, 226, 227, 332, 332, - /* 3220 */ 332, 332, 332, 332, 60, 332, 332, 293, 150, 4, - /* 3230 */ 332, 332, 152, 332, 332, 8, 332, 332, 18, 332, - /* 3240 */ 332, 53, 332, 66, 332, 40, 34, 12, 143, 55, - /* 3250 */ 332, 332, 332, 332, 332, 332, 332, 54, 38, 332, - /* 3260 */ 9, 332, 332, 332, 332, 332, 19, 20, 332, 26, - /* 3270 */ 332, 58, 56, 332, 332, 332, 332, 332, 332, 306, - /* 3280 */ 244, 267, 264, 259, 260, 261, 231, 62, 332, 226, - /* 3290 */ 227, 332, 332, 332, 332, 332, 332, 60, 332, 332, - /* 3300 */ 293, 150, 4, 332, 332, 152, 332, 332, 8, 332, - /* 3310 */ 332, 18, 106, 116, 286, 281, 223, 102, 105, 251, - /* 3320 */ 247, 248, 249, 250, 257, 258, 265, 266, 234, 263, - /* 3330 */ 236, 186, 332, 332, 235, 332, 155, 332, 332, 332, - /* 3340 */ 241, 240, 332, 162, 332, 237, 238, 239, 332, 332, - /* 3350 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 158, - /* 3360 */ 305, 151, 132, 332, 332, 332, 332, 332, 184, 86, - /* 3370 */ 116, 286, 281, 223, 102, 105, 251, 247, 248, 249, - /* 3380 */ 250, 257, 258, 265, 266, 234, 263, 236, 186, 332, - /* 3390 */ 332, 235, 332, 155, 332, 332, 332, 241, 240, 332, - /* 3400 */ 162, 332, 237, 238, 239, 332, 332, 332, 332, 332, - /* 3410 */ 332, 332, 332, 332, 332, 332, 158, 305, 151, 132, - /* 3420 */ 332, 332, 332, 332, 332, 184, 120, 116, 286, 281, - /* 3430 */ 223, 102, 105, 251, 247, 248, 249, 250, 257, 258, - /* 3440 */ 265, 266, 234, 263, 236, 186, 332, 332, 235, 332, - /* 3450 */ 155, 332, 332, 332, 241, 240, 332, 162, 332, 237, - /* 3460 */ 238, 239, 332, 332, 332, 332, 332, 332, 332, 332, - /* 3470 */ 332, 332, 332, 158, 305, 151, 132, 332, 332, 332, - /* 3480 */ 332, 332, 184, 118, 116, 286, 281, 223, 102, 105, - /* 3490 */ 251, 247, 248, 249, 250, 257, 258, 265, 266, 234, - /* 3500 */ 263, 236, 186, 332, 332, 235, 332, 155, 332, 332, - /* 3510 */ 332, 241, 240, 332, 162, 332, 237, 238, 239, 332, - /* 3520 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 3530 */ 158, 305, 151, 132, 332, 332, 332, 332, 332, 184, - /* 3540 */ 89, 116, 286, 281, 223, 102, 105, 251, 247, 248, - /* 3550 */ 249, 250, 257, 258, 265, 266, 234, 263, 236, 186, - /* 3560 */ 332, 332, 235, 332, 155, 332, 332, 332, 241, 240, - /* 3570 */ 332, 162, 332, 237, 238, 239, 332, 332, 332, 332, - /* 3580 */ 332, 332, 332, 332, 332, 332, 332, 158, 305, 151, - /* 3590 */ 132, 332, 332, 332, 332, 332, 184, 79, 116, 286, - /* 3600 */ 281, 223, 102, 105, 251, 247, 248, 249, 250, 257, - /* 3610 */ 258, 265, 266, 234, 263, 236, 186, 332, 332, 235, - /* 3620 */ 332, 155, 332, 332, 332, 241, 240, 332, 162, 332, - /* 3630 */ 237, 238, 239, 53, 332, 66, 332, 40, 34, 12, - /* 3640 */ 143, 55, 332, 332, 158, 305, 151, 132, 332, 54, - /* 3650 */ 38, 332, 124, 184, 332, 332, 332, 332, 19, 20, - /* 3660 */ 332, 26, 332, 58, 56, 332, 332, 332, 332, 332, - /* 3670 */ 332, 306, 244, 267, 264, 259, 260, 261, 231, 62, - /* 3680 */ 332, 226, 227, 332, 332, 332, 332, 332, 332, 60, - /* 3690 */ 332, 332, 293, 150, 4, 332, 332, 152, 332, 332, - /* 3700 */ 8, 332, 332, 18, 332, 98, 116, 286, 281, 223, - /* 3710 */ 102, 105, 251, 247, 248, 249, 250, 257, 258, 265, - /* 3720 */ 266, 234, 263, 236, 186, 332, 332, 235, 332, 155, - /* 3730 */ 332, 332, 332, 241, 240, 332, 162, 332, 237, 238, - /* 3740 */ 239, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 3750 */ 332, 332, 158, 305, 151, 132, 332, 332, 332, 332, - /* 3760 */ 332, 184, 81, 116, 286, 281, 223, 102, 105, 251, - /* 3770 */ 247, 248, 249, 250, 257, 258, 265, 266, 234, 263, - /* 3780 */ 236, 186, 332, 332, 235, 332, 155, 332, 332, 332, - /* 3790 */ 241, 240, 332, 162, 332, 237, 238, 239, 53, 332, - /* 3800 */ 66, 332, 40, 34, 12, 143, 55, 332, 332, 158, - /* 3810 */ 305, 151, 132, 332, 54, 38, 332, 332, 184, 332, - /* 3820 */ 332, 332, 332, 19, 20, 332, 26, 332, 58, 56, - /* 3830 */ 332, 332, 332, 332, 332, 332, 306, 244, 267, 264, - /* 3840 */ 259, 260, 261, 231, 62, 332, 226, 227, 332, 148, - /* 3850 */ 136, 146, 332, 332, 60, 332, 332, 293, 150, 4, - /* 3860 */ 332, 332, 152, 332, 332, 8, 332, 1, 18, 126, - /* 3870 */ 128, 53, 415, 269, 148, 136, 146, 12, 143, 55, - /* 3880 */ 332, 332, 332, 332, 332, 332, 332, 54, 38, 332, - /* 3890 */ 332, 332, 1, 332, 126, 128, 19, 20, 269, 26, - /* 3900 */ 332, 58, 56, 332, 332, 332, 332, 332, 332, 306, - /* 3910 */ 244, 267, 264, 259, 260, 261, 231, 62, 332, 226, - /* 3920 */ 227, 332, 143, 332, 332, 332, 332, 60, 332, 332, - /* 3930 */ 293, 150, 4, 57, 7, 152, 332, 332, 8, 332, - /* 3940 */ 30, 18, 332, 66, 332, 40, 34, 332, 332, 332, - /* 3950 */ 332, 332, 332, 332, 244, 267, 264, 259, 260, 261, - /* 3960 */ 332, 332, 25, 35, 23, 36, 32, 49, 48, 332, - /* 3970 */ 311, 60, 332, 332, 293, 150, 4, 332, 332, 332, - /* 3980 */ 332, 332, 8, 332, 30, 7, 332, 66, 332, 40, - /* 3990 */ 34, 332, 163, 332, 332, 332, 332, 332, 415, 332, - /* 4000 */ 148, 136, 146, 332, 295, 332, 25, 35, 23, 36, - /* 4010 */ 32, 49, 48, 332, 311, 332, 195, 332, 1, 313, - /* 4020 */ 126, 128, 332, 332, 269, 332, 110, 111, 196, 199, - /* 4030 */ 332, 332, 212, 185, 216, 332, 194, 234, 263, 236, - /* 4040 */ 298, 30, 332, 235, 66, 332, 40, 34, 295, 241, - /* 4050 */ 240, 157, 125, 332, 237, 238, 239, 332, 332, 332, - /* 4060 */ 332, 7, 332, 25, 35, 23, 36, 32, 49, 48, - /* 4070 */ 30, 311, 332, 66, 332, 40, 34, 332, 332, 332, - /* 4080 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 4090 */ 332, 197, 25, 35, 23, 36, 32, 49, 48, 30, - /* 4100 */ 311, 332, 66, 332, 40, 34, 332, 332, 332, 332, - /* 4110 */ 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - /* 4120 */ 203, 25, 35, 23, 36, 32, 49, 48, 30, 311, - /* 4130 */ 332, 66, 332, 40, 34, 332, 332, 332, 332, 332, - /* 4140 */ 332, 332, 332, 332, 332, 332, 332, 332, 73, 111, - /* 4150 */ 25, 35, 23, 36, 32, 49, 48, 332, 311, 234, - /* 4160 */ 263, 236, 298, 332, 332, 235, 332, 332, 332, 332, - /* 4170 */ 332, 241, 240, 332, 301, 332, 237, 238, 239, 332, - /* 4180 */ 288, 332, 30, 332, 332, 66, 332, 40, 34, 332, - /* 4190 */ 332, 332, 332, 332, 332, 143, 332, 332, 332, 332, - /* 4200 */ 332, 332, 123, 332, 25, 35, 23, 36, 32, 49, - /* 4210 */ 48, 30, 311, 332, 66, 332, 40, 34, 332, 332, - /* 4220 */ 332, 332, 332, 332, 332, 332, 332, 244, 267, 264, - /* 4230 */ 259, 260, 261, 25, 35, 23, 36, 32, 49, 48, - /* 4240 */ 30, 311, 332, 66, 60, 40, 34, 293, 150, 4, - /* 4250 */ 332, 332, 332, 332, 332, 8, 332, 332, 332, 332, - /* 4260 */ 332, 200, 25, 35, 23, 36, 32, 49, 48, 332, - /* 4270 */ 311, 332, 110, 111, 296, 332, 332, 332, 332, 332, - /* 4280 */ 332, 332, 332, 234, 263, 236, 298, 332, 332, 235, - /* 4290 */ 332, 332, 72, 111, 332, 241, 240, 332, 161, 332, - /* 4300 */ 237, 238, 239, 234, 263, 236, 298, 332, 379, 235, - /* 4310 */ 379, 379, 379, 332, 332, 241, 240, 332, 301, 332, - /* 4320 */ 237, 238, 239, 332, 110, 111, 332, 332, 379, 332, - /* 4330 */ 379, 379, 332, 332, 379, 234, 263, 236, 298, 30, - /* 4340 */ 332, 235, 66, 332, 40, 34, 332, 241, 240, 332, - /* 4350 */ 160, 332, 237, 238, 239, 332, 332, 332, 332, 332, - /* 4360 */ 332, 25, 35, 23, 36, 32, 49, 48, 66, 311, - /* 4370 */ 40, 34, 332, 332, 332, 332, 332, 332, 39, 332, - /* 4380 */ 332, 332, 332, 332, 332, 332, 332, 25, 35, 23, - /* 4390 */ 36, 32, 49, 48, 66, 311, 40, 34, 332, 332, - /* 4400 */ 332, 332, 332, 332, 29, 332, 332, 332, 332, 66, - /* 4410 */ 332, 40, 34, 25, 35, 23, 36, 32, 49, 48, - /* 4420 */ 332, 311, 332, 332, 332, 332, 332, 332, 25, 35, - /* 4430 */ 23, 36, 32, 49, 48, 332, 311, 59, 7, 332, - /* 4440 */ 332, 332, 332, 332, 332, 195, 332, 332, 332, 332, - /* 4450 */ 332, 379, 332, 379, 379, 379, 332, 196, 199, 332, - /* 4460 */ 332, 212, 185, 216, 332, 332, 332, 332, 332, 332, - /* 4470 */ 332, 379, 332, 379, 379, 332, 332, 379, 332, 332, - /* 4480 */ 141, - ); - static public $yy_lookahead = array( - /* 0 */ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - /* 10 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - /* 20 */ 95, 96, 97, 98, 50, 51, 101, 29, 103, 31, - /* 30 */ 13, 14, 107, 108, 77, 110, 3, 112, 113, 114, - /* 40 */ 23, 24, 25, 26, 27, 28, 29, 126, 31, 128, - /* 50 */ 129, 126, 127, 128, 129, 22, 54, 39, 56, 57, - /* 60 */ 135, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 70 */ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - /* 80 */ 98, 1, 21, 101, 4, 103, 6, 7, 70, 107, - /* 90 */ 108, 109, 110, 41, 112, 113, 114, 24, 25, 26, - /* 100 */ 27, 28, 29, 121, 31, 123, 73, 15, 126, 127, - /* 110 */ 128, 129, 27, 28, 29, 22, 31, 135, 79, 80, - /* 120 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - /* 130 */ 91, 92, 93, 94, 95, 96, 97, 98, 67, 68, - /* 140 */ 101, 41, 103, 52, 95, 53, 107, 108, 109, 110, - /* 150 */ 101, 112, 113, 114, 105, 106, 107, 108, 58, 95, - /* 160 */ 121, 49, 123, 63, 52, 126, 127, 128, 129, 11, - /* 170 */ 12, 107, 108, 104, 135, 79, 80, 81, 82, 83, - /* 180 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - /* 190 */ 94, 95, 96, 97, 98, 131, 132, 101, 126, 103, - /* 200 */ 128, 129, 2, 107, 108, 109, 110, 77, 112, 113, - /* 210 */ 114, 22, 25, 26, 27, 28, 29, 121, 31, 123, - /* 220 */ 77, 21, 126, 127, 128, 129, 77, 77, 39, 77, - /* 230 */ 22, 135, 79, 80, 81, 82, 83, 84, 85, 86, - /* 240 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - /* 250 */ 97, 98, 133, 134, 101, 21, 103, 133, 134, 77, - /* 260 */ 107, 108, 109, 110, 3, 112, 113, 114, 26, 27, - /* 270 */ 28, 29, 95, 31, 121, 126, 123, 128, 129, 126, - /* 280 */ 127, 128, 129, 77, 107, 108, 52, 67, 135, 79, - /* 290 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 300 */ 90, 91, 92, 93, 94, 95, 96, 97, 98, 132, - /* 310 */ 70, 101, 17, 103, 39, 20, 39, 107, 108, 109, - /* 320 */ 110, 15, 112, 113, 114, 22, 21, 32, 33, 16, - /* 330 */ 77, 121, 126, 123, 128, 129, 126, 127, 128, 129, - /* 340 */ 35, 52, 39, 95, 39, 135, 79, 80, 81, 82, - /* 350 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 360 */ 93, 94, 95, 96, 97, 98, 39, 55, 101, 41, - /* 370 */ 103, 95, 120, 34, 107, 108, 103, 110, 95, 112, - /* 380 */ 113, 114, 125, 116, 117, 77, 58, 77, 130, 122, - /* 390 */ 62, 63, 73, 126, 127, 128, 129, 31, 77, 77, - /* 400 */ 134, 115, 135, 79, 80, 81, 82, 83, 84, 85, - /* 410 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - /* 420 */ 96, 97, 98, 77, 115, 101, 52, 103, 95, 104, - /* 430 */ 13, 107, 108, 109, 110, 120, 112, 113, 114, 21, - /* 440 */ 23, 24, 25, 26, 27, 28, 29, 123, 31, 120, - /* 450 */ 126, 127, 128, 129, 104, 95, 104, 39, 76, 135, - /* 460 */ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 470 */ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - /* 480 */ 98, 77, 64, 101, 104, 103, 21, 22, 14, 107, - /* 490 */ 108, 104, 110, 136, 112, 113, 114, 23, 24, 25, - /* 500 */ 26, 27, 28, 29, 39, 31, 136, 136, 126, 127, - /* 510 */ 128, 129, 136, 136, 136, 136, 136, 135, 79, 80, - /* 520 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - /* 530 */ 91, 92, 93, 94, 95, 96, 97, 98, 136, 136, - /* 540 */ 101, 136, 103, 136, 136, 136, 107, 108, 109, 110, - /* 550 */ 136, 112, 113, 114, 136, 23, 24, 25, 26, 27, - /* 560 */ 28, 29, 123, 31, 136, 126, 127, 128, 129, 136, - /* 570 */ 136, 136, 136, 76, 135, 78, 79, 80, 81, 82, - /* 580 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 590 */ 93, 94, 95, 96, 97, 98, 77, 136, 101, 136, - /* 600 */ 103, 21, 22, 14, 107, 108, 136, 110, 136, 112, - /* 610 */ 113, 114, 23, 24, 25, 26, 27, 28, 29, 39, - /* 620 */ 31, 136, 136, 126, 127, 128, 129, 136, 136, 111, - /* 630 */ 111, 136, 135, 115, 115, 136, 136, 119, 119, 76, - /* 640 */ 136, 78, 79, 80, 81, 82, 83, 84, 85, 86, - /* 650 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - /* 660 */ 97, 98, 136, 77, 101, 136, 103, 136, 136, 21, - /* 670 */ 107, 108, 136, 110, 136, 112, 113, 114, 2, 136, - /* 680 */ 4, 136, 6, 7, 8, 9, 10, 39, 136, 126, - /* 690 */ 127, 128, 129, 136, 18, 19, 136, 111, 135, 136, - /* 700 */ 52, 115, 136, 27, 28, 119, 30, 122, 32, 33, - /* 710 */ 136, 126, 64, 128, 129, 136, 40, 41, 42, 43, - /* 720 */ 44, 45, 46, 47, 48, 136, 50, 51, 111, 53, - /* 730 */ 136, 136, 115, 136, 58, 136, 119, 61, 62, 63, - /* 740 */ 122, 65, 66, 136, 126, 69, 128, 129, 72, 77, - /* 750 */ 136, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 760 */ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - /* 770 */ 98, 21, 22, 101, 136, 103, 3, 136, 136, 107, - /* 780 */ 108, 95, 110, 136, 112, 113, 114, 101, 102, 39, - /* 790 */ 136, 105, 106, 107, 108, 22, 136, 136, 126, 127, - /* 800 */ 128, 129, 136, 136, 136, 136, 136, 135, 78, 79, - /* 810 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 820 */ 90, 91, 92, 93, 94, 95, 96, 97, 98, 136, - /* 830 */ 136, 101, 136, 103, 136, 83, 136, 107, 108, 136, - /* 840 */ 110, 136, 112, 113, 114, 136, 73, 95, 96, 136, - /* 850 */ 136, 99, 100, 101, 136, 136, 126, 127, 128, 129, - /* 860 */ 136, 136, 136, 136, 136, 135, 79, 80, 81, 82, - /* 870 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 880 */ 93, 94, 95, 96, 97, 98, 136, 21, 101, 136, - /* 890 */ 103, 136, 136, 136, 107, 108, 136, 110, 136, 112, - /* 900 */ 113, 114, 2, 136, 4, 39, 6, 7, 8, 9, - /* 910 */ 10, 124, 136, 126, 127, 128, 129, 136, 18, 19, - /* 920 */ 136, 21, 135, 136, 136, 59, 136, 27, 28, 136, - /* 930 */ 30, 136, 32, 33, 136, 35, 136, 136, 136, 136, - /* 940 */ 40, 41, 42, 43, 44, 45, 46, 47, 48, 136, - /* 950 */ 50, 51, 95, 41, 42, 43, 41, 136, 58, 47, - /* 960 */ 136, 61, 62, 63, 107, 108, 66, 136, 136, 69, - /* 970 */ 113, 136, 72, 58, 62, 2, 136, 4, 63, 6, - /* 980 */ 7, 8, 9, 10, 136, 136, 71, 136, 131, 132, - /* 990 */ 136, 18, 19, 136, 21, 136, 136, 136, 136, 136, - /* 1000 */ 27, 28, 136, 30, 136, 32, 33, 136, 136, 136, - /* 1010 */ 136, 136, 136, 40, 41, 42, 43, 44, 45, 46, - /* 1020 */ 47, 48, 136, 50, 51, 136, 136, 136, 136, 136, - /* 1030 */ 136, 58, 136, 136, 61, 62, 63, 64, 136, 66, - /* 1040 */ 136, 136, 69, 136, 136, 72, 79, 80, 81, 82, - /* 1050 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 1060 */ 93, 94, 95, 96, 97, 98, 136, 136, 101, 136, - /* 1070 */ 103, 136, 136, 136, 107, 108, 136, 110, 136, 112, - /* 1080 */ 113, 114, 136, 136, 136, 136, 136, 136, 136, 136, - /* 1090 */ 136, 136, 136, 126, 127, 128, 129, 136, 136, 136, - /* 1100 */ 136, 136, 135, 79, 80, 81, 82, 83, 84, 85, - /* 1110 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - /* 1120 */ 96, 97, 98, 136, 136, 101, 136, 103, 136, 83, - /* 1130 */ 136, 107, 108, 136, 110, 136, 112, 113, 114, 136, - /* 1140 */ 136, 95, 96, 136, 136, 99, 100, 101, 136, 136, - /* 1150 */ 126, 127, 128, 129, 136, 136, 136, 136, 136, 135, - /* 1160 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - /* 1170 */ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - /* 1180 */ 136, 136, 101, 136, 103, 136, 136, 136, 107, 108, - /* 1190 */ 136, 110, 136, 112, 113, 114, 136, 136, 136, 136, - /* 1200 */ 136, 136, 136, 136, 136, 136, 136, 126, 127, 128, - /* 1210 */ 129, 136, 136, 136, 136, 136, 135, 79, 80, 81, - /* 1220 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - /* 1230 */ 92, 93, 94, 95, 96, 97, 98, 136, 136, 101, - /* 1240 */ 136, 103, 136, 136, 136, 107, 108, 136, 110, 136, - /* 1250 */ 112, 113, 114, 136, 136, 136, 136, 136, 136, 136, - /* 1260 */ 136, 136, 136, 136, 126, 127, 128, 129, 136, 136, - /* 1270 */ 136, 136, 136, 135, 79, 80, 81, 82, 83, 84, - /* 1280 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - /* 1290 */ 95, 96, 97, 98, 136, 136, 101, 136, 103, 136, - /* 1300 */ 136, 136, 107, 108, 136, 110, 136, 112, 113, 114, - /* 1310 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 1320 */ 136, 126, 127, 128, 129, 136, 136, 136, 136, 136, - /* 1330 */ 135, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 1340 */ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - /* 1350 */ 98, 136, 136, 101, 136, 103, 136, 136, 136, 107, - /* 1360 */ 108, 136, 110, 136, 112, 113, 114, 136, 136, 136, - /* 1370 */ 136, 136, 136, 136, 136, 136, 136, 136, 126, 127, - /* 1380 */ 128, 129, 136, 136, 136, 136, 136, 135, 79, 80, - /* 1390 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - /* 1400 */ 91, 92, 93, 94, 95, 96, 97, 98, 136, 136, - /* 1410 */ 101, 136, 103, 136, 136, 136, 107, 108, 136, 110, - /* 1420 */ 136, 112, 113, 114, 136, 136, 136, 136, 136, 136, - /* 1430 */ 136, 136, 136, 136, 136, 126, 127, 128, 129, 136, - /* 1440 */ 136, 136, 136, 136, 135, 79, 80, 81, 82, 83, - /* 1450 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - /* 1460 */ 94, 95, 96, 97, 98, 136, 136, 101, 136, 103, - /* 1470 */ 136, 136, 136, 107, 108, 136, 110, 136, 112, 113, - /* 1480 */ 114, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 1490 */ 136, 136, 126, 127, 128, 129, 136, 136, 136, 136, - /* 1500 */ 136, 135, 79, 80, 81, 82, 83, 84, 85, 86, - /* 1510 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - /* 1520 */ 97, 98, 136, 136, 101, 136, 103, 136, 136, 136, - /* 1530 */ 107, 108, 136, 110, 136, 112, 113, 114, 136, 136, - /* 1540 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 126, - /* 1550 */ 127, 128, 129, 136, 136, 136, 136, 136, 135, 79, - /* 1560 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 1570 */ 90, 91, 92, 93, 94, 95, 96, 97, 98, 136, - /* 1580 */ 136, 101, 136, 103, 136, 136, 136, 107, 108, 136, - /* 1590 */ 110, 136, 112, 113, 114, 136, 136, 136, 136, 136, - /* 1600 */ 136, 136, 136, 136, 136, 136, 126, 127, 128, 129, - /* 1610 */ 136, 136, 136, 136, 136, 135, 79, 80, 81, 82, - /* 1620 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 1630 */ 93, 94, 95, 96, 97, 98, 136, 136, 101, 136, - /* 1640 */ 103, 136, 136, 136, 107, 108, 136, 110, 136, 112, - /* 1650 */ 113, 114, 136, 136, 136, 136, 136, 136, 136, 136, - /* 1660 */ 136, 136, 136, 126, 127, 128, 129, 136, 136, 136, - /* 1670 */ 136, 136, 135, 79, 80, 81, 82, 83, 84, 85, - /* 1680 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - /* 1690 */ 96, 97, 98, 136, 136, 101, 136, 103, 136, 136, - /* 1700 */ 136, 107, 108, 136, 110, 136, 112, 113, 114, 136, - /* 1710 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 1720 */ 126, 127, 128, 129, 136, 136, 136, 136, 136, 135, - /* 1730 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - /* 1740 */ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - /* 1750 */ 136, 136, 101, 136, 103, 136, 136, 136, 107, 108, - /* 1760 */ 136, 110, 136, 112, 113, 114, 136, 136, 136, 136, - /* 1770 */ 136, 136, 136, 136, 136, 136, 136, 126, 127, 128, - /* 1780 */ 129, 136, 136, 136, 136, 136, 135, 79, 80, 81, - /* 1790 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - /* 1800 */ 92, 93, 94, 95, 96, 97, 98, 136, 136, 101, - /* 1810 */ 136, 103, 136, 136, 136, 107, 108, 136, 110, 136, - /* 1820 */ 112, 113, 114, 136, 136, 136, 136, 136, 136, 136, - /* 1830 */ 136, 136, 136, 136, 126, 127, 128, 129, 136, 136, - /* 1840 */ 136, 136, 136, 135, 79, 80, 81, 82, 83, 84, - /* 1850 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - /* 1860 */ 95, 96, 97, 98, 136, 136, 101, 136, 103, 136, - /* 1870 */ 136, 136, 107, 108, 136, 110, 136, 112, 113, 114, - /* 1880 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 1890 */ 136, 126, 127, 128, 129, 136, 136, 136, 136, 136, - /* 1900 */ 135, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 1910 */ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - /* 1920 */ 98, 136, 136, 101, 136, 103, 136, 136, 136, 107, - /* 1930 */ 108, 136, 110, 136, 112, 113, 114, 136, 136, 136, - /* 1940 */ 136, 136, 136, 136, 136, 136, 136, 136, 126, 127, - /* 1950 */ 128, 129, 136, 136, 136, 136, 136, 135, 79, 80, - /* 1960 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - /* 1970 */ 91, 92, 93, 94, 95, 96, 97, 98, 136, 136, - /* 1980 */ 101, 136, 103, 136, 136, 136, 107, 108, 136, 110, - /* 1990 */ 136, 112, 113, 114, 136, 136, 136, 136, 136, 136, - /* 2000 */ 136, 136, 136, 136, 136, 126, 127, 128, 129, 136, - /* 2010 */ 136, 136, 136, 136, 135, 79, 80, 81, 82, 83, - /* 2020 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - /* 2030 */ 94, 95, 96, 97, 98, 136, 136, 101, 136, 103, - /* 2040 */ 136, 136, 136, 107, 108, 136, 110, 136, 112, 113, - /* 2050 */ 114, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 2060 */ 136, 136, 126, 127, 128, 129, 136, 136, 136, 136, - /* 2070 */ 136, 135, 79, 80, 81, 82, 83, 84, 85, 86, - /* 2080 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - /* 2090 */ 97, 98, 136, 136, 101, 136, 103, 136, 136, 136, - /* 2100 */ 107, 108, 136, 110, 136, 112, 113, 114, 136, 136, - /* 2110 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 126, - /* 2120 */ 127, 128, 129, 136, 136, 136, 136, 136, 135, 79, - /* 2130 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 2140 */ 90, 91, 92, 93, 94, 95, 96, 97, 98, 136, - /* 2150 */ 136, 101, 136, 103, 136, 136, 136, 107, 108, 136, - /* 2160 */ 110, 136, 112, 113, 114, 136, 136, 136, 136, 136, - /* 2170 */ 136, 136, 136, 136, 136, 136, 126, 127, 128, 129, - /* 2180 */ 136, 136, 136, 136, 136, 135, 79, 80, 81, 82, - /* 2190 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 2200 */ 93, 94, 95, 96, 97, 98, 136, 136, 101, 136, - /* 2210 */ 103, 136, 136, 136, 107, 108, 136, 110, 136, 112, - /* 2220 */ 113, 114, 136, 136, 136, 136, 136, 136, 136, 136, - /* 2230 */ 136, 136, 136, 126, 127, 128, 129, 136, 136, 136, - /* 2240 */ 136, 136, 135, 79, 80, 81, 82, 83, 84, 85, - /* 2250 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - /* 2260 */ 96, 97, 98, 136, 136, 101, 136, 103, 136, 136, - /* 2270 */ 136, 107, 108, 136, 110, 136, 112, 113, 114, 136, - /* 2280 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 2290 */ 126, 127, 128, 129, 136, 136, 136, 136, 136, 135, - /* 2300 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - /* 2310 */ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - /* 2320 */ 136, 136, 101, 136, 103, 136, 136, 136, 107, 108, - /* 2330 */ 136, 110, 136, 112, 113, 114, 136, 136, 136, 136, - /* 2340 */ 136, 136, 136, 136, 136, 136, 136, 126, 127, 128, - /* 2350 */ 129, 136, 136, 136, 136, 136, 135, 79, 80, 81, - /* 2360 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - /* 2370 */ 92, 93, 94, 95, 96, 97, 98, 136, 136, 101, - /* 2380 */ 136, 103, 136, 136, 136, 107, 108, 136, 110, 136, - /* 2390 */ 112, 113, 114, 136, 136, 136, 136, 136, 136, 136, - /* 2400 */ 136, 136, 136, 136, 126, 127, 128, 129, 136, 136, - /* 2410 */ 136, 136, 136, 135, 79, 80, 81, 82, 83, 84, - /* 2420 */ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - /* 2430 */ 95, 96, 97, 98, 136, 136, 101, 136, 103, 136, - /* 2440 */ 136, 136, 107, 108, 136, 110, 136, 112, 113, 114, - /* 2450 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 2460 */ 136, 126, 127, 128, 129, 136, 136, 136, 136, 136, - /* 2470 */ 135, 79, 80, 81, 82, 83, 84, 85, 86, 87, - /* 2480 */ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - /* 2490 */ 98, 136, 136, 101, 136, 103, 136, 136, 136, 107, - /* 2500 */ 108, 136, 110, 136, 112, 113, 114, 136, 136, 136, - /* 2510 */ 136, 136, 136, 136, 136, 136, 136, 136, 126, 127, - /* 2520 */ 128, 129, 136, 136, 136, 136, 136, 135, 79, 80, - /* 2530 */ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - /* 2540 */ 91, 92, 93, 94, 95, 96, 97, 98, 136, 136, - /* 2550 */ 101, 136, 103, 136, 136, 136, 107, 108, 136, 110, - /* 2560 */ 136, 112, 113, 114, 136, 136, 136, 136, 136, 136, - /* 2570 */ 136, 136, 136, 136, 136, 126, 127, 128, 129, 136, - /* 2580 */ 136, 136, 136, 136, 135, 79, 80, 81, 82, 83, - /* 2590 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - /* 2600 */ 94, 95, 96, 97, 98, 136, 136, 101, 136, 103, - /* 2610 */ 136, 136, 136, 107, 108, 136, 110, 136, 112, 113, - /* 2620 */ 114, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 2630 */ 136, 136, 126, 127, 128, 129, 136, 136, 136, 136, - /* 2640 */ 136, 135, 79, 80, 81, 82, 83, 84, 85, 86, - /* 2650 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - /* 2660 */ 97, 98, 136, 136, 101, 136, 103, 136, 136, 136, - /* 2670 */ 107, 108, 136, 110, 136, 112, 113, 114, 2, 136, - /* 2680 */ 4, 136, 6, 7, 8, 9, 10, 136, 136, 126, - /* 2690 */ 127, 128, 129, 136, 18, 19, 136, 21, 135, 136, - /* 2700 */ 136, 136, 136, 27, 28, 136, 30, 136, 32, 33, - /* 2710 */ 136, 136, 136, 136, 136, 136, 40, 41, 42, 43, - /* 2720 */ 44, 45, 46, 47, 48, 136, 50, 51, 136, 136, - /* 2730 */ 136, 136, 136, 136, 58, 136, 136, 61, 62, 63, - /* 2740 */ 136, 136, 66, 136, 136, 69, 136, 136, 72, 136, - /* 2750 */ 136, 2, 136, 4, 136, 6, 7, 8, 9, 10, - /* 2760 */ 136, 136, 136, 136, 136, 136, 136, 18, 19, 136, - /* 2770 */ 21, 136, 136, 136, 136, 136, 27, 28, 136, 30, - /* 2780 */ 136, 32, 33, 136, 136, 136, 136, 136, 136, 40, - /* 2790 */ 41, 42, 43, 44, 45, 46, 47, 48, 136, 50, - /* 2800 */ 51, 136, 136, 136, 136, 136, 136, 58, 136, 136, - /* 2810 */ 61, 62, 63, 136, 136, 66, 136, 136, 69, 136, - /* 2820 */ 136, 72, 79, 80, 81, 82, 83, 84, 85, 86, - /* 2830 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - /* 2840 */ 97, 98, 136, 136, 101, 136, 103, 136, 136, 136, - /* 2850 */ 107, 108, 136, 110, 136, 112, 113, 114, 2, 136, - /* 2860 */ 4, 136, 6, 7, 8, 9, 10, 136, 136, 126, - /* 2870 */ 127, 128, 129, 136, 18, 19, 136, 21, 135, 136, - /* 2880 */ 136, 136, 136, 27, 28, 136, 30, 136, 32, 33, - /* 2890 */ 136, 136, 136, 136, 136, 136, 40, 41, 42, 43, - /* 2900 */ 44, 45, 46, 47, 48, 136, 50, 51, 136, 136, - /* 2910 */ 136, 136, 136, 136, 58, 136, 136, 61, 62, 63, - /* 2920 */ 136, 136, 66, 136, 136, 69, 136, 136, 72, 136, - /* 2930 */ 136, 2, 136, 4, 136, 6, 7, 8, 9, 10, - /* 2940 */ 136, 136, 136, 136, 136, 136, 136, 18, 19, 136, - /* 2950 */ 21, 136, 136, 136, 136, 136, 27, 28, 136, 30, - /* 2960 */ 136, 32, 33, 136, 136, 136, 136, 136, 136, 40, - /* 2970 */ 41, 42, 43, 44, 45, 46, 47, 48, 136, 50, - /* 2980 */ 51, 136, 136, 136, 136, 136, 136, 58, 136, 136, - /* 2990 */ 61, 62, 63, 136, 136, 66, 136, 136, 69, 136, - /* 3000 */ 136, 72, 79, 80, 81, 82, 83, 84, 85, 86, - /* 3010 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - /* 3020 */ 97, 98, 136, 136, 101, 136, 103, 136, 136, 136, - /* 3030 */ 107, 108, 136, 110, 136, 112, 113, 114, 136, 136, - /* 3040 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 126, - /* 3050 */ 127, 128, 129, 136, 136, 136, 136, 136, 135, 79, - /* 3060 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 3070 */ 90, 91, 92, 93, 94, 95, 96, 97, 98, 136, - /* 3080 */ 136, 101, 136, 103, 136, 136, 136, 107, 108, 136, - /* 3090 */ 110, 136, 112, 113, 114, 2, 136, 4, 136, 6, - /* 3100 */ 7, 8, 9, 10, 136, 136, 126, 127, 128, 129, - /* 3110 */ 136, 18, 19, 136, 21, 135, 136, 136, 136, 136, - /* 3120 */ 27, 28, 136, 30, 136, 32, 33, 136, 136, 136, - /* 3130 */ 136, 136, 136, 40, 41, 42, 43, 44, 45, 46, - /* 3140 */ 47, 48, 136, 50, 51, 136, 136, 136, 136, 136, - /* 3150 */ 136, 58, 136, 136, 61, 62, 63, 136, 136, 66, - /* 3160 */ 136, 136, 69, 136, 136, 72, 136, 136, 2, 136, - /* 3170 */ 4, 136, 6, 7, 8, 9, 10, 136, 136, 136, - /* 3180 */ 136, 136, 136, 136, 18, 19, 136, 136, 22, 136, - /* 3190 */ 136, 136, 136, 27, 28, 136, 30, 136, 32, 33, - /* 3200 */ 136, 136, 136, 136, 136, 136, 40, 41, 42, 43, - /* 3210 */ 44, 45, 46, 47, 48, 136, 50, 51, 136, 136, - /* 3220 */ 136, 136, 136, 136, 58, 136, 136, 61, 62, 63, - /* 3230 */ 136, 136, 66, 136, 136, 69, 136, 136, 72, 136, - /* 3240 */ 136, 2, 136, 4, 136, 6, 7, 8, 9, 10, - /* 3250 */ 136, 136, 136, 136, 136, 136, 136, 18, 19, 136, - /* 3260 */ 21, 136, 136, 136, 136, 136, 27, 28, 136, 30, - /* 3270 */ 136, 32, 33, 136, 136, 136, 136, 136, 136, 40, - /* 3280 */ 41, 42, 43, 44, 45, 46, 47, 48, 136, 50, - /* 3290 */ 51, 136, 136, 136, 136, 136, 136, 58, 136, 136, - /* 3300 */ 61, 62, 63, 136, 136, 66, 136, 136, 69, 136, - /* 3310 */ 136, 72, 79, 80, 81, 82, 83, 84, 85, 86, - /* 3320 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - /* 3330 */ 97, 98, 136, 136, 101, 136, 103, 136, 136, 136, - /* 3340 */ 107, 108, 136, 110, 136, 112, 113, 114, 136, 136, - /* 3350 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 126, - /* 3360 */ 127, 128, 129, 136, 136, 136, 136, 136, 135, 79, - /* 3370 */ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - /* 3380 */ 90, 91, 92, 93, 94, 95, 96, 97, 98, 136, - /* 3390 */ 136, 101, 136, 103, 136, 136, 136, 107, 108, 136, - /* 3400 */ 110, 136, 112, 113, 114, 136, 136, 136, 136, 136, - /* 3410 */ 136, 136, 136, 136, 136, 136, 126, 127, 128, 129, - /* 3420 */ 136, 136, 136, 136, 136, 135, 79, 80, 81, 82, - /* 3430 */ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - /* 3440 */ 93, 94, 95, 96, 97, 98, 136, 136, 101, 136, - /* 3450 */ 103, 136, 136, 136, 107, 108, 136, 110, 136, 112, - /* 3460 */ 113, 114, 136, 136, 136, 136, 136, 136, 136, 136, - /* 3470 */ 136, 136, 136, 126, 127, 128, 129, 136, 136, 136, - /* 3480 */ 136, 136, 135, 79, 80, 81, 82, 83, 84, 85, - /* 3490 */ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - /* 3500 */ 96, 97, 98, 136, 136, 101, 136, 103, 136, 136, - /* 3510 */ 136, 107, 108, 136, 110, 136, 112, 113, 114, 136, - /* 3520 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 3530 */ 126, 127, 128, 129, 136, 136, 136, 136, 136, 135, - /* 3540 */ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - /* 3550 */ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - /* 3560 */ 136, 136, 101, 136, 103, 136, 136, 136, 107, 108, - /* 3570 */ 136, 110, 136, 112, 113, 114, 136, 136, 136, 136, - /* 3580 */ 136, 136, 136, 136, 136, 136, 136, 126, 127, 128, - /* 3590 */ 129, 136, 136, 136, 136, 136, 135, 79, 80, 81, - /* 3600 */ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - /* 3610 */ 92, 93, 94, 95, 96, 97, 98, 136, 136, 101, - /* 3620 */ 136, 103, 136, 136, 136, 107, 108, 136, 110, 136, - /* 3630 */ 112, 113, 114, 2, 136, 4, 136, 6, 7, 8, - /* 3640 */ 9, 10, 136, 136, 126, 127, 128, 129, 136, 18, - /* 3650 */ 19, 136, 21, 135, 136, 136, 136, 136, 27, 28, - /* 3660 */ 136, 30, 136, 32, 33, 136, 136, 136, 136, 136, - /* 3670 */ 136, 40, 41, 42, 43, 44, 45, 46, 47, 48, - /* 3680 */ 136, 50, 51, 136, 136, 136, 136, 136, 136, 58, - /* 3690 */ 136, 136, 61, 62, 63, 136, 136, 66, 136, 136, - /* 3700 */ 69, 136, 136, 72, 136, 79, 80, 81, 82, 83, - /* 3710 */ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - /* 3720 */ 94, 95, 96, 97, 98, 136, 136, 101, 136, 103, - /* 3730 */ 136, 136, 136, 107, 108, 136, 110, 136, 112, 113, - /* 3740 */ 114, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 3750 */ 136, 136, 126, 127, 128, 129, 136, 136, 136, 136, - /* 3760 */ 136, 135, 79, 80, 81, 82, 83, 84, 85, 86, - /* 3770 */ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - /* 3780 */ 97, 98, 136, 136, 101, 136, 103, 136, 136, 136, - /* 3790 */ 107, 108, 136, 110, 136, 112, 113, 114, 2, 136, - /* 3800 */ 4, 136, 6, 7, 8, 9, 10, 136, 136, 126, - /* 3810 */ 127, 128, 129, 136, 18, 19, 136, 136, 135, 136, - /* 3820 */ 136, 136, 136, 27, 28, 136, 30, 136, 32, 33, - /* 3830 */ 136, 136, 136, 136, 136, 136, 40, 41, 42, 43, - /* 3840 */ 44, 45, 46, 47, 48, 136, 50, 51, 136, 36, - /* 3850 */ 37, 38, 136, 136, 58, 136, 136, 61, 62, 63, - /* 3860 */ 136, 136, 66, 136, 136, 69, 136, 54, 72, 56, - /* 3870 */ 57, 2, 34, 60, 36, 37, 38, 8, 9, 10, - /* 3880 */ 136, 136, 136, 136, 136, 136, 136, 18, 19, 136, - /* 3890 */ 136, 136, 54, 136, 56, 57, 27, 28, 60, 30, - /* 3900 */ 136, 32, 33, 136, 136, 136, 136, 136, 136, 40, - /* 3910 */ 41, 42, 43, 44, 45, 46, 47, 48, 136, 50, - /* 3920 */ 51, 136, 9, 136, 136, 136, 136, 58, 136, 136, - /* 3930 */ 61, 62, 63, 20, 21, 66, 136, 136, 69, 136, - /* 3940 */ 1, 72, 136, 4, 136, 6, 7, 136, 136, 136, - /* 3950 */ 136, 136, 136, 136, 41, 42, 43, 44, 45, 46, - /* 3960 */ 136, 136, 23, 24, 25, 26, 27, 28, 29, 136, - /* 3970 */ 31, 58, 136, 136, 61, 62, 63, 136, 136, 136, - /* 3980 */ 136, 136, 69, 136, 1, 21, 136, 4, 136, 6, - /* 3990 */ 7, 136, 53, 136, 136, 136, 136, 136, 34, 136, - /* 4000 */ 36, 37, 38, 136, 65, 136, 23, 24, 25, 26, - /* 4010 */ 27, 28, 29, 136, 31, 136, 83, 136, 54, 77, - /* 4020 */ 56, 57, 136, 136, 60, 136, 84, 85, 95, 96, - /* 4030 */ 136, 136, 99, 100, 101, 136, 53, 95, 96, 97, - /* 4040 */ 98, 1, 136, 101, 4, 136, 6, 7, 65, 107, - /* 4050 */ 108, 118, 110, 136, 112, 113, 114, 136, 136, 136, - /* 4060 */ 136, 21, 136, 23, 24, 25, 26, 27, 28, 29, - /* 4070 */ 1, 31, 136, 4, 136, 6, 7, 136, 136, 136, - /* 4080 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 4090 */ 136, 22, 23, 24, 25, 26, 27, 28, 29, 1, - /* 4100 */ 31, 136, 4, 136, 6, 7, 136, 136, 136, 136, - /* 4110 */ 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, - /* 4120 */ 22, 23, 24, 25, 26, 27, 28, 29, 1, 31, - /* 4130 */ 136, 4, 136, 6, 7, 136, 136, 136, 136, 136, - /* 4140 */ 136, 136, 136, 136, 136, 136, 136, 136, 84, 85, - /* 4150 */ 23, 24, 25, 26, 27, 28, 29, 136, 31, 95, - /* 4160 */ 96, 97, 98, 136, 136, 101, 136, 136, 136, 136, - /* 4170 */ 136, 107, 108, 136, 110, 136, 112, 113, 114, 136, - /* 4180 */ 53, 136, 1, 136, 136, 4, 136, 6, 7, 136, - /* 4190 */ 136, 136, 136, 136, 136, 9, 136, 136, 136, 136, - /* 4200 */ 136, 136, 21, 136, 23, 24, 25, 26, 27, 28, - /* 4210 */ 29, 1, 31, 136, 4, 136, 6, 7, 136, 136, - /* 4220 */ 136, 136, 136, 136, 136, 136, 136, 41, 42, 43, - /* 4230 */ 44, 45, 46, 23, 24, 25, 26, 27, 28, 29, - /* 4240 */ 1, 31, 136, 4, 58, 6, 7, 61, 62, 63, - /* 4250 */ 136, 136, 136, 136, 136, 69, 136, 136, 136, 136, - /* 4260 */ 136, 22, 23, 24, 25, 26, 27, 28, 29, 136, - /* 4270 */ 31, 136, 84, 85, 64, 136, 136, 136, 136, 136, - /* 4280 */ 136, 136, 136, 95, 96, 97, 98, 136, 136, 101, - /* 4290 */ 136, 136, 84, 85, 136, 107, 108, 136, 110, 136, - /* 4300 */ 112, 113, 114, 95, 96, 97, 98, 136, 34, 101, - /* 4310 */ 36, 37, 38, 136, 136, 107, 108, 136, 110, 136, - /* 4320 */ 112, 113, 114, 136, 84, 85, 136, 136, 54, 136, - /* 4330 */ 56, 57, 136, 136, 60, 95, 96, 97, 98, 1, - /* 4340 */ 136, 101, 4, 136, 6, 7, 136, 107, 108, 136, - /* 4350 */ 110, 136, 112, 113, 114, 136, 136, 136, 136, 136, - /* 4360 */ 136, 23, 24, 25, 26, 27, 28, 29, 4, 31, - /* 4370 */ 6, 7, 136, 136, 136, 136, 136, 136, 14, 136, - /* 4380 */ 136, 136, 136, 136, 136, 136, 136, 23, 24, 25, - /* 4390 */ 26, 27, 28, 29, 4, 31, 6, 7, 136, 136, - /* 4400 */ 136, 136, 136, 136, 14, 136, 136, 136, 136, 4, - /* 4410 */ 136, 6, 7, 23, 24, 25, 26, 27, 28, 29, - /* 4420 */ 136, 31, 136, 136, 136, 136, 136, 136, 23, 24, - /* 4430 */ 25, 26, 27, 28, 29, 136, 31, 20, 21, 136, - /* 4440 */ 136, 136, 136, 136, 136, 83, 136, 136, 136, 136, - /* 4450 */ 136, 34, 136, 36, 37, 38, 136, 95, 96, 136, - /* 4460 */ 136, 99, 100, 101, 136, 136, 136, 136, 136, 136, - /* 4470 */ 136, 54, 136, 56, 57, 136, 136, 60, 136, 136, - /* 4480 */ 118, -); - const YY_SHIFT_USE_DFLT = -27; - const YY_SHIFT_MAX = 186; - static public $yy_shift_ofst = array( - /* 0 */ 2676, 676, 973, 900, 973, 3093, 3093, 3166, 3239, 3796, - /* 10 */ 3796, 3796, 2676, 3796, 3796, 2749, 2929, 2856, 3631, 3796, - /* 20 */ 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, - /* 30 */ 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, - /* 40 */ 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, - /* 50 */ 3796, 3796, 3796, 3796, 3869, 3913, 4186, 4186, 4186, 4186, - /* 60 */ 912, 912, 328, 912, 912, 328, 915, 100, 3939, 3983, - /* 70 */ 4040, 4040, 3964, 3964, 100, 4239, 4069, 4210, 4098, 4181, - /* 80 */ 4127, 4338, 4338, 4338, 4338, 4338, 4338, 4390, 4338, 4338, - /* 90 */ 4364, 4338, 4405, 4405, 4405, 17, 417, 589, 474, 532, - /* 100 */ 532, 532, 3838, 532, 532, 3838, 532, 532, 532, 73, - /* 110 */ 3813, 3813, 187, 242, 85, 80, 80, -2, -2, -2, - /* 120 */ -2, 366, 366, 319, 319, 4417, 2, 773, 2, 33, - /* 130 */ 200, 234, 158, 71, -26, 339, 52, 52, 61, 61, - /* 140 */ 374, 91, 339, 339, 374, 374, 52, 374, 52, 61, - /* 150 */ 52, 61, 61, 61, 61, 61, 52, 91, 61, 61, - /* 160 */ 4274, 4274, 295, 648, 580, 866, 750, 418, 465, 305, - /* 170 */ 112, 18, 303, 92, 189, 93, 289, 327, 208, 240, - /* 180 */ 312, 275, 277, 220, 261, 313, 306, -); - const YY_REDUCE_USE_DFLT = -80; - const YY_REDUCE_MAX = 159; - static public $yy_reduce_ofst = array( - /* 0 */ -75, 267, 210, -18, 39, 153, 96, 563, 382, 497, - /* 10 */ 439, 324, 672, 730, 787, 2743, 3290, 3233, 3518, 3404, - /* 20 */ 3347, 3683, 3626, 2107, 1366, 1024, 1594, 1423, 1309, 1252, - /* 30 */ 1138, 1195, 2449, 2221, 2278, 2335, 1708, 2050, 1765, 1879, - /* 40 */ 1993, 1936, 1822, 2392, 2164, 1651, 967, 1480, 1537, 1081, - /* 50 */ 3461, 2506, 2563, 2923, 2980, 3942, 4188, 4208, 4240, 4064, - /* 60 */ 4362, 3933, 686, 752, 1046, 49, 857, 64, 585, 618, - /* 70 */ 149, 206, 586, 519, 177, -79, -79, -79, -79, -79, - /* 80 */ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, - /* 90 */ -79, -79, -79, -79, -79, -79, -79, -79, -79, -79, - /* 100 */ -79, -79, 617, -79, -79, 518, -79, -79, -79, -79, - /* 110 */ 617, 518, -79, -79, -79, 72, 72, -79, -79, -79, - /* 120 */ -79, -79, -79, 119, 124, 321, 286, 266, 309, 266, - /* 130 */ 322, 310, 258, 257, 273, 252, 283, 248, 308, 346, - /* 140 */ 387, 380, 329, 315, 325, 350, 360, 352, 333, 404, - /* 150 */ 248, 143, 150, 152, 130, -43, 276, 69, 182, 253, -); - static public $yyExpectedTokens = array( - /* 0 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 1 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 53, 58, 61, 62, 63, 65, 66, 69, 72, ), - /* 2 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 64, 66, 69, 72, ), - /* 3 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 35, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 4 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 64, 66, 69, 72, ), - /* 5 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 6 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 7 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 22, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 8 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 9 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 10 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 11 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 12 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 13 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 14 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 15 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 16 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 17 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 18 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 21, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 19 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 20 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 21 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 22 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 23 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 24 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 25 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 26 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 27 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 28 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 29 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 30 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 31 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 32 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 33 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 34 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 35 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 36 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 37 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 38 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 39 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 40 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 41 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 42 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 43 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 44 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 45 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 46 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 47 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 48 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 49 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 50 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 51 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 52 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 53 */ array(2, 4, 6, 7, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 54 */ array(2, 8, 9, 10, 18, 19, 27, 28, 30, 32, 33, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 58, 61, 62, 63, 66, 69, 72, ), - /* 55 */ array(9, 20, 21, 41, 42, 43, 44, 45, 46, 58, 61, 62, 63, 69, ), - /* 56 */ array(9, 41, 42, 43, 44, 45, 46, 58, 61, 62, 63, 69, ), - /* 57 */ array(9, 41, 42, 43, 44, 45, 46, 58, 61, 62, 63, 69, ), - /* 58 */ array(9, 41, 42, 43, 44, 45, 46, 58, 61, 62, 63, 69, ), - /* 59 */ array(9, 41, 42, 43, 44, 45, 46, 58, 61, 62, 63, 69, ), - /* 60 */ array(41, 42, 43, 47, 62, ), - /* 61 */ array(41, 42, 43, 47, 62, ), - /* 62 */ array(41, 58, 62, 63, ), - /* 63 */ array(41, 42, 43, 47, 62, ), - /* 64 */ array(41, 42, 43, 47, 62, ), - /* 65 */ array(41, 58, 62, 63, ), - /* 66 */ array(41, 58, 63, 71, ), - /* 67 */ array(41, 58, 63, ), - /* 68 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, 53, 65, ), - /* 69 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, 53, 65, ), - /* 70 */ array(1, 4, 6, 7, 21, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 71 */ array(1, 4, 6, 7, 21, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 72 */ array(21, 34, 36, 37, 38, 54, 56, 57, 60, ), - /* 73 */ array(21, 34, 36, 37, 38, 54, 56, 57, 60, ), - /* 74 */ array(41, 58, 63, ), - /* 75 */ array(1, 4, 6, 7, 22, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 76 */ array(1, 4, 6, 7, 22, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 77 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, 64, ), - /* 78 */ array(1, 4, 6, 7, 22, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 79 */ array(1, 4, 6, 7, 21, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 80 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, 53, ), - /* 81 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 82 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 83 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 84 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 85 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 86 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 87 */ array(4, 6, 7, 14, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 88 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 89 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 90 */ array(4, 6, 7, 14, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 91 */ array(1, 4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 92 */ array(4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 93 */ array(4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 94 */ array(4, 6, 7, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 95 */ array(13, 14, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 96 */ array(13, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 97 */ array(14, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 98 */ array(14, 23, 24, 25, 26, 27, 28, 29, 31, ), - /* 99 */ array(23, 24, 25, 26, 27, 28, 29, 31, ), - /* 100 */ array(23, 24, 25, 26, 27, 28, 29, 31, ), - /* 101 */ array(23, 24, 25, 26, 27, 28, 29, 31, ), - /* 102 */ array(34, 36, 37, 38, 54, 56, 57, 60, ), - /* 103 */ array(23, 24, 25, 26, 27, 28, 29, 31, ), - /* 104 */ array(23, 24, 25, 26, 27, 28, 29, 31, ), - /* 105 */ array(34, 36, 37, 38, 54, 56, 57, 60, ), - /* 106 */ array(23, 24, 25, 26, 27, 28, 29, 31, ), - /* 107 */ array(23, 24, 25, 26, 27, 28, 29, 31, ), - /* 108 */ array(23, 24, 25, 26, 27, 28, 29, 31, ), - /* 109 */ array(24, 25, 26, 27, 28, 29, 31, ), - /* 110 */ array(36, 37, 38, 54, 56, 57, 60, ), - /* 111 */ array(36, 37, 38, 54, 56, 57, 60, ), - /* 112 */ array(25, 26, 27, 28, 29, 31, ), - /* 113 */ array(26, 27, 28, 29, 31, ), - /* 114 */ array(27, 28, 29, 31, ), - /* 115 */ array(1, 4, 6, 7, ), - /* 116 */ array(1, 4, 6, 7, ), - /* 117 */ array(29, 31, ), - /* 118 */ array(29, 31, ), - /* 119 */ array(29, 31, ), - /* 120 */ array(29, 31, ), - /* 121 */ array(31, ), - /* 122 */ array(31, ), - /* 123 */ array(73, ), - /* 124 */ array(73, ), - /* 125 */ array(20, 21, 34, 36, 37, 38, 54, 56, 57, 60, ), - /* 126 */ array(54, 56, 57, ), - /* 127 */ array(3, 22, 73, ), - /* 128 */ array(54, 56, 57, ), - /* 129 */ array(3, 22, 73, ), - /* 130 */ array(2, 21, ), - /* 131 */ array(21, 52, ), - /* 132 */ array(11, 12, ), - /* 133 */ array(67, 68, ), - /* 134 */ array(50, 51, ), - /* 135 */ array(34, ), - /* 136 */ array(41, ), - /* 137 */ array(41, ), - /* 138 */ array(21, ), - /* 139 */ array(21, ), - /* 140 */ array(52, ), - /* 141 */ array(52, ), - /* 142 */ array(34, ), - /* 143 */ array(34, ), - /* 144 */ array(52, ), - /* 145 */ array(52, ), - /* 146 */ array(41, ), - /* 147 */ array(52, ), - /* 148 */ array(41, ), - /* 149 */ array(21, ), - /* 150 */ array(41, ), - /* 151 */ array(21, ), - /* 152 */ array(21, ), - /* 153 */ array(21, ), - /* 154 */ array(21, ), - /* 155 */ array(21, ), - /* 156 */ array(41, ), - /* 157 */ array(52, ), - /* 158 */ array(21, ), - /* 159 */ array(21, ), - /* 160 */ array(34, 36, 37, 38, 54, 56, 57, 60, ), - /* 161 */ array(34, 36, 37, 38, 54, 56, 57, 60, ), - /* 162 */ array(17, 20, 32, 33, ), - /* 163 */ array(21, 39, 52, 64, ), - /* 164 */ array(21, 22, 39, ), - /* 165 */ array(21, 39, 59, ), - /* 166 */ array(21, 22, 39, ), - /* 167 */ array(21, 39, 64, ), - /* 168 */ array(21, 22, 39, ), - /* 169 */ array(21, 35, 39, ), - /* 170 */ array(49, 52, ), - /* 171 */ array(39, 70, ), - /* 172 */ array(22, 39, ), - /* 173 */ array(15, 53, ), - /* 174 */ array(22, 39, ), - /* 175 */ array(22, ), - /* 176 */ array(52, ), - /* 177 */ array(39, ), - /* 178 */ array(22, ), - /* 179 */ array(70, ), - /* 180 */ array(55, ), - /* 181 */ array(39, ), - /* 182 */ array(39, ), - /* 183 */ array(67, ), - /* 184 */ array(3, ), - /* 185 */ array(16, ), - /* 186 */ array(15, ), - /* 187 */ array(), - /* 188 */ array(), - /* 189 */ array(), - /* 190 */ array(), - /* 191 */ array(), - /* 192 */ array(), - /* 193 */ array(), - /* 194 */ array(), - /* 195 */ array(), - /* 196 */ array(), - /* 197 */ array(), - /* 198 */ array(), - /* 199 */ array(), - /* 200 */ array(), - /* 201 */ array(), - /* 202 */ array(), - /* 203 */ array(), - /* 204 */ array(), - /* 205 */ array(), - /* 206 */ array(), - /* 207 */ array(), - /* 208 */ array(), - /* 209 */ array(), - /* 210 */ array(), - /* 211 */ array(), - /* 212 */ array(), - /* 213 */ array(), - /* 214 */ array(), - /* 215 */ array(), - /* 216 */ array(), - /* 217 */ array(), - /* 218 */ array(), - /* 219 */ array(), - /* 220 */ array(), - /* 221 */ array(), - /* 222 */ array(), - /* 223 */ array(), - /* 224 */ array(), - /* 225 */ array(), - /* 226 */ array(), - /* 227 */ array(), - /* 228 */ array(), - /* 229 */ array(), - /* 230 */ array(), - /* 231 */ array(), - /* 232 */ array(), - /* 233 */ array(), - /* 234 */ array(), - /* 235 */ array(), - /* 236 */ array(), - /* 237 */ array(), - /* 238 */ array(), - /* 239 */ array(), - /* 240 */ array(), - /* 241 */ array(), - /* 242 */ array(), - /* 243 */ array(), - /* 244 */ array(), - /* 245 */ array(), - /* 246 */ array(), - /* 247 */ array(), - /* 248 */ array(), - /* 249 */ array(), - /* 250 */ array(), - /* 251 */ array(), - /* 252 */ array(), - /* 253 */ array(), - /* 254 */ array(), - /* 255 */ array(), - /* 256 */ array(), - /* 257 */ array(), - /* 258 */ array(), - /* 259 */ array(), - /* 260 */ array(), - /* 261 */ array(), - /* 262 */ array(), - /* 263 */ array(), - /* 264 */ array(), - /* 265 */ array(), - /* 266 */ array(), - /* 267 */ array(), - /* 268 */ array(), - /* 269 */ array(), - /* 270 */ array(), - /* 271 */ array(), - /* 272 */ array(), - /* 273 */ array(), - /* 274 */ array(), - /* 275 */ array(), - /* 276 */ array(), - /* 277 */ array(), - /* 278 */ array(), - /* 279 */ array(), - /* 280 */ array(), - /* 281 */ array(), - /* 282 */ array(), - /* 283 */ array(), - /* 284 */ array(), - /* 285 */ array(), - /* 286 */ array(), - /* 287 */ array(), - /* 288 */ array(), - /* 289 */ array(), - /* 290 */ array(), - /* 291 */ array(), - /* 292 */ array(), - /* 293 */ array(), - /* 294 */ array(), - /* 295 */ array(), - /* 296 */ array(), - /* 297 */ array(), - /* 298 */ array(), - /* 299 */ array(), - /* 300 */ array(), - /* 301 */ array(), - /* 302 */ array(), - /* 303 */ array(), - /* 304 */ array(), - /* 305 */ array(), - /* 306 */ array(), - /* 307 */ array(), - /* 308 */ array(), - /* 309 */ array(), - /* 310 */ array(), - /* 311 */ array(), - /* 312 */ array(), - /* 313 */ array(), -); - static public $yy_default = array( - /* 0 */ 314, 508, 508, 508, 508, 508, 508, 508, 508, 508, - /* 10 */ 508, 363, 508, 319, 508, 508, 508, 508, 508, 508, - /* 20 */ 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, - /* 30 */ 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, - /* 40 */ 508, 508, 508, 508, 508, 508, 508, 428, 508, 508, - /* 50 */ 508, 508, 508, 508, 356, 403, 508, 508, 508, 508, - /* 60 */ 398, 398, 364, 508, 363, 508, 508, 508, 435, 395, - /* 70 */ 508, 508, 405, 409, 508, 508, 508, 508, 508, 508, - /* 80 */ 435, 438, 488, 369, 489, 427, 349, 449, 320, 429, - /* 90 */ 447, 437, 448, 450, 456, 469, 471, 473, 470, 475, - /* 100 */ 355, 346, 326, 472, 507, 327, 505, 474, 444, 503, - /* 110 */ 415, 415, 502, 504, 501, 321, 508, 499, 492, 498, - /* 120 */ 491, 500, 490, 508, 508, 407, 508, 508, 508, 508, - /* 130 */ 508, 508, 508, 439, 508, 508, 508, 508, 508, 508, - /* 140 */ 362, 362, 508, 413, 362, 362, 390, 362, 508, 508, - /* 150 */ 420, 508, 508, 508, 508, 508, 508, 362, 508, 508, - /* 160 */ 494, 493, 379, 425, 508, 508, 508, 508, 508, 508, - /* 170 */ 508, 508, 508, 367, 508, 508, 467, 482, 508, 508, - /* 180 */ 508, 508, 315, 440, 486, 348, 382, 337, 466, 358, - /* 190 */ 396, 316, 406, 397, 425, 351, 352, 506, 402, 353, - /* 200 */ 350, 460, 400, 347, 401, 417, 371, 373, 468, 372, - /* 210 */ 464, 318, 399, 368, 465, 366, 354, 462, 463, 365, - /* 220 */ 370, 418, 392, 324, 457, 359, 360, 361, 452, 338, - /* 230 */ 461, 357, 387, 317, 375, 378, 383, 384, 385, 386, - /* 240 */ 381, 380, 495, 496, 339, 458, 453, 329, 330, 331, - /* 250 */ 332, 328, 412, 389, 377, 393, 394, 333, 334, 343, - /* 260 */ 344, 345, 388, 342, 341, 335, 336, 340, 411, 416, - /* 270 */ 480, 478, 479, 455, 483, 487, 481, 391, 484, 485, - /* 280 */ 422, 323, 432, 430, 434, 433, 322, 423, 374, 431, - /* 290 */ 436, 477, 476, 419, 421, 424, 426, 414, 382, 408, - /* 300 */ 410, 379, 442, 441, 451, 454, 325, 459, 446, 445, - /* 310 */ 443, 497, 376, 404, -); -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** self::YYNOCODE is a number which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** self::YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** self::YYSTACKDEPTH is the maximum depth of the parser's stack. -** self::YYNSTATE the combined number of states. -** self::YYNRULE the number of rules in the grammar -** self::YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ - const YYNOCODE = 137; - const YYSTACKDEPTH = 100; - const YYNSTATE = 314; - const YYNRULE = 194; - const YYERRORSYMBOL = 74; - const YYERRSYMDT = 'yy0'; - const YYFALLBACK = 0; - /** The next table maps tokens into fallback tokens. If a construct - * like the following: - * - * %fallback ID X Y Z. - * - * appears in the grammer, then ID becomes a fallback token for X, Y, - * and Z. Whenever one of the tokens X, Y, or Z is input to the parser - * but it does not parse, the type of the token is changed to ID and - * the parse is retried before an error is thrown. - */ - static public $yyFallback = array( - ); - /** - * Turn parser tracing on by giving a stream to which to write the trace - * and a prompt to preface each trace message. Tracing is turned off - * by making either argument NULL - * - * Inputs: - * - * - A stream resource to which trace output should be written. - * If NULL, then tracing is turned off. - * - A prefix string written at the beginning of every - * line of trace output. If NULL, then tracing is - * turned off. - * - * Outputs: - * - * - None. - * @param resource - * @param string - */ - static function Trace($TraceFILE, $zTracePrompt) - { - if (!$TraceFILE) { - $zTracePrompt = 0; - } elseif (!$zTracePrompt) { - $TraceFILE = 0; - } - self::$yyTraceFILE = $TraceFILE; - self::$yyTracePrompt = $zTracePrompt; - } - - /** - * Output debug information to output (php://output stream) - */ - static function PrintTrace() - { - self::$yyTraceFILE = fopen('php://output', 'w'); - self::$yyTracePrompt = ''; - } - - /** - * @var resource|0 - */ - static public $yyTraceFILE; - /** - * String to prepend to debug output - * @var string|0 - */ - static public $yyTracePrompt; - /** - * @var int - */ - public $yyidx = -1; /* Index of top element in stack */ - /** - * @var int - */ - public $yyerrcnt; /* Shifts left before out of the error */ - /** - * @var array - */ - public $yystack = array(); /* The parser's stack */ - - /** - * For tracing shifts, the names of all terminals and nonterminals - * are required. The following table supplies these names - * @var array - */ - static public $yyTokenName = array( - '$', 'YY_POST_IF', 'YY_IF', 'YY_ELSE', - 'YY_FOR', 'YY_DO', 'YY_WHILE', 'YY_UNTIL', - 'YY_LOOP', 'YY_SUPER', 'YY_CLASS', 'YY_FORIN', - 'YY_FOROF', 'YY_BY', 'YY_WHEN', 'YY_EQUALS', - 'YY_COLON', 'YY_COMPOUND_ASSIGN', 'YY_RETURN', 'YY_THROW', - 'YY_EXTENDS', 'YY_INDENT', 'YY_OUTDENT', 'YY_LOGIC', - 'YY_COMPARE', 'YY_RELATION', 'YY_SHIFT', 'YY_PLUS', - 'YY_MINUS', 'YY_MATH', 'YY_UNARY', 'YY_EXISTENTIAL', - 'YY_INCREMENT', 'YY_DECREMENT', 'YY_CALL_START', 'YY_CALL_END', - 'YY_ACCESSOR', 'YY_EXISTENTIAL_ACCESSOR', 'YY_PROTOTYPE', 'YY_TERMINATOR', - 'YY_STATEMENT', 'YY_IDENTIFIER', 'YY_NUMBER', 'YY_STRING', - 'YY_JS', 'YY_REGEX', 'YY_BOOL', 'YY_HERECOMMENT', - 'YY_PARAM_START', 'YY_PARAM_END', 'YY_FUNC', 'YY_BOUND_FUNC', - 'YY_COMMA', 'YY_RANGE_EXCLUSIVE', 'YY_INDEX_START', 'YY_INDEX_END', - 'YY_INDEX_SOAK', 'YY_INDEX_PROTO', 'YY_OBJECT_START', 'YY_OBJECT_END', - 'YY_FUNC_EXIST', 'YY_THIS', 'YY_AT_SIGN', 'YY_ARRAY_START', - 'YY_ARRAY_END', 'YY_RANGE_INCLUSIVE', 'YY_TRY', 'YY_FINALLY', - 'YY_CATCH', 'YY_PAREN_START', 'YY_PAREN_END', 'YY_OWN', - 'YY_SWITCH', 'YY_LEADING_WHEN', 'error', 'root', - 'body', 'block', 'line', 'expression', - 'statement', 'return', 'throw', 'comment', - 'value', 'invocation', 'code', 'operation', - 'assign', 'if', 'try', 'while', - 'for', 'switch', 'class', 'identifier', - 'alphanumeric', 'literal', 'assignable', 'assignObj', - 'objAssignable', 'thisProperty', 'paramList', 'funcGlyph', - 'optComma', 'param', 'paramVar', 'array', - 'object', 'splat', 'simpleAssignable', 'accessor', - 'parenthetical', 'range', 'this', 'index', - 'indexValue', 'slice', 'assignList', 'optFuncExist', - 'arguments', 'argList', 'rangeDots', 'arg', - 'simpleArgs', 'catch', 'whileSource', 'loop', - 'forBody', 'forStart', 'forSource', 'forVariables', - 'forValue', 'whens', 'when', 'ifBlock', - ); - - /** - * For tracing reduce actions, the names of all rules are required. - * @var array - */ - static public $yyRuleName = array( - /* 0 */ "root ::=", - /* 1 */ "root ::= body", - /* 2 */ "root ::= block YY_TERMINATOR", - /* 3 */ "body ::= line", - /* 4 */ "body ::= body YY_TERMINATOR line", - /* 5 */ "body ::= body YY_TERMINATOR", - /* 6 */ "line ::= expression", - /* 7 */ "line ::= statement", - /* 8 */ "statement ::= return", - /* 9 */ "statement ::= throw", - /* 10 */ "statement ::= comment", - /* 11 */ "statement ::= YY_STATEMENT", - /* 12 */ "expression ::= value", - /* 13 */ "expression ::= invocation", - /* 14 */ "expression ::= code", - /* 15 */ "expression ::= operation", - /* 16 */ "expression ::= assign", - /* 17 */ "expression ::= if", - /* 18 */ "expression ::= try", - /* 19 */ "expression ::= while", - /* 20 */ "expression ::= for", - /* 21 */ "expression ::= switch", - /* 22 */ "expression ::= class", - /* 23 */ "block ::= YY_INDENT YY_OUTDENT", - /* 24 */ "block ::= YY_INDENT body YY_OUTDENT", - /* 25 */ "identifier ::= YY_IDENTIFIER", - /* 26 */ "alphanumeric ::= YY_NUMBER", - /* 27 */ "alphanumeric ::= YY_STRING", - /* 28 */ "literal ::= alphanumeric", - /* 29 */ "literal ::= YY_JS", - /* 30 */ "literal ::= YY_REGEX", - /* 31 */ "literal ::= YY_BOOL", - /* 32 */ "assign ::= assignable YY_EQUALS expression", - /* 33 */ "assign ::= assignable YY_EQUALS YY_INDENT expression YY_OUTDENT", - /* 34 */ "assignObj ::= objAssignable", - /* 35 */ "assignObj ::= objAssignable YY_COLON expression", - /* 36 */ "assignObj ::= objAssignable YY_COLON YY_INDENT expression YY_OUTDENT", - /* 37 */ "assignObj ::= comment", - /* 38 */ "objAssignable ::= identifier", - /* 39 */ "objAssignable ::= alphanumeric", - /* 40 */ "objAssignable ::= thisProperty", - /* 41 */ "return ::= YY_RETURN expression", - /* 42 */ "return ::= YY_RETURN", - /* 43 */ "comment ::= YY_HERECOMMENT", - /* 44 */ "code ::= YY_PARAM_START paramList YY_PARAM_END funcGlyph block", - /* 45 */ "code ::= funcGlyph block", - /* 46 */ "funcGlyph ::= YY_FUNC", - /* 47 */ "funcGlyph ::= YY_BOUND_FUNC", - /* 48 */ "optComma ::=", - /* 49 */ "optComma ::= YY_COMMA", - /* 50 */ "paramList ::=", - /* 51 */ "paramList ::= param", - /* 52 */ "paramList ::= paramList YY_COMMA param", - /* 53 */ "param ::= paramVar", - /* 54 */ "param ::= paramVar YY_RANGE_EXCLUSIVE", - /* 55 */ "param ::= paramVar YY_EQUALS expression", - /* 56 */ "paramVar ::= identifier", - /* 57 */ "paramVar ::= thisProperty", - /* 58 */ "paramVar ::= array", - /* 59 */ "paramVar ::= object", - /* 60 */ "splat ::= expression YY_RANGE_EXCLUSIVE", - /* 61 */ "simpleAssignable ::= identifier", - /* 62 */ "simpleAssignable ::= value accessor", - /* 63 */ "simpleAssignable ::= invocation accessor", - /* 64 */ "simpleAssignable ::= thisProperty", - /* 65 */ "assignable ::= simpleAssignable", - /* 66 */ "assignable ::= array", - /* 67 */ "assignable ::= object", - /* 68 */ "value ::= assignable", - /* 69 */ "value ::= literal", - /* 70 */ "value ::= parenthetical", - /* 71 */ "value ::= range", - /* 72 */ "value ::= this", - /* 73 */ "accessor ::= YY_ACCESSOR identifier", - /* 74 */ "accessor ::= YY_EXISTENTIAL_ACCESSOR identifier", - /* 75 */ "accessor ::= YY_PROTOTYPE identifier", - /* 76 */ "accessor ::= YY_PROTOTYPE", - /* 77 */ "accessor ::= index", - /* 78 */ "index ::= YY_INDEX_START indexValue YY_INDEX_END", - /* 79 */ "index ::= YY_INDEX_SOAK index", - /* 80 */ "index ::= YY_INDEX_PROTO index", - /* 81 */ "indexValue ::= expression", - /* 82 */ "indexValue ::= slice", - /* 83 */ "object ::= YY_OBJECT_START assignList optComma YY_OBJECT_END", - /* 84 */ "assignList ::=", - /* 85 */ "assignList ::= assignObj", - /* 86 */ "assignList ::= assignList YY_COMMA assignObj", - /* 87 */ "assignList ::= assignList optComma YY_TERMINATOR assignObj", - /* 88 */ "assignList ::= assignList optComma YY_INDENT assignList optComma YY_OUTDENT", - /* 89 */ "class ::= YY_CLASS", - /* 90 */ "class ::= YY_CLASS block", - /* 91 */ "class ::= YY_CLASS YY_EXTENDS value", - /* 92 */ "class ::= YY_CLASS YY_EXTENDS value block", - /* 93 */ "class ::= YY_CLASS simpleAssignable", - /* 94 */ "class ::= YY_CLASS simpleAssignable block", - /* 95 */ "class ::= YY_CLASS simpleAssignable YY_EXTENDS value", - /* 96 */ "class ::= YY_CLASS simpleAssignable YY_EXTENDS value block", - /* 97 */ "invocation ::= value optFuncExist arguments", - /* 98 */ "invocation ::= invocation optFuncExist arguments", - /* 99 */ "invocation ::= YY_SUPER", - /* 100 */ "invocation ::= YY_SUPER arguments", - /* 101 */ "optFuncExist ::=", - /* 102 */ "optFuncExist ::= YY_FUNC_EXIST", - /* 103 */ "arguments ::= YY_CALL_START YY_CALL_END", - /* 104 */ "arguments ::= YY_CALL_START argList optComma YY_CALL_END", - /* 105 */ "this ::= YY_THIS", - /* 106 */ "this ::= YY_AT_SIGN", - /* 107 */ "thisProperty ::= YY_AT_SIGN identifier", - /* 108 */ "array ::= YY_ARRAY_START YY_ARRAY_END", - /* 109 */ "array ::= YY_ARRAY_START argList optComma YY_ARRAY_END", - /* 110 */ "rangeDots ::= YY_RANGE_INCLUSIVE", - /* 111 */ "rangeDots ::= YY_RANGE_EXCLUSIVE", - /* 112 */ "range ::= YY_ARRAY_START expression rangeDots expression YY_ARRAY_END", - /* 113 */ "slice ::= expression rangeDots expression", - /* 114 */ "slice ::= expression rangeDots", - /* 115 */ "slice ::= rangeDots expression", - /* 116 */ "argList ::= arg", - /* 117 */ "argList ::= argList YY_COMMA arg", - /* 118 */ "argList ::= argList optComma YY_TERMINATOR arg", - /* 119 */ "argList ::= YY_INDENT argList optComma YY_OUTDENT", - /* 120 */ "argList ::= argList optComma YY_INDENT argList optComma YY_OUTDENT", - /* 121 */ "arg ::= expression", - /* 122 */ "arg ::= splat", - /* 123 */ "simpleArgs ::= expression", - /* 124 */ "simpleArgs ::= simpleArgs YY_COMMA expression", - /* 125 */ "try ::= YY_TRY block", - /* 126 */ "try ::= YY_TRY block catch", - /* 127 */ "try ::= YY_TRY block YY_FINALLY block", - /* 128 */ "try ::= YY_TRY block catch YY_FINALLY block", - /* 129 */ "catch ::= YY_CATCH identifier block", - /* 130 */ "throw ::= YY_THROW expression", - /* 131 */ "parenthetical ::= YY_PAREN_START body YY_PAREN_END", - /* 132 */ "parenthetical ::= YY_PAREN_START YY_INDENT body YY_OUTDENT YY_PAREN_END", - /* 133 */ "whileSource ::= YY_WHILE expression", - /* 134 */ "whileSource ::= YY_WHILE expression YY_WHEN expression", - /* 135 */ "whileSource ::= YY_UNTIL expression", - /* 136 */ "whileSource ::= YY_UNTIL expression YY_WHEN expression", - /* 137 */ "while ::= whileSource block", - /* 138 */ "while ::= statement whileSource", - /* 139 */ "while ::= expression whileSource", - /* 140 */ "while ::= loop", - /* 141 */ "loop ::= YY_LOOP block", - /* 142 */ "loop ::= YY_LOOP expression", - /* 143 */ "for ::= statement forBody", - /* 144 */ "for ::= expression forBody", - /* 145 */ "for ::= forBody block", - /* 146 */ "forBody ::= YY_FOR range", - /* 147 */ "forBody ::= forStart forSource", - /* 148 */ "forStart ::= YY_FOR forVariables", - /* 149 */ "forStart ::= YY_FOR YY_OWN forVariables", - /* 150 */ "forValue ::= identifier", - /* 151 */ "forValue ::= array", - /* 152 */ "forValue ::= object", - /* 153 */ "forVariables ::= forValue", - /* 154 */ "forVariables ::= forValue YY_COMMA forValue", - /* 155 */ "forSource ::= YY_FORIN expression", - /* 156 */ "forSource ::= YY_FOROF expression", - /* 157 */ "forSource ::= YY_FORIN expression YY_WHEN expression", - /* 158 */ "forSource ::= YY_FOROF expression YY_WHEN expression", - /* 159 */ "forSource ::= YY_FORIN expression YY_BY expression", - /* 160 */ "forSource ::= YY_FORIN expression YY_WHEN expression YY_BY expression", - /* 161 */ "forSource ::= YY_FORIN expression YY_BY expression YY_WHEN expression", - /* 162 */ "switch ::= YY_SWITCH expression YY_INDENT whens YY_OUTDENT", - /* 163 */ "switch ::= YY_SWITCH expression YY_INDENT whens YY_ELSE block YY_OUTDENT", - /* 164 */ "switch ::= YY_SWITCH YY_INDENT whens YY_OUTDENT", - /* 165 */ "switch ::= YY_SWITCH YY_INDENT whens YY_ELSE block YY_OUTDENT", - /* 166 */ "whens ::= when", - /* 167 */ "whens ::= whens when", - /* 168 */ "when ::= YY_LEADING_WHEN simpleArgs block", - /* 169 */ "when ::= YY_LEADING_WHEN simpleArgs block YY_TERMINATOR", - /* 170 */ "ifBlock ::= YY_IF expression block", - /* 171 */ "ifBlock ::= ifBlock YY_ELSE YY_IF expression block", - /* 172 */ "if ::= ifBlock", - /* 173 */ "if ::= ifBlock YY_ELSE block", - /* 174 */ "if ::= statement YY_POST_IF expression", - /* 175 */ "if ::= expression YY_POST_IF expression", - /* 176 */ "operation ::= YY_UNARY expression", - /* 177 */ "operation ::= YY_MINUS expression", - /* 178 */ "operation ::= YY_PLUS expression", - /* 179 */ "operation ::= YY_DECREMENT simpleAssignable", - /* 180 */ "operation ::= YY_INCREMENT simpleAssignable", - /* 181 */ "operation ::= simpleAssignable YY_DECREMENT", - /* 182 */ "operation ::= simpleAssignable YY_INCREMENT", - /* 183 */ "operation ::= expression YY_EXISTENTIAL", - /* 184 */ "operation ::= expression YY_PLUS expression", - /* 185 */ "operation ::= expression YY_MINUS expression", - /* 186 */ "operation ::= expression YY_MATH expression", - /* 187 */ "operation ::= expression YY_SHIFT expression", - /* 188 */ "operation ::= expression YY_COMPARE expression", - /* 189 */ "operation ::= expression YY_LOGIC expression", - /* 190 */ "operation ::= expression YY_RELATION expression", - /* 191 */ "operation ::= simpleAssignable YY_COMPOUND_ASSIGN expression", - /* 192 */ "operation ::= simpleAssignable YY_COMPOUND_ASSIGN YY_INDENT expression YY_OUTDENT", - /* 193 */ "operation ::= simpleAssignable YY_EXTENDS expression", - ); - - /** - * This function returns the symbolic name associated with a token - * value. - * @param int - * @return string - */ - static function tokenName($tokenType) - { - if ($tokenType === 0) { - return 'End of Input'; - } - if ($tokenType > 0 && $tokenType < count(self::$yyTokenName)) { - return self::$yyTokenName[$tokenType]; - } else { - return "Unknown"; - } - } - - /** - * The following function deletes the value associated with a - * symbol. The symbol can be either a terminal or nonterminal. - * @param int the symbol code - * @param mixed the symbol's value - */ - static function yy_destructor($yymajor, $yypminor) - { - switch ($yymajor) { - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ - default: break; /* If no destructor action specified: do nothing */ - } - } - - /** - * Pop the parser's stack once. - * - * If there is a destructor routine associated with the token which - * is popped from the stack, then call it. - * - * Return the major token number for the symbol popped. - * @param yyParser - * @return int - */ - function yy_pop_parser_stack() - { - if (!count($this->yystack)) { - return; - } - $yytos = array_pop($this->yystack); - if (self::$yyTraceFILE && $this->yyidx >= 0) { - fwrite(self::$yyTraceFILE, - self::$yyTracePrompt . 'Popping ' . self::tokenName($yytos->major) . - "\n"); - } - $yymajor = $yytos->major; - self::yy_destructor($yymajor, $yytos->minor); - $this->yyidx--; - return $yymajor; - } - - /** - * Deallocate and destroy a parser. Destructors are all called for - * all stack elements before shutting the parser down. - */ - function __destruct() - { - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - if (is_resource(self::$yyTraceFILE)) { - fclose(self::$yyTraceFILE); - } - } - - /** - * Based on the current state and parser stack, get a list of all - * possible lookahead tokens - * @param int - * @return array - */ - function yy_get_expected_tokens($token) - { - $state = $this->yystack[$this->yyidx]->stateno; - $expected = self::$yyExpectedTokens[$state]; - if (in_array($token, self::$yyExpectedTokens[$state], true)) { - return $expected; - } - $stack = $this->yystack; - $yyidx = $this->yyidx; - do { - $yyact = $this->yy_find_shift_action($token); - if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { - // reduce action - $done = 0; - do { - if ($done++ == 100) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // too much recursion prevents proper detection - // so give up - return array_unique($expected); - } - $yyruleno = $yyact - self::YYNSTATE; - $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs']; - $nextstate = $this->yy_find_reduce_action( - $this->yystack[$this->yyidx]->stateno, - self::$yyRuleInfo[$yyruleno]['lhs']); - if (isset(self::$yyExpectedTokens[$nextstate])) { - $expected += self::$yyExpectedTokens[$nextstate]; - if (in_array($token, - self::$yyExpectedTokens[$nextstate], true)) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return array_unique($expected); - } - } - if ($nextstate < self::YYNSTATE) { - // we need to shift a non-terminal - $this->yyidx++; - $x = new yyStackEntry; - $x->stateno = $nextstate; - $x->major = self::$yyRuleInfo[$yyruleno]['lhs']; - $this->yystack[$this->yyidx] = $x; - continue 2; - } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // the last token was just ignored, we can't accept - // by ignoring input, this is in essence ignoring a - // syntax error! - return array_unique($expected); - } elseif ($nextstate === self::YY_NO_ACTION) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // input accepted, but not shifted (I guess) - return $expected; - } else { - $yyact = $nextstate; - } - } while (true); - } - break; - } while (true); - return array_unique($expected); - } - - /** - * Based on the parser state and current parser stack, determine whether - * the lookahead token is possible. - * - * The parser will convert the token value to an error token if not. This - * catches some unusual edge cases where the parser would fail. - * @param int - * @return bool - */ - function yy_is_expected_token($token) - { - if ($token === 0) { - return true; // 0 is not part of this - } - $state = $this->yystack[$this->yyidx]->stateno; - if (in_array($token, self::$yyExpectedTokens[$state], true)) { - return true; - } - $stack = $this->yystack; - $yyidx = $this->yyidx; - do { - $yyact = $this->yy_find_shift_action($token); - if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) { - // reduce action - $done = 0; - do { - if ($done++ == 100) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // too much recursion prevents proper detection - // so give up - return true; - } - $yyruleno = $yyact - self::YYNSTATE; - $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs']; - $nextstate = $this->yy_find_reduce_action( - $this->yystack[$this->yyidx]->stateno, - self::$yyRuleInfo[$yyruleno]['lhs']); - if (isset(self::$yyExpectedTokens[$nextstate]) && - in_array($token, self::$yyExpectedTokens[$nextstate], true)) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - return true; - } - if ($nextstate < self::YYNSTATE) { - // we need to shift a non-terminal - $this->yyidx++; - $x = new yyStackEntry; - $x->stateno = $nextstate; - $x->major = self::$yyRuleInfo[$yyruleno]['lhs']; - $this->yystack[$this->yyidx] = $x; - continue 2; - } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - if (!$token) { - // end of input: this is valid - return true; - } - // the last token was just ignored, we can't accept - // by ignoring input, this is in essence ignoring a - // syntax error! - return false; - } elseif ($nextstate === self::YY_NO_ACTION) { - $this->yyidx = $yyidx; - $this->yystack = $stack; - // input accepted, but not shifted (I guess) - return true; - } else { - $yyact = $nextstate; - } - } while (true); - } - break; - } while (true); - $this->yyidx = $yyidx; - $this->yystack = $stack; - return true; - } - - /** - * Find the appropriate action for a parser given the terminal - * look-ahead token iLookAhead. - * - * If the look-ahead token is YYNOCODE, then check to see if the action is - * independent of the look-ahead. If it is, return the action, otherwise - * return YY_NO_ACTION. - * @param int The look-ahead token - */ - function yy_find_shift_action($iLookAhead) - { - $stateno = $this->yystack[$this->yyidx]->stateno; - - /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */ - if (!isset(self::$yy_shift_ofst[$stateno])) { - // no shift actions - return self::$yy_default[$stateno]; - } - $i = self::$yy_shift_ofst[$stateno]; - if ($i === self::YY_SHIFT_USE_DFLT) { - return self::$yy_default[$stateno]; - } - if ($iLookAhead == self::YYNOCODE) { - return self::YY_NO_ACTION; - } - $i += $iLookAhead; - if ($i < 0 || $i >= self::YY_SZ_ACTTAB || - self::$yy_lookahead[$i] != $iLookAhead) { - if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback) - && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) { - if (self::$yyTraceFILE) { - fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " . - self::tokenName($iLookAhead) . " => " . - self::tokenName($iFallback) . "\n"); - } - return $this->yy_find_shift_action($iFallback); - } - return self::$yy_default[$stateno]; - } else { - return self::$yy_action[$i]; - } - } - - /** - * Find the appropriate action for a parser given the non-terminal - * look-ahead token $iLookAhead. - * - * If the look-ahead token is self::YYNOCODE, then check to see if the action is - * independent of the look-ahead. If it is, return the action, otherwise - * return self::YY_NO_ACTION. - * @param int Current state number - * @param int The look-ahead token - */ - function yy_find_reduce_action($stateno, $iLookAhead) - { - /* $stateno = $this->yystack[$this->yyidx]->stateno; */ - - if (!isset(self::$yy_reduce_ofst[$stateno])) { - return self::$yy_default[$stateno]; - } - $i = self::$yy_reduce_ofst[$stateno]; - if ($i == self::YY_REDUCE_USE_DFLT) { - return self::$yy_default[$stateno]; - } - if ($iLookAhead == self::YYNOCODE) { - return self::YY_NO_ACTION; - } - $i += $iLookAhead; - if ($i < 0 || $i >= self::YY_SZ_ACTTAB || - self::$yy_lookahead[$i] != $iLookAhead) { - return self::$yy_default[$stateno]; - } else { - return self::$yy_action[$i]; - } - } - - /** - * Perform a shift action. - * @param int The new state to shift in - * @param int The major token to shift in - * @param mixed the minor token to shift in - */ - function yy_shift($yyNewState, $yyMajor, $yypMinor, $generated = FALSE) - { - $this->yyidx++; - if ($this->yyidx >= self::YYSTACKDEPTH) { - $this->yyidx--; - if (self::$yyTraceFILE) { - fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - /* Here code is inserted which will execute if the parser - ** stack ever overflows */ - return; - } - $yytos = new yyStackEntry; - $yytos->stateno = $yyNewState; - $yytos->major = $yyMajor; - $yytos->minor = $yypMinor; - $yytos->generated = $generated; - array_push($this->yystack, $yytos); - if (self::$yyTraceFILE && $this->yyidx > 0) { - fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt, - $yyNewState); - fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt); - for ($i = 1; $i <= $this->yyidx; $i++) { - fprintf(self::$yyTraceFILE, " %s", - self::tokenName($this->yystack[$i]->major)); - } - fwrite(self::$yyTraceFILE,"\n"); - } - } - - /** - * The following table contains information about every rule that - * is used during the reduce. - * - * <pre> - * array( - * array( - * int $lhs; Symbol on the left-hand side of the rule - * int $nrhs; Number of right-hand side symbols in the rule - * ),... - * ); - * </pre> - */ - static public $yyRuleInfo = array( - array( 'lhs' => 75, 'rhs' => 0 ), - array( 'lhs' => 75, 'rhs' => 1 ), - array( 'lhs' => 75, 'rhs' => 2 ), - array( 'lhs' => 76, 'rhs' => 1 ), - array( 'lhs' => 76, 'rhs' => 3 ), - array( 'lhs' => 76, 'rhs' => 2 ), - array( 'lhs' => 78, 'rhs' => 1 ), - array( 'lhs' => 78, 'rhs' => 1 ), - array( 'lhs' => 80, 'rhs' => 1 ), - array( 'lhs' => 80, 'rhs' => 1 ), - array( 'lhs' => 80, 'rhs' => 1 ), - array( 'lhs' => 80, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 79, 'rhs' => 1 ), - array( 'lhs' => 77, 'rhs' => 2 ), - array( 'lhs' => 77, 'rhs' => 3 ), - array( 'lhs' => 95, 'rhs' => 1 ), - array( 'lhs' => 96, 'rhs' => 1 ), - array( 'lhs' => 96, 'rhs' => 1 ), - array( 'lhs' => 97, 'rhs' => 1 ), - array( 'lhs' => 97, 'rhs' => 1 ), - array( 'lhs' => 97, 'rhs' => 1 ), - array( 'lhs' => 97, 'rhs' => 1 ), - array( 'lhs' => 88, 'rhs' => 3 ), - array( 'lhs' => 88, 'rhs' => 5 ), - array( 'lhs' => 99, 'rhs' => 1 ), - array( 'lhs' => 99, 'rhs' => 3 ), - array( 'lhs' => 99, 'rhs' => 5 ), - array( 'lhs' => 99, 'rhs' => 1 ), - array( 'lhs' => 100, 'rhs' => 1 ), - array( 'lhs' => 100, 'rhs' => 1 ), - array( 'lhs' => 100, 'rhs' => 1 ), - array( 'lhs' => 81, 'rhs' => 2 ), - array( 'lhs' => 81, 'rhs' => 1 ), - array( 'lhs' => 83, 'rhs' => 1 ), - array( 'lhs' => 86, 'rhs' => 5 ), - array( 'lhs' => 86, 'rhs' => 2 ), - array( 'lhs' => 103, 'rhs' => 1 ), - array( 'lhs' => 103, 'rhs' => 1 ), - array( 'lhs' => 104, 'rhs' => 0 ), - array( 'lhs' => 104, 'rhs' => 1 ), - array( 'lhs' => 102, 'rhs' => 0 ), - array( 'lhs' => 102, 'rhs' => 1 ), - array( 'lhs' => 102, 'rhs' => 3 ), - array( 'lhs' => 105, 'rhs' => 1 ), - array( 'lhs' => 105, 'rhs' => 2 ), - array( 'lhs' => 105, 'rhs' => 3 ), - array( 'lhs' => 106, 'rhs' => 1 ), - array( 'lhs' => 106, 'rhs' => 1 ), - array( 'lhs' => 106, 'rhs' => 1 ), - array( 'lhs' => 106, 'rhs' => 1 ), - array( 'lhs' => 109, 'rhs' => 2 ), - array( 'lhs' => 110, 'rhs' => 1 ), - array( 'lhs' => 110, 'rhs' => 2 ), - array( 'lhs' => 110, 'rhs' => 2 ), - array( 'lhs' => 110, 'rhs' => 1 ), - array( 'lhs' => 98, 'rhs' => 1 ), - array( 'lhs' => 98, 'rhs' => 1 ), - array( 'lhs' => 98, 'rhs' => 1 ), - array( 'lhs' => 84, 'rhs' => 1 ), - array( 'lhs' => 84, 'rhs' => 1 ), - array( 'lhs' => 84, 'rhs' => 1 ), - array( 'lhs' => 84, 'rhs' => 1 ), - array( 'lhs' => 84, 'rhs' => 1 ), - array( 'lhs' => 111, 'rhs' => 2 ), - array( 'lhs' => 111, 'rhs' => 2 ), - array( 'lhs' => 111, 'rhs' => 2 ), - array( 'lhs' => 111, 'rhs' => 1 ), - array( 'lhs' => 111, 'rhs' => 1 ), - array( 'lhs' => 115, 'rhs' => 3 ), - array( 'lhs' => 115, 'rhs' => 2 ), - array( 'lhs' => 115, 'rhs' => 2 ), - array( 'lhs' => 116, 'rhs' => 1 ), - array( 'lhs' => 116, 'rhs' => 1 ), - array( 'lhs' => 108, 'rhs' => 4 ), - array( 'lhs' => 118, 'rhs' => 0 ), - array( 'lhs' => 118, 'rhs' => 1 ), - array( 'lhs' => 118, 'rhs' => 3 ), - array( 'lhs' => 118, 'rhs' => 4 ), - array( 'lhs' => 118, 'rhs' => 6 ), - array( 'lhs' => 94, 'rhs' => 1 ), - array( 'lhs' => 94, 'rhs' => 2 ), - array( 'lhs' => 94, 'rhs' => 3 ), - array( 'lhs' => 94, 'rhs' => 4 ), - array( 'lhs' => 94, 'rhs' => 2 ), - array( 'lhs' => 94, 'rhs' => 3 ), - array( 'lhs' => 94, 'rhs' => 4 ), - array( 'lhs' => 94, 'rhs' => 5 ), - array( 'lhs' => 85, 'rhs' => 3 ), - array( 'lhs' => 85, 'rhs' => 3 ), - array( 'lhs' => 85, 'rhs' => 1 ), - array( 'lhs' => 85, 'rhs' => 2 ), - array( 'lhs' => 119, 'rhs' => 0 ), - array( 'lhs' => 119, 'rhs' => 1 ), - array( 'lhs' => 120, 'rhs' => 2 ), - array( 'lhs' => 120, 'rhs' => 4 ), - array( 'lhs' => 114, 'rhs' => 1 ), - array( 'lhs' => 114, 'rhs' => 1 ), - array( 'lhs' => 101, 'rhs' => 2 ), - array( 'lhs' => 107, 'rhs' => 2 ), - array( 'lhs' => 107, 'rhs' => 4 ), - array( 'lhs' => 122, 'rhs' => 1 ), - array( 'lhs' => 122, 'rhs' => 1 ), - array( 'lhs' => 113, 'rhs' => 5 ), - array( 'lhs' => 117, 'rhs' => 3 ), - array( 'lhs' => 117, 'rhs' => 2 ), - array( 'lhs' => 117, 'rhs' => 2 ), - array( 'lhs' => 121, 'rhs' => 1 ), - array( 'lhs' => 121, 'rhs' => 3 ), - array( 'lhs' => 121, 'rhs' => 4 ), - array( 'lhs' => 121, 'rhs' => 4 ), - array( 'lhs' => 121, 'rhs' => 6 ), - array( 'lhs' => 123, 'rhs' => 1 ), - array( 'lhs' => 123, 'rhs' => 1 ), - array( 'lhs' => 124, 'rhs' => 1 ), - array( 'lhs' => 124, 'rhs' => 3 ), - array( 'lhs' => 90, 'rhs' => 2 ), - array( 'lhs' => 90, 'rhs' => 3 ), - array( 'lhs' => 90, 'rhs' => 4 ), - array( 'lhs' => 90, 'rhs' => 5 ), - array( 'lhs' => 125, 'rhs' => 3 ), - array( 'lhs' => 82, 'rhs' => 2 ), - array( 'lhs' => 112, 'rhs' => 3 ), - array( 'lhs' => 112, 'rhs' => 5 ), - array( 'lhs' => 126, 'rhs' => 2 ), - array( 'lhs' => 126, 'rhs' => 4 ), - array( 'lhs' => 126, 'rhs' => 2 ), - array( 'lhs' => 126, 'rhs' => 4 ), - array( 'lhs' => 91, 'rhs' => 2 ), - array( 'lhs' => 91, 'rhs' => 2 ), - array( 'lhs' => 91, 'rhs' => 2 ), - array( 'lhs' => 91, 'rhs' => 1 ), - array( 'lhs' => 127, 'rhs' => 2 ), - array( 'lhs' => 127, 'rhs' => 2 ), - array( 'lhs' => 92, 'rhs' => 2 ), - array( 'lhs' => 92, 'rhs' => 2 ), - array( 'lhs' => 92, 'rhs' => 2 ), - array( 'lhs' => 128, 'rhs' => 2 ), - array( 'lhs' => 128, 'rhs' => 2 ), - array( 'lhs' => 129, 'rhs' => 2 ), - array( 'lhs' => 129, 'rhs' => 3 ), - array( 'lhs' => 132, 'rhs' => 1 ), - array( 'lhs' => 132, 'rhs' => 1 ), - array( 'lhs' => 132, 'rhs' => 1 ), - array( 'lhs' => 131, 'rhs' => 1 ), - array( 'lhs' => 131, 'rhs' => 3 ), - array( 'lhs' => 130, 'rhs' => 2 ), - array( 'lhs' => 130, 'rhs' => 2 ), - array( 'lhs' => 130, 'rhs' => 4 ), - array( 'lhs' => 130, 'rhs' => 4 ), - array( 'lhs' => 130, 'rhs' => 4 ), - array( 'lhs' => 130, 'rhs' => 6 ), - array( 'lhs' => 130, 'rhs' => 6 ), - array( 'lhs' => 93, 'rhs' => 5 ), - array( 'lhs' => 93, 'rhs' => 7 ), - array( 'lhs' => 93, 'rhs' => 4 ), - array( 'lhs' => 93, 'rhs' => 6 ), - array( 'lhs' => 133, 'rhs' => 1 ), - array( 'lhs' => 133, 'rhs' => 2 ), - array( 'lhs' => 134, 'rhs' => 3 ), - array( 'lhs' => 134, 'rhs' => 4 ), - array( 'lhs' => 135, 'rhs' => 3 ), - array( 'lhs' => 135, 'rhs' => 5 ), - array( 'lhs' => 89, 'rhs' => 1 ), - array( 'lhs' => 89, 'rhs' => 3 ), - array( 'lhs' => 89, 'rhs' => 3 ), - array( 'lhs' => 89, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 2 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 3 ), - array( 'lhs' => 87, 'rhs' => 5 ), - array( 'lhs' => 87, 'rhs' => 3 ), - ); - - /** - * The following table contains a mapping of reduce action to method name - * that handles the reduction. - * - * If a rule is not set, it has no handler. - */ - static public $yyReduceMap = array( - 0 => 0, - 23 => 0, - 1 => 1, - 6 => 1, - 7 => 1, - 8 => 1, - 9 => 1, - 10 => 1, - 12 => 1, - 13 => 1, - 14 => 1, - 15 => 1, - 16 => 1, - 17 => 1, - 18 => 1, - 19 => 1, - 20 => 1, - 21 => 1, - 22 => 1, - 28 => 1, - 37 => 1, - 38 => 1, - 39 => 1, - 40 => 1, - 49 => 1, - 56 => 1, - 57 => 1, - 58 => 1, - 59 => 1, - 64 => 1, - 65 => 1, - 68 => 1, - 72 => 1, - 77 => 1, - 121 => 1, - 122 => 1, - 123 => 1, - 140 => 1, - 148 => 1, - 150 => 1, - 166 => 1, - 172 => 1, - 2 => 2, - 5 => 2, - 24 => 2, - 78 => 2, - 3 => 3, - 4 => 4, - 11 => 11, - 25 => 11, - 26 => 11, - 27 => 11, - 29 => 11, - 30 => 11, - 31 => 31, - 32 => 32, - 33 => 33, - 34 => 34, - 61 => 34, - 66 => 34, - 67 => 34, - 69 => 34, - 70 => 34, - 71 => 34, - 151 => 34, - 152 => 34, - 35 => 35, - 36 => 36, - 41 => 41, - 42 => 42, - 43 => 43, - 44 => 44, - 45 => 45, - 46 => 46, - 47 => 47, - 48 => 48, - 50 => 50, - 84 => 50, - 103 => 50, - 51 => 51, - 85 => 51, - 116 => 51, - 153 => 51, - 52 => 52, - 117 => 52, - 53 => 53, - 54 => 54, - 55 => 55, - 60 => 60, - 62 => 62, - 63 => 63, - 73 => 73, - 74 => 74, - 75 => 75, - 76 => 76, - 79 => 79, - 80 => 80, - 81 => 81, - 82 => 82, - 83 => 83, - 86 => 86, - 87 => 87, - 88 => 88, - 120 => 88, - 89 => 89, - 90 => 90, - 91 => 91, - 92 => 92, - 93 => 93, - 94 => 94, - 95 => 95, - 96 => 96, - 97 => 97, - 98 => 97, - 99 => 99, - 100 => 100, - 101 => 101, - 102 => 102, - 104 => 104, - 119 => 104, - 105 => 105, - 106 => 105, - 107 => 107, - 108 => 108, - 109 => 109, - 110 => 110, - 111 => 111, - 112 => 112, - 113 => 113, - 114 => 114, - 115 => 115, - 118 => 118, - 124 => 124, - 154 => 124, - 125 => 125, - 126 => 126, - 127 => 127, - 128 => 128, - 129 => 129, - 130 => 130, - 131 => 131, - 132 => 132, - 133 => 133, - 134 => 134, - 135 => 135, - 136 => 136, - 137 => 137, - 138 => 138, - 139 => 138, - 141 => 141, - 142 => 142, - 143 => 143, - 144 => 143, - 145 => 145, - 146 => 146, - 147 => 147, - 149 => 149, - 155 => 155, - 156 => 156, - 157 => 157, - 158 => 158, - 159 => 159, - 160 => 160, - 161 => 161, - 162 => 162, - 163 => 163, - 164 => 164, - 165 => 165, - 167 => 167, - 168 => 168, - 169 => 169, - 170 => 170, - 171 => 171, - 173 => 173, - 174 => 174, - 175 => 174, - 176 => 176, - 179 => 176, - 180 => 176, - 177 => 177, - 178 => 177, - 181 => 181, - 182 => 181, - 183 => 183, - 184 => 184, - 185 => 184, - 186 => 184, - 187 => 184, - 188 => 184, - 189 => 184, - 190 => 190, - 191 => 191, - 192 => 192, - 193 => 193, - ); - /* Beginning here are the reduction cases. A typical example - ** follows: - ** #line <lineno> <grammarfile> - ** function yy_r0($yymsp){ ... } // User supplied code - ** #line <lineno> <thisfile> - */ -#line 28 "/var/www/coffeescript-php/grammar.y" - function yy_r0(){ $this->_retvalue = yy('Block'); } -#line 2653 "/var/www/coffeescript-php/grammar.php" -#line 29 "/var/www/coffeescript-php/grammar.y" - function yy_r1(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 2656 "/var/www/coffeescript-php/grammar.php" -#line 30 "/var/www/coffeescript-php/grammar.y" - function yy_r2(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor; } -#line 2659 "/var/www/coffeescript-php/grammar.php" -#line 32 "/var/www/coffeescript-php/grammar.y" - function yy_r3(){ $this->_retvalue = yy_Block::wrap(array($this->yystack[$this->yyidx + 0]->minor)); } -#line 2662 "/var/www/coffeescript-php/grammar.php" -#line 33 "/var/www/coffeescript-php/grammar.y" - function yy_r4(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor->push($this->yystack[$this->yyidx + 0]->minor); } -#line 2665 "/var/www/coffeescript-php/grammar.php" -#line 42 "/var/www/coffeescript-php/grammar.y" - function yy_r11(){ $this->_retvalue = yy('Literal', $this->yystack[$this->yyidx + 0]->minor); } -#line 2668 "/var/www/coffeescript-php/grammar.php" -#line 67 "/var/www/coffeescript-php/grammar.y" - function yy_r31(){ $val = yy('Literal', $this->yystack[$this->yyidx + 0]->minor); - $val->is_undefined($this->yystack[$this->yyidx + 0]->minor === 'undefined'); - $this->_retvalue = $val; } -#line 2673 "/var/www/coffeescript-php/grammar.php" -#line 71 "/var/www/coffeescript-php/grammar.y" - function yy_r32(){ $this->_retvalue = yy('Assign', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2676 "/var/www/coffeescript-php/grammar.php" -#line 72 "/var/www/coffeescript-php/grammar.y" - function yy_r33(){ $this->_retvalue = yy('Assign', $this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2679 "/var/www/coffeescript-php/grammar.php" -#line 74 "/var/www/coffeescript-php/grammar.y" - function yy_r34(){ $this->_retvalue = yy('Value', $this->yystack[$this->yyidx + 0]->minor); } -#line 2682 "/var/www/coffeescript-php/grammar.php" -#line 75 "/var/www/coffeescript-php/grammar.y" - function yy_r35(){ $this->_retvalue = yy('Assign', yy('Value', $this->yystack[$this->yyidx + -2]->minor), $this->yystack[$this->yyidx + 0]->minor, 'object'); } -#line 2685 "/var/www/coffeescript-php/grammar.php" -#line 76 "/var/www/coffeescript-php/grammar.y" - function yy_r36(){ $this->_retvalue = yy('Assign', yy('Value', $this->yystack[$this->yyidx + -4]->minor), $this->yystack[$this->yyidx + -1]->minor, 'object'); } -#line 2688 "/var/www/coffeescript-php/grammar.php" -#line 83 "/var/www/coffeescript-php/grammar.y" - function yy_r41(){ $this->_retvalue = yy('Return', $this->yystack[$this->yyidx + 0]->minor); } -#line 2691 "/var/www/coffeescript-php/grammar.php" -#line 84 "/var/www/coffeescript-php/grammar.y" - function yy_r42(){ $this->_retvalue = yy('Return'); } -#line 2694 "/var/www/coffeescript-php/grammar.php" -#line 86 "/var/www/coffeescript-php/grammar.y" - function yy_r43(){ $this->_retvalue = yy('Comment', $this->yystack[$this->yyidx + 0]->minor); } -#line 2697 "/var/www/coffeescript-php/grammar.php" -#line 88 "/var/www/coffeescript-php/grammar.y" - function yy_r44(){ $this->_retvalue = yy('Code', $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2700 "/var/www/coffeescript-php/grammar.php" -#line 89 "/var/www/coffeescript-php/grammar.y" - function yy_r45(){ $this->_retvalue = yy('Code', array(), $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2703 "/var/www/coffeescript-php/grammar.php" -#line 91 "/var/www/coffeescript-php/grammar.y" - function yy_r46(){ $this->_retvalue = 'func'; } -#line 2706 "/var/www/coffeescript-php/grammar.php" -#line 92 "/var/www/coffeescript-php/grammar.y" - function yy_r47(){ $this->_retvalue = 'boundfunc'; } -#line 2709 "/var/www/coffeescript-php/grammar.php" -#line 94 "/var/www/coffeescript-php/grammar.y" - function yy_r48(){ $this->_retvalue = ''; } -#line 2712 "/var/www/coffeescript-php/grammar.php" -#line 97 "/var/www/coffeescript-php/grammar.y" - function yy_r50(){ $this->_retvalue = array(); } -#line 2715 "/var/www/coffeescript-php/grammar.php" -#line 98 "/var/www/coffeescript-php/grammar.y" - function yy_r51(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); } -#line 2718 "/var/www/coffeescript-php/grammar.php" -#line 99 "/var/www/coffeescript-php/grammar.y" - function yy_r52(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -2]->minor, array($this->yystack[$this->yyidx + 0]->minor)); } -#line 2721 "/var/www/coffeescript-php/grammar.php" -#line 101 "/var/www/coffeescript-php/grammar.y" - function yy_r53(){ $this->_retvalue = yy('Param', $this->yystack[$this->yyidx + 0]->minor); } -#line 2724 "/var/www/coffeescript-php/grammar.php" -#line 102 "/var/www/coffeescript-php/grammar.y" - function yy_r54(){ $this->_retvalue = yy('Param', $this->yystack[$this->yyidx + -1]->minor, NULL, TRUE); } -#line 2727 "/var/www/coffeescript-php/grammar.php" -#line 103 "/var/www/coffeescript-php/grammar.y" - function yy_r55(){ $this->_retvalue = yy('Param', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2730 "/var/www/coffeescript-php/grammar.php" -#line 110 "/var/www/coffeescript-php/grammar.y" - function yy_r60(){ $this->_retvalue = yy('Splat', $this->yystack[$this->yyidx + -1]->minor); } -#line 2733 "/var/www/coffeescript-php/grammar.php" -#line 113 "/var/www/coffeescript-php/grammar.y" - function yy_r62(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->push($this->yystack[$this->yyidx + 0]->minor); } -#line 2736 "/var/www/coffeescript-php/grammar.php" -#line 114 "/var/www/coffeescript-php/grammar.y" - function yy_r63(){ $this->_retvalue = yy('Value', $this->yystack[$this->yyidx + -1]->minor, array($this->yystack[$this->yyidx + 0]->minor)); } -#line 2739 "/var/www/coffeescript-php/grammar.php" -#line 127 "/var/www/coffeescript-php/grammar.y" - function yy_r73(){ $this->_retvalue = yy('Access', $this->yystack[$this->yyidx + 0]->minor); } -#line 2742 "/var/www/coffeescript-php/grammar.php" -#line 128 "/var/www/coffeescript-php/grammar.y" - function yy_r74(){ $this->_retvalue = yy('Access', $this->yystack[$this->yyidx + 0]->minor, 'soak'); } -#line 2745 "/var/www/coffeescript-php/grammar.php" -#line 129 "/var/www/coffeescript-php/grammar.y" - function yy_r75(){ $this->_retvalue = yy('Access', $this->yystack[$this->yyidx + 0]->minor, 'proto'); } -#line 2748 "/var/www/coffeescript-php/grammar.php" -#line 130 "/var/www/coffeescript-php/grammar.y" - function yy_r76(){ $this->_retvalue = yy('Access', yy('Literal', 'prototype')); } -#line 2751 "/var/www/coffeescript-php/grammar.php" -#line 134 "/var/www/coffeescript-php/grammar.y" - function yy_r79(){ $this->_retvalue = extend($this->yystack[$this->yyidx + 0]->minor, array('soak' => TRUE)); } -#line 2754 "/var/www/coffeescript-php/grammar.php" -#line 135 "/var/www/coffeescript-php/grammar.y" - function yy_r80(){ $this->_retvalue = extend($this->yystack[$this->yyidx + 0]->minor, array('proto' => TRUE)); } -#line 2757 "/var/www/coffeescript-php/grammar.php" -#line 137 "/var/www/coffeescript-php/grammar.y" - function yy_r81(){ $this->_retvalue = yy('Index', $this->yystack[$this->yyidx + 0]->minor); } -#line 2760 "/var/www/coffeescript-php/grammar.php" -#line 138 "/var/www/coffeescript-php/grammar.y" - function yy_r82(){ $this->_retvalue = yy('Slice', $this->yystack[$this->yyidx + 0]->minor); } -#line 2763 "/var/www/coffeescript-php/grammar.php" -#line 140 "/var/www/coffeescript-php/grammar.y" - function yy_r83(){ $this->_retvalue = yy('Obj', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx - 3]->generated); } -#line 2766 "/var/www/coffeescript-php/grammar.php" -#line 144 "/var/www/coffeescript-php/grammar.y" - function yy_r86(){ $this->yystack[$this->yyidx + -2]->minor[] = $this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; } -#line 2769 "/var/www/coffeescript-php/grammar.php" -#line 145 "/var/www/coffeescript-php/grammar.y" - function yy_r87(){ $this->yystack[$this->yyidx + -3]->minor[] = $this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor; } -#line 2772 "/var/www/coffeescript-php/grammar.php" -#line 146 "/var/www/coffeescript-php/grammar.y" - function yy_r88(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -5]->minor, $this->yystack[$this->yyidx + -2]->minor); } -#line 2775 "/var/www/coffeescript-php/grammar.php" -#line 148 "/var/www/coffeescript-php/grammar.y" - function yy_r89(){ $this->_retvalue = yy('Class'); } -#line 2778 "/var/www/coffeescript-php/grammar.php" -#line 149 "/var/www/coffeescript-php/grammar.y" - function yy_r90(){ $this->_retvalue = yy('Class', NULL, NULL, $this->yystack[$this->yyidx + 0]->minor); } -#line 2781 "/var/www/coffeescript-php/grammar.php" -#line 150 "/var/www/coffeescript-php/grammar.y" - function yy_r91(){ $this->_retvalue = yy('Class', NULL, $this->yystack[$this->yyidx + 0]->minor); } -#line 2784 "/var/www/coffeescript-php/grammar.php" -#line 151 "/var/www/coffeescript-php/grammar.y" - function yy_r92(){ $this->_retvalue = yy('Class', NULL, $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2787 "/var/www/coffeescript-php/grammar.php" -#line 152 "/var/www/coffeescript-php/grammar.y" - function yy_r93(){ $this->_retvalue = yy('Class', $this->yystack[$this->yyidx + 0]->minor); } -#line 2790 "/var/www/coffeescript-php/grammar.php" -#line 153 "/var/www/coffeescript-php/grammar.y" - function yy_r94(){ $this->_retvalue = yy('Class', $this->yystack[$this->yyidx + -1]->minor, NULL, $this->yystack[$this->yyidx + 0]->minor); } -#line 2793 "/var/www/coffeescript-php/grammar.php" -#line 154 "/var/www/coffeescript-php/grammar.y" - function yy_r95(){ $this->_retvalue = yy('Class', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2796 "/var/www/coffeescript-php/grammar.php" -#line 155 "/var/www/coffeescript-php/grammar.y" - function yy_r96(){ $this->_retvalue = yy('Class', $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2799 "/var/www/coffeescript-php/grammar.php" -#line 157 "/var/www/coffeescript-php/grammar.y" - function yy_r97(){ $this->_retvalue = yy('Call', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2802 "/var/www/coffeescript-php/grammar.php" -#line 159 "/var/www/coffeescript-php/grammar.y" - function yy_r99(){ $this->_retvalue = yy('Call', 'super', array(yy('Splat', yy('Literal', 'arguments')))); } -#line 2805 "/var/www/coffeescript-php/grammar.php" -#line 160 "/var/www/coffeescript-php/grammar.y" - function yy_r100(){ $this->_retvalue = yy('Call', 'super', $this->yystack[$this->yyidx + 0]->minor); } -#line 2808 "/var/www/coffeescript-php/grammar.php" -#line 162 "/var/www/coffeescript-php/grammar.y" - function yy_r101(){ $this->_retvalue = FALSE; } -#line 2811 "/var/www/coffeescript-php/grammar.php" -#line 163 "/var/www/coffeescript-php/grammar.y" - function yy_r102(){ $this->_retvalue = TRUE; } -#line 2814 "/var/www/coffeescript-php/grammar.php" -#line 166 "/var/www/coffeescript-php/grammar.y" - function yy_r104(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; } -#line 2817 "/var/www/coffeescript-php/grammar.php" -#line 168 "/var/www/coffeescript-php/grammar.y" - function yy_r105(){ $this->_retvalue = yy('Value', yy('Literal', 'this')); } -#line 2820 "/var/www/coffeescript-php/grammar.php" -#line 171 "/var/www/coffeescript-php/grammar.y" - function yy_r107(){ $this->_retvalue = yy('Value', yy('Literal', 'this'), array(yy('Access', $this->yystack[$this->yyidx + 0]->minor)), 'this'); } -#line 2823 "/var/www/coffeescript-php/grammar.php" -#line 173 "/var/www/coffeescript-php/grammar.y" - function yy_r108(){ $this->_retvalue = yy('Arr', array()); } -#line 2826 "/var/www/coffeescript-php/grammar.php" -#line 174 "/var/www/coffeescript-php/grammar.y" - function yy_r109(){ $this->_retvalue = yy('Arr', $this->yystack[$this->yyidx + -2]->minor); } -#line 2829 "/var/www/coffeescript-php/grammar.php" -#line 176 "/var/www/coffeescript-php/grammar.y" - function yy_r110(){ $this->_retvalue = 'inclusive'; } -#line 2832 "/var/www/coffeescript-php/grammar.php" -#line 177 "/var/www/coffeescript-php/grammar.y" - function yy_r111(){ $this->_retvalue = 'exclusive'; } -#line 2835 "/var/www/coffeescript-php/grammar.php" -#line 179 "/var/www/coffeescript-php/grammar.y" - function yy_r112(){ $this->_retvalue = yy('Range', $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + -2]->minor); } -#line 2838 "/var/www/coffeescript-php/grammar.php" -#line 181 "/var/www/coffeescript-php/grammar.y" - function yy_r113(){ $this->_retvalue = yy('Range', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2841 "/var/www/coffeescript-php/grammar.php" -#line 182 "/var/www/coffeescript-php/grammar.y" - function yy_r114(){ $this->_retvalue = yy('Range', $this->yystack[$this->yyidx + -1]->minor, NULL, $this->yystack[$this->yyidx + 0]->minor); } -#line 2844 "/var/www/coffeescript-php/grammar.php" -#line 183 "/var/www/coffeescript-php/grammar.y" - function yy_r115(){ $this->_retvalue = yy('Range', NULL, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2847 "/var/www/coffeescript-php/grammar.php" -#line 187 "/var/www/coffeescript-php/grammar.y" - function yy_r118(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -3]->minor, array($this->yystack[$this->yyidx + 0]->minor)); } -#line 2850 "/var/www/coffeescript-php/grammar.php" -#line 195 "/var/www/coffeescript-php/grammar.y" - function yy_r124(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2853 "/var/www/coffeescript-php/grammar.php" -#line 197 "/var/www/coffeescript-php/grammar.y" - function yy_r125(){ $this->_retvalue = yy('Try', $this->yystack[$this->yyidx + 0]->minor); } -#line 2856 "/var/www/coffeescript-php/grammar.php" -#line 198 "/var/www/coffeescript-php/grammar.y" - function yy_r126(){ $this->_retvalue = yy('Try', $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor[0], $this->yystack[$this->yyidx + 0]->minor[1]); } -#line 2859 "/var/www/coffeescript-php/grammar.php" -#line 199 "/var/www/coffeescript-php/grammar.y" - function yy_r127(){ $this->_retvalue = yy('Try', $this->yystack[$this->yyidx + -2]->minor, NULL, NULL, $this->yystack[$this->yyidx + 0]->minor); } -#line 2862 "/var/www/coffeescript-php/grammar.php" -#line 200 "/var/www/coffeescript-php/grammar.y" - function yy_r128(){ $this->_retvalue = yy('Try', $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -2]->minor[0], $this->yystack[$this->yyidx + -2]->minor[1], $this->yystack[$this->yyidx + 0]->minor); } -#line 2865 "/var/www/coffeescript-php/grammar.php" -#line 202 "/var/www/coffeescript-php/grammar.y" - function yy_r129(){ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2868 "/var/www/coffeescript-php/grammar.php" -#line 204 "/var/www/coffeescript-php/grammar.y" - function yy_r130(){ $this->_retvalue = yy('Throw', $this->yystack[$this->yyidx + 0]->minor); } -#line 2871 "/var/www/coffeescript-php/grammar.php" -#line 206 "/var/www/coffeescript-php/grammar.y" - function yy_r131(){ $this->_retvalue = yy('Parens', $this->yystack[$this->yyidx + -1]->minor); } -#line 2874 "/var/www/coffeescript-php/grammar.php" -#line 207 "/var/www/coffeescript-php/grammar.y" - function yy_r132(){ $this->_retvalue = yy('Parens', $this->yystack[$this->yyidx + -2]->minor); } -#line 2877 "/var/www/coffeescript-php/grammar.php" -#line 209 "/var/www/coffeescript-php/grammar.y" - function yy_r133(){ $this->_retvalue = yy('While', $this->yystack[$this->yyidx + 0]->minor); } -#line 2880 "/var/www/coffeescript-php/grammar.php" -#line 210 "/var/www/coffeescript-php/grammar.y" - function yy_r134(){ $this->_retvalue = yy('While', $this->yystack[$this->yyidx + -2]->minor, array('guard' => $this->yystack[$this->yyidx + 0]->minor)); } -#line 2883 "/var/www/coffeescript-php/grammar.php" -#line 211 "/var/www/coffeescript-php/grammar.y" - function yy_r135(){ $this->_retvalue = yy('While', $this->yystack[$this->yyidx + 0]->minor, array('invert' => TRUE)); } -#line 2886 "/var/www/coffeescript-php/grammar.php" -#line 212 "/var/www/coffeescript-php/grammar.y" - function yy_r136(){ $this->_retvalue = yy('While', $this->yystack[$this->yyidx + -2]->minor, array('invert' => TRUE, 'guard' => $this->yystack[$this->yyidx + 0]->minor)); } -#line 2889 "/var/www/coffeescript-php/grammar.php" -#line 214 "/var/www/coffeescript-php/grammar.y" - function yy_r137(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->add_body($this->yystack[$this->yyidx + 0]->minor); } -#line 2892 "/var/www/coffeescript-php/grammar.php" -#line 215 "/var/www/coffeescript-php/grammar.y" - function yy_r138(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor->add_body(yy_Block::wrap(array($this->yystack[$this->yyidx + -1]->minor))); } -#line 2895 "/var/www/coffeescript-php/grammar.php" -#line 219 "/var/www/coffeescript-php/grammar.y" - function yy_r141(){ $this->_retvalue = yy('While', yy('Literal', 'true')); $this->_retvalue->add_body($this->yystack[$this->yyidx + 0]->minor); } -#line 2898 "/var/www/coffeescript-php/grammar.php" -#line 220 "/var/www/coffeescript-php/grammar.y" - function yy_r142(){ $this->_retvalue = yy('While', yy('Literal', 'true')); $this->_retvalue->add_body(yy_Block::wrap($this->yystack[$this->yyidx + 0]->minor)); } -#line 2901 "/var/www/coffeescript-php/grammar.php" -#line 222 "/var/www/coffeescript-php/grammar.y" - function yy_r143(){ $this->_retvalue = yy('For', $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2904 "/var/www/coffeescript-php/grammar.php" -#line 224 "/var/www/coffeescript-php/grammar.y" - function yy_r145(){ $this->_retvalue = yy('For', $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2907 "/var/www/coffeescript-php/grammar.php" -#line 226 "/var/www/coffeescript-php/grammar.y" - function yy_r146(){ $this->_retvalue = array('source' => yy('Value', $this->yystack[$this->yyidx + 0]->minor)); } -#line 2910 "/var/www/coffeescript-php/grammar.php" -#line 227 "/var/www/coffeescript-php/grammar.y" - function yy_r147(){ $this->yystack[$this->yyidx + 0]->minor['own'] = isset($this->yystack[$this->yyidx + -1]->minor['own']) ? $this->yystack[$this->yyidx + -1]->minor['own'] : NULL; $this->yystack[$this->yyidx + 0]->minor['name'] = $this->yystack[$this->yyidx + -1]->minor[0]; $this->yystack[$this->yyidx + 0]->minor['index'] = isset($this->yystack[$this->yyidx + -1]->minor[1]) ? $this->yystack[$this->yyidx + -1]->minor[1] : NULL; $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 2913 "/var/www/coffeescript-php/grammar.php" -#line 230 "/var/www/coffeescript-php/grammar.y" - function yy_r149(){ $this->yystack[$this->yyidx + 0]->minor['own'] = TRUE; $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; } -#line 2916 "/var/www/coffeescript-php/grammar.php" -#line 239 "/var/www/coffeescript-php/grammar.y" - function yy_r155(){ $this->_retvalue = array('source' => $this->yystack[$this->yyidx + 0]->minor); } -#line 2919 "/var/www/coffeescript-php/grammar.php" -#line 240 "/var/www/coffeescript-php/grammar.y" - function yy_r156(){ $this->_retvalue = array('source' => $this->yystack[$this->yyidx + 0]->minor, 'object' => TRUE); } -#line 2922 "/var/www/coffeescript-php/grammar.php" -#line 241 "/var/www/coffeescript-php/grammar.y" - function yy_r157(){ $this->_retvalue = array('source' => $this->yystack[$this->yyidx + -2]->minor, 'guard' => $this->yystack[$this->yyidx + 0]->minor); } -#line 2925 "/var/www/coffeescript-php/grammar.php" -#line 242 "/var/www/coffeescript-php/grammar.y" - function yy_r158(){ $this->_retvalue = array('source' => $this->yystack[$this->yyidx + -2]->minor, 'guard' => $this->yystack[$this->yyidx + 0]->minor, 'object' => TRUE); } -#line 2928 "/var/www/coffeescript-php/grammar.php" -#line 243 "/var/www/coffeescript-php/grammar.y" - function yy_r159(){ $this->_retvalue = array('source' => $this->yystack[$this->yyidx + -2]->minor, 'step' => $this->yystack[$this->yyidx + 0]->minor); } -#line 2931 "/var/www/coffeescript-php/grammar.php" -#line 244 "/var/www/coffeescript-php/grammar.y" - function yy_r160(){ $this->_retvalue = array('source' => $this->yystack[$this->yyidx + -4]->minor, 'guard' => $this->yystack[$this->yyidx + -2]->minor, 'step' => $this->yystack[$this->yyidx + 0]->minor); } -#line 2934 "/var/www/coffeescript-php/grammar.php" -#line 245 "/var/www/coffeescript-php/grammar.y" - function yy_r161(){ $this->_retvalue = array('source' => $this->yystack[$this->yyidx + -4]->minor, 'step' => $this->yystack[$this->yyidx + -2]->minor, 'guard' => $this->yystack[$this->yyidx + 0]->minor); } -#line 2937 "/var/www/coffeescript-php/grammar.php" -#line 247 "/var/www/coffeescript-php/grammar.y" - function yy_r162(){ $this->_retvalue = yy('Switch', $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2940 "/var/www/coffeescript-php/grammar.php" -#line 248 "/var/www/coffeescript-php/grammar.y" - function yy_r163(){ $this->_retvalue = yy('Switch', $this->yystack[$this->yyidx + -5]->minor, $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2943 "/var/www/coffeescript-php/grammar.php" -#line 249 "/var/www/coffeescript-php/grammar.y" - function yy_r164(){ $this->_retvalue = yy('Switch', NULL, $this->yystack[$this->yyidx + -1]->minor); } -#line 2946 "/var/www/coffeescript-php/grammar.php" -#line 250 "/var/www/coffeescript-php/grammar.y" - function yy_r165(){ $this->_retvalue = yy('Switch', NULL, $this->yystack[$this->yyidx + -3]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2949 "/var/www/coffeescript-php/grammar.php" -#line 253 "/var/www/coffeescript-php/grammar.y" - function yy_r167(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2952 "/var/www/coffeescript-php/grammar.php" -#line 255 "/var/www/coffeescript-php/grammar.y" - function yy_r168(){ $this->_retvalue = array(array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor)); } -#line 2955 "/var/www/coffeescript-php/grammar.php" -#line 256 "/var/www/coffeescript-php/grammar.y" - function yy_r169(){ $this->_retvalue = array(array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor)); } -#line 2958 "/var/www/coffeescript-php/grammar.php" -#line 258 "/var/www/coffeescript-php/grammar.y" - function yy_r170(){ $this->_retvalue = yy('If', $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, array('type' => $this->yystack[$this->yyidx + -2]->minor)); } -#line 2961 "/var/www/coffeescript-php/grammar.php" -#line 259 "/var/www/coffeescript-php/grammar.y" - function yy_r171(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor->add_else(yy('If', $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, array('type' => $this->yystack[$this->yyidx + -2]->minor))); } -#line 2964 "/var/www/coffeescript-php/grammar.php" -#line 262 "/var/www/coffeescript-php/grammar.y" - function yy_r173(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor->add_else($this->yystack[$this->yyidx + 0]->minor); } -#line 2967 "/var/www/coffeescript-php/grammar.php" -#line 263 "/var/www/coffeescript-php/grammar.y" - function yy_r174(){ $this->_retvalue = yy('If', $this->yystack[$this->yyidx + 0]->minor, yy_Block::wrap(array($this->yystack[$this->yyidx + -2]->minor)), array('type' => $this->yystack[$this->yyidx + -1]->minor, 'statement' => TRUE)); } -#line 2970 "/var/www/coffeescript-php/grammar.php" -#line 266 "/var/www/coffeescript-php/grammar.y" - function yy_r176(){ $this->_retvalue = yy('Op', $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2973 "/var/www/coffeescript-php/grammar.php" -#line 267 "/var/www/coffeescript-php/grammar.y" - function yy_r177(){ $this->_retvalue = yy('Op', $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor); /* prec: 'UNARY'; */ } -#line 2976 "/var/www/coffeescript-php/grammar.php" -#line 271 "/var/www/coffeescript-php/grammar.y" - function yy_r181(){ $this->_retvalue = yy('Op', $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor, NULL, TRUE); } -#line 2979 "/var/www/coffeescript-php/grammar.php" -#line 273 "/var/www/coffeescript-php/grammar.y" - function yy_r183(){ $this->_retvalue = yy('Existence', $this->yystack[$this->yyidx + -1]->minor); } -#line 2982 "/var/www/coffeescript-php/grammar.php" -#line 274 "/var/www/coffeescript-php/grammar.y" - function yy_r184(){ $this->_retvalue = yy('Op', $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2985 "/var/www/coffeescript-php/grammar.php" -#line 280 "/var/www/coffeescript-php/grammar.y" - function yy_r190(){ if ($this->yystack[$this->yyidx + -1]->minor{0} === '!') { $this->_retvalue = yy('Op', substr($this->yystack[$this->yyidx + -1]->minor, 1), $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); $this->_retvalue->invert(); } else { $this->_retvalue = yy('Op', $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } } -#line 2988 "/var/www/coffeescript-php/grammar.php" -#line 281 "/var/www/coffeescript-php/grammar.y" - function yy_r191(){ $this->_retvalue = yy('Assign', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor, $this->yystack[$this->yyidx + -1]->minor); } -#line 2991 "/var/www/coffeescript-php/grammar.php" -#line 282 "/var/www/coffeescript-php/grammar.y" - function yy_r192(){ $this->_retvalue = yy('Assign', $this->yystack[$this->yyidx + -4]->minor, $this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + -3]->minor); } -#line 2994 "/var/www/coffeescript-php/grammar.php" -#line 283 "/var/www/coffeescript-php/grammar.y" - function yy_r193(){ $this->_retvalue = yy('Extends', $this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + 0]->minor); } -#line 2997 "/var/www/coffeescript-php/grammar.php" - - /** - * placeholder for the left hand side in a reduce operation. - * - * For a parser with a rule like this: - * <pre> - * rule(A) ::= B. { A = 1; } - * </pre> - * - * The parser will translate to something like: - * - * <code> - * function yy_r0(){$this->_retvalue = 1;} - * </code> - */ - private $_retvalue; - - /** - * Perform a reduce action and the shift that must immediately - * follow the reduce. - * - * For a rule such as: - * - * <pre> - * A ::= B blah C. { dosomething(); } - * </pre> - * - * This function will first call the action, if any, ("dosomething();" in our - * example), and then it will pop three states from the stack, - * one for each entry on the right-hand side of the expression - * (B, blah, and C in our example rule), and then push the result of the action - * back on to the stack with the resulting state reduced to (as described in the .out - * file) - * @param int Number of the rule by which to reduce - */ - function yy_reduce($yyruleno) - { - //int $yygoto; /* The next state */ - //int $yyact; /* The next action */ - //mixed $yygotominor; /* The LHS of the rule reduced */ - //yyStackEntry $yymsp; /* The top of the parser's stack */ - //int $yysize; /* Amount to pop the stack */ - $yymsp = $this->yystack[$this->yyidx]; - if (self::$yyTraceFILE && $yyruleno >= 0 - && $yyruleno < count(self::$yyRuleName)) { - fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n", - self::$yyTracePrompt, $yyruleno, - self::$yyRuleName[$yyruleno]); - } - - $this->_retvalue = $yy_lefthand_side = null; - if (array_key_exists($yyruleno, self::$yyReduceMap)) { - // call the action - $this->_retvalue = null; - $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}(); - $yy_lefthand_side = $this->_retvalue; - } - $yygoto = self::$yyRuleInfo[$yyruleno]['lhs']; - $yysize = self::$yyRuleInfo[$yyruleno]['rhs']; - $this->yyidx -= $yysize; - for ($i = $yysize; $i; $i--) { - // pop all of the right-hand side parameters - array_pop($this->yystack); - } - $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto); - if ($yyact < self::YYNSTATE) { - /* If we are not debugging and the reduce action popped at least - ** one element off the stack, then we can push the new element back - ** onto the stack here, and skip the stack overflow test in yy_shift(). - ** That gives a significant speed improvement. */ - if (!self::$yyTraceFILE && $yysize) { - $this->yyidx++; - $x = new yyStackEntry; - $x->stateno = $yyact; - $x->major = $yygoto; - $x->minor = $yy_lefthand_side; - $this->yystack[$this->yyidx] = $x; - } else { - $this->yy_shift($yyact, $yygoto, $yy_lefthand_side); - } - } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) { - $this->yy_accept(); - } - } - - /** - * The following code executes when the parse fails - * - * Code from %parse_fail is inserted here - */ - function yy_parse_failed() - { - if (self::$yyTraceFILE) { - fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt); - } - while ($this->yyidx >= 0) { - $this->yy_pop_parser_stack(); - } - /* Here code is inserted which will be executed whenever the - ** parser fails */ - } - - /** - * The following code executes when a syntax error first occurs. - * - * %syntax_error code is inserted here - * @param int The major type of the error token - * @param mixed The minor type of the error token - */ - function yy_syntax_error($yymajor, $TOKEN) - { -#line 4 "/var/www/coffeescript-php/grammar.y" - - throw new SyntaxError( - 'unexpected '.$this->tokenName($yymajor).' in '.self::$FILE.':' - . (self::$LINE + 1).'.' - ); -#line 3116 "/var/www/coffeescript-php/grammar.php" - } - - /** - * The following is executed when the parser accepts - * - * %parse_accept code is inserted here - */ - function yy_accept() - { - if (self::$yyTraceFILE) { - fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt); - } - while ($this->yyidx >= 0) { - $stack = $this->yy_pop_parser_stack(); - } - /* Here code is inserted which will be executed whenever the - ** parser accepts */ - } - - /** - * The main parser program. - * - * The first argument is the major token number. The second is - * the token value string as scanned from the input. - * - * @param int $yymajor the token number - * @param mixed $yytokenvalue the token value - * @param mixed ... any extra arguments that should be passed to handlers - * - * @return void - */ - function parse($token) - { - list($yymajor, $yytokenvalue, ) = $token ? $token : array(0, 0); - self::$LINE = isset($token[2]) ? $token[2] : -1; - - // See rewriter.php\add_implicit_braces() and grammar.y. - $generated = isset($token['generatedValue']) ? $token['generatedValue'] : FALSE; - -// $yyact; /* The parser action. */ -// $yyendofinput; /* True if we are at the end of input */ - $yyerrorhit = 0; /* True if yymajor has invoked an error */ - - /* (re)initialize the parser, if necessary */ - if ($this->yyidx === null || $this->yyidx < 0) { - /* if ($yymajor == 0) return; // not sure why this was here... */ - $this->yyidx = 0; - $this->yyerrcnt = -1; - $x = new yyStackEntry; - $x->stateno = 0; - $x->major = 0; - $x->generated = FALSE; - $this->yystack = array(); - array_push($this->yystack, $x); - } - $yyendofinput = ($yymajor==0); - - if (self::$yyTraceFILE) { - fprintf( - self::$yyTraceFILE, - "%sInput %s\n", - self::$yyTracePrompt, - self::tokenName($yymajor) - ); - } - - do { - $yyact = $this->yy_find_shift_action($yymajor); - if ($yymajor < self::YYERRORSYMBOL - && !$this->yy_is_expected_token($yymajor) - ) { - // force a syntax error - $yyact = self::YY_ERROR_ACTION; - } - if ($yyact < self::YYNSTATE) { - $this->yy_shift($yyact, $yymajor, $yytokenvalue, $generated); - $this->yyerrcnt--; - if ($yyendofinput && $this->yyidx >= 0) { - $yymajor = 0; - } else { - $yymajor = self::YYNOCODE; - } - } elseif ($yyact < self::YYNSTATE + self::YYNRULE) { - $this->yy_reduce($yyact - self::YYNSTATE); - } elseif ($yyact == self::YY_ERROR_ACTION) { - if (self::$yyTraceFILE) { - fprintf( - self::$yyTraceFILE, - "%sSyntax Error!\n", - self::$yyTracePrompt - ); - } - if (self::YYERRORSYMBOL) { - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if ($this->yyerrcnt < 0) { - $this->yy_syntax_error($yymajor, $yytokenvalue); - } - $yymx = $this->yystack[$this->yyidx]->major; - if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ) { - if (self::$yyTraceFILE) { - fprintf( - self::$yyTraceFILE, - "%sDiscard input token %s\n", - self::$yyTracePrompt, - self::tokenName($yymajor) - ); - } - $this->yy_destructor($yymajor, $yytokenvalue); - $yymajor = self::YYNOCODE; - } else { - while ($this->yyidx >= 0 - && $yymx != self::YYERRORSYMBOL - && ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE - ) { - $this->yy_pop_parser_stack(); - } - if ($this->yyidx < 0 || $yymajor==0) { - $this->yy_destructor($yymajor, $yytokenvalue); - $this->yy_parse_failed(); - $yymajor = self::YYNOCODE; - } elseif ($yymx != self::YYERRORSYMBOL) { - $u2 = 0; - $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2, $generated); - } - } - $this->yyerrcnt = 3; - $yyerrorhit = 1; - } else { - /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if ($this->yyerrcnt <= 0) { - $this->yy_syntax_error($yymajor, $yytokenvalue); - } - $this->yyerrcnt = 3; - $this->yy_destructor($yymajor, $yytokenvalue); - if ($yyendofinput) { - $this->yy_parse_failed(); - } - $yymajor = self::YYNOCODE; - } - } else { - $this->yy_accept(); - $yymajor = self::YYNOCODE; - } - } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0); - - if ($token === NULL) - { - return $this->_retvalue; - } - } -} diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/rewriter.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/rewriter.php deleted file mode 100755 index bcffa235dca70c012e707e881bb5311d27038cba..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/rewriter.php +++ /dev/null @@ -1,641 +0,0 @@ -<?php - -namespace CoffeeScript; - -class Rewriter -{ - static $BALANCED_PAIRS = array( - array('(', ')'), - array('[', ']'), - array('{', '}'), - array('INDENT', 'OUTDENT'), - array('CALL_START', 'CALL_END'), - array('PARAM_START', 'PARAM_END'), - array('INDEX_START', 'INDEX_END'), - ); - - static $INVERSES = array(); - - static $EXPRESSION_START = array(); - static $EXPRESSION_END = array(); - - static $EXPRESSION_CLOSE = array('CATCH', 'WHEN', 'ELSE', 'FINALLY'); - - static $IMPLICIT_FUNC = array('IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'); - - static $IMPLICIT_CALL = array( - 'IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', - 'IF', 'TRY', 'SWITCH', 'THIS', 'BOOL', 'UNARY', 'SUPER', - '@', '->', '=>', '[', '(', '{', '--', '++' - ); - - static $IMPLICIT_UNSPACED_CALL = array('+', '-'); - - static $IMPLICIT_BLOCK = array('->', '=>', '{', '[', ','); - - static $IMPLICIT_END = array('POST_IF', 'FOR', 'WHILE', 'UNTIL', 'WHEN', 'BY', 'LOOP', 'TERMINATOR', 'INDENT'); - - static $SINGLE_LINERS = array('ELSE', '->', '=>', 'TRY', 'FINALLY', 'THEN'); - static $SINGLE_CLOSERS = array('TERMINATOR', 'CATCH', 'FINALLY', 'ELSE', 'OUTDENT', 'LEADING_WHEN'); - - static $LINEBREAKS = array('TERMINATOR', 'INDENT', 'OUTDENT'); - - function __construct($tokens) - { - $this->tokens = $tokens; - } - - function add_implicit_braces() - { - $stack = array(); - $start = NULL; - $start_indent = 0; - - $self = $this; - - $condition = function( & $token, $i) use ( & $self) - { - $list = array(); - - for ($j = 0; $j < 3; $j++) - { - $k = ($i + 1) + $j; - $list[$j] = isset($self->tokens[$k]) ? $self->tokens[$k] : array(NULL, NULL); - } - - list($one, $two, $three) = $list; - - if ($one[0] === t('HERECOMMENT')) - { - return FALSE; - } - - $tag = $token[0]; - - return - (in_array($tag, t('TERMINATOR', 'OUTDENT')) && - ! ($two[0] === t(':') || $one[0] === t('@') && $three[0] === t(':')) ) || - ($tag === t(',') && ! is_null($one[0]) && - ! in_array($one[0], t('IDENTIFIER', 'NUMBER', 'STRING', '@', 'TERMINATOR', 'OUTDENT'))); - }; - - $action = function( & $token, $i) use ( & $self) - { - $tok = array(t('}'), '}', $token[2], 'generated' => TRUE); - array_splice($self->tokens, $i, 0, array($tok)); - }; - - $this->scan_tokens(function( & $token, $i, & $tokens) use ( & $self, & $stack, & $start, & $start_indent, & $condition, & $action) - { - if (in_array(($tag = $token[0]), t(Rewriter::$EXPRESSION_START))) - { - $stack[] = array( ($tag === t('INDENT') && $self->tag($i - 1) === t('{')) ? t('{') : $tag, $i ); - return 1; - } - - if (in_array($tag, t(Rewriter::$EXPRESSION_END))) - { - $start = array_pop($stack); - return 1; - } - - $len = count($stack) - 1; - - if ( ! ($tag === t(':') && (($ago = $self->tag($i - 2)) === t(':') || ( ! isset($stack[$len]) || $stack[$len][0] !== t('{'))) )) - { - return 1; - } - - $stack[] = array(t('{')); - $idx = $ago === t('@') ? $i - 2 : $i - 1; - - while ($self->tag($idx - 2) === t('HERECOMMENT')) - { - $idx -= 2; - } - - // This doesn't really work in PHP, so we assign 'generatedValue' to the - // token and handle it in the actual parser (see Lempar.php\Parser\ - // parse()). This is pretty hacky, but it works. (Maybe...) - // - // TODO: In the future change this to use the wrap() function as it seems - // to work without any problems. - - $value = wrap('{'); - $value->generated = TRUE; - - $tok = array(t('{'), $value, $token[2], 'generated' => TRUE, 'generatedValue' => TRUE); - - array_splice($tokens, $idx, 0, array($tok)); - - $self->detect_end($i + 2, $condition, $action); - - return 2; - }); - } - - function add_implicit_indentation() - { - $self = $this; - - $this->scan_tokens(function( & $token, $i, & $tokens) use ( & $self) - { - $tag = $token[0]; - - if ($tag === t('TERMINATOR') && $self->tag($i + 1) === t('THEN')) - { - array_splice($tokens, $i, 1); - return 0; - } - - if ($tag === t('ELSE') && $self->tag($i - 1) !== t('OUTDENT')) - { - array_splice($tokens, $i, 0, $self->indentation($token)); - return 2; - } - - if ($tag === t('CATCH') && in_array($self->tag($i + 2), t('OUTDENT', 'TERMINATOR', 'FINALLY'))) - { - array_splice($tokens, $i + 2, 0, $self->indentation($token)); - return 4; - } - - if (in_array($tag, t(Rewriter::$SINGLE_LINERS)) && $self->tag($i + 1) !== t('INDENT') && - ! ($tag === t('ELSE') && $self->tag($i + 1) === t('IF'))) - { - $starter = $tag; - list($indent, $outdent) = $self->indentation($token); - - if ($starter === t('THEN')) - { - $indent['fromThen'] = TRUE; - } - - $indent['generated'] = $outdent['generated'] = TRUE; - - array_splice($tokens, $i + 1, 0, array($indent)); - - $condition = function($token, $i) use ($starter) - { - return $token[1] !== ';' && in_array($token[0], t(Rewriter::$SINGLE_CLOSERS)) && - ! ($token[0] === t('ELSE') && ! in_array($starter, t('IF', 'THEN'))); - }; - - $action = function( & $token, $i) use ( & $self, $outdent) - { - array_splice($self->tokens, ($self->tag($i - 1) === t(',') ? $i - 1 : $i), 0, array($outdent)); - }; - - $self->detect_end($i + 2, $condition, $action); - - if ($tag === t('THEN')) - { - array_splice($tokens, $i, 1); - } - - return 1; - } - - return 1; - }); - } - - function add_implicit_parentheses() - { - $no_call = FALSE; - $self = $this; - - $action = function( & $token, $i) use ( & $self) - { - $idx = ($token[0] === t('OUTDENT')) ? $i + 1 : $i; - $tok = array(t('CALL_END'), ')'); - - if (isset($token[2])) - { - $tok[2] = $token[2]; - } - - array_splice($self->tokens, $idx, 0, array($tok)); - }; - - $this->scan_tokens(function( & $token, $i, & $tokens) use ( & $action, & $no_call, & $self ) - { - $tag = $token[0]; - - if (in_array($tag, t('CLASS', 'IF'))) - { - $no_call = TRUE; - } - - $prev = NULL; - - if (isset($tokens[$i - 1])) - { - $prev = & $tokens[$i - 1]; - } - - $current = $tokens[$i]; - $next = isset($tokens[$i + 1]) ? $tokens[$i + 1] : NULL; - - $call_object = ! $no_call && $tag === t('INDENT') && - $next && (isset($next['generated']) && $next['generated']) && $next[0] === t('{') && - $prev && in_array($prev[0], t(Rewriter::$IMPLICIT_FUNC)); - - $seen_single = FALSE; - $seen_control = FALSE; - - if (in_array($tag, t(Rewriter::$LINEBREAKS))) - { - $no_call = FALSE; - } - - if ($prev && ! (isset($prev['spaced']) && $prev['spaced']) && $tag === t('?')) - { - $token['call'] = TRUE; - } - - if (isset($token['fromThen']) && $token['fromThen']) - { - return 1; - } - - if ( ! ($call_object || ($prev && (isset($prev['spaced']) && $prev['spaced'])) && - ( (isset($prev['call']) && $prev['call']) || in_array($prev[0], t(Rewriter::$IMPLICIT_FUNC)) ) && - ( in_array($tag, t(Rewriter::$IMPLICIT_CALL)) || ! ( (isset($token['spaced']) && $token['spaced']) || - (isset($token['newLine']) && $token['newLine']) ) && - in_array($tag, t(Rewriter::$IMPLICIT_UNSPACED_CALL)) ) - )) - { - return 1; - } - - array_splice($tokens, $i, 0, array(array(t('CALL_START'), '(', $token[2]))); - - $self->detect_end($i + 1, function($token, $i) use ( & $seen_control, & $seen_single, & $self) - { - $tag = $token[0]; - - if ( ! $seen_single && (isset($token['fromThen']) && $token['fromThen'])) - { - return TRUE; - } - - if (in_array($tag, t('IF', 'ELSE', '->', '=>'))) - { - $seen_single = TRUE; - } - - if (in_array($tag, t('IF', 'ELSE', 'SWITCH', 'TRY'))) - { - $seen_control = TRUE; - } - - if (in_array($tag, t('.', '?.', '::')) && $self->tag($i - 1) === t('OUTDENT')) - { - return TRUE; - } - - return - ! (isset($token['generated']) && $token['generated']) && $self->tag($i - 1) !== t(',') && - (in_array($tag, t(Rewriter::$IMPLICIT_END))) && - ($tag !== t('INDENT') || - ( $self->tag($i - 2) !== t('CLASS') && - ! in_array($self->tag($i - 1), t(Rewriter::$IMPLICIT_BLOCK)) && - ! ( (isset($self->tokens[$i + 1]) && ($post = $self->tokens[$i + 1])) && - (isset($post['generated']) && $post['generated']) && $post[0] === t('{') ) - )); - }, - $action); - - if ($prev[0] === t('?')) - { - $prev[0] = t('FUNC_EXIST'); - } - - return 2; - }); - } - - function close_open_calls() - { - $self = $this; - - $condition = function($token, $i) use ( & $self) - { - return in_array($token[0], t(')', 'CALL_END')) || $token[0] === t('OUTDENT') && - $self->tag($i - 1) === t(')'); - }; - - $action = function($token, $i) use ( & $self) - { - $self->tokens[($token[0] === t('OUTDENT') ? $i - 1 : $i)][0] = t('CALL_END'); - }; - - $this->scan_tokens(function($token, $i) use ( & $self, $condition, $action) - { - if ($token[0] === t('CALL_START')) - { - $self->detect_end($i + 1, $condition, $action); - } - - return 1; - }); - } - - function close_open_indexes() - { - $condition = function($token, $i) - { - return in_array($token[0], t(']', 'INDEX_END')); - }; - - $action = function( & $token, $i) - { - $token[0] = t('INDEX_END'); - }; - - $self = $this; - - $this->scan_tokens(function($token, $i) use ( & $self, $condition, $action) - { - if ($token[0] === t('INDEX_START')) - { - $self->detect_end($i + 1, $condition, $action); - } - - return 1; - }); - } - - function detect_end($i, $condition, $action) - { - $tokens = & $this->tokens; - $levels = 0; - - while (isset($tokens[$i])) - { - $token = & $tokens[$i]; - - if ($levels === 0 && $condition($token, $i)) - { - return $action($token, $i); - } - - if ( ! $token || $levels < 0) - { - return $action($token, $i - 1); - } - - if (in_array($token[0], t(Rewriter::$EXPRESSION_START))) - { - $levels++; - } - else if (in_array($token[0], t(Rewriter::$EXPRESSION_END))) - { - $levels--; - } - - $i++; - } - - return $i - 1; - } - - function ensure_balance($pairs) - { - $levels = array(); - $open_line = array(); - - foreach ($this->tokens as $token) - { - $tag = $token[0]; - - foreach ($pairs as $pair) - { - list($open, $close) = $pair; - - if ( ! isset($levels[$open])) - { - $levels[$open] = 0; - } - - if ($tag === t($open)) - { - if ($levels[$open]++ === 0) - { - $open_line[$open] = $token[2]; - } - } - else if ($tag === t($close) && --$levels[$open] < 0) - { - throw new Error('too many '.$token[1].' on line '.($token[2] + 1)); - } - } - } - - foreach ($levels as $open => $level) - { - if ($level > 0) - { - throw new Error('unclosed '.$open.' on line '.($open_line[$open] + 1)); - } - } - - return $this; - } - - function indentation($token) - { - return array( array(t('INDENT'), 2, $token[2]), array(t('OUTDENT'), 2, $token[2]) ); - } - - static function init() - { - foreach (self::$BALANCED_PAIRS as $pair) - { - list($left, $rite) = $pair; - - self::$EXPRESSION_START[] = self::$INVERSES[$rite] = $left; - self::$EXPRESSION_END[] = self::$INVERSES[$left] = $rite; - } - - self::$EXPRESSION_CLOSE = array_merge(self::$EXPRESSION_CLOSE, self::$EXPRESSION_END); - } - - function remove_leading_newlines() - { - $key = 0; - - foreach ($this->tokens as $k => $token) - { - $key = $k; - $tag = $token[0]; - - if ($tag !== t('TERMINATOR')) - { - break; - } - } - - if ($key) - { - array_splice($this->tokens, 0, $key); - } - } - - function remove_mid_expression_newlines() - { - $self = $this; - - $this->scan_tokens(function( & $token, $i, & $tokens) use ( & $self) - { - if ( ! ($token[0] === t('TERMINATOR') && in_array($self->tag($i + 1), t(Rewriter::$EXPRESSION_CLOSE)))) - { - return 1; - } - - array_splice($tokens, $i, 1); - return 0; - }); - } - - function rewrite() - { - $this->remove_leading_newlines(); - $this->remove_mid_expression_newlines(); - $this->close_open_calls(); - $this->close_open_indexes(); - $this->add_implicit_indentation(); - $this->tag_postfix_conditionals(); - $this->add_implicit_braces(); - $this->add_implicit_parentheses(); - //$this->ensure_balance(self::$BALANCED_PAIRS); - $this->rewrite_closing_parens(); - - return $this->tokens; - } - - function rewrite_closing_parens() - { - $stack = array(); - $debt = array(); - - // Need to change to an associative array of numeric constants, rather - // than the string names. - $inverses = array(); - - foreach (Rewriter::$INVERSES as $k => $v) - { - $inverses[t($k)] = $v; - } - - foreach ($inverses as $k => $v) - { - $debt[$k] = 0; - } - - $self = $this; - - $this->scan_tokens(function( & $token, $i, & $tokens) use ( & $self, & $stack, & $debt, $inverses) - { - if (in_array(($tag = $token[0]), t(Rewriter::$EXPRESSION_START))) - { - $stack[] = $token; - return 1; - } - - if ( ! (in_array($tag, t(Rewriter::$EXPRESSION_END)))) - { - return 1; - } - - if ($debt[ ($inv = t($inverses[$tag])) ] > 0) - { - $debt[$inv]--; - array_splice($tokens, $i, 1); - return 0; - } - - $match = array_pop($stack); - $mtag = $match[0]; - $oppos = $inverses[$mtag]; - - if ($tag === t($oppos)) - { - return 1; - } - - $debt[$mtag]++; - - $val = array(t($oppos), $mtag === t('INDENT') ? $match[1] : $oppos); - - //if ($oppos === 'INDEX_END') - //{ - // $val[1] = ']'; - //} - - if ($self->tag($i + 2) === $mtag) - { - array_splice($tokens, $i + 3, 0, array($val)); - $stack[] = $match; - } - else - { - array_splice($tokens, $i, 0, array($val)); - } - - return 1; - }); - } - - function scan_tokens($block) - { - $i = 0; - - while (isset($this->tokens[$i])) - { - $i += $block($this->tokens[$i], $i, $this->tokens); - } - - return TRUE; - } - - function tag($i) - { - return isset($this->tokens[$i]) ? $this->tokens[$i][0] : NULL; - } - - function tag_postfix_conditionals() - { - $condition = function($token, $i) - { - return in_array($token[0], t('TERMINATOR', 'INDENT')); - }; - - $self = $this; - - $this->scan_tokens(function( & $token, $i) use ( & $condition, & $self) - { - if ( ! ($token[0] === t('IF'))) - { - return 1; - } - - $original = & $token; - - $self->detect_end($i + 1, $condition, function($token, $i) use ( & $original) - { - if ($token[0] !== t('INDENT')) - { - $original[0] = t('POST_IF'); // 'POST_'.$original[0]; - } - }); - - return 1; - }); - } -} - -Rewriter::init(); - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/scope.php b/src/vitis/vas/rest/class/vmlib/coffeescript/classes/scope.php deleted file mode 100755 index abfbff6f9bce730245dcd28127f2400db04f4440..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/classes/scope.php +++ /dev/null @@ -1,189 +0,0 @@ -<?php - -namespace CoffeeScript; - -require_once 'helpers.php'; - -/** - * Lexical scope manager. - */ -class Scope -{ - static $root = NULL; - - public $shared = FALSE; - private $has_assignments = FALSE; - - function __construct($parent, $expressions, $method) - { - $this->parent = $parent; - $this->expressions = $expressions; - $this->method = $method; - - $this->variables = array( - array('name' => 'arguments', 'type' => 'arguments') - ); - - $this->positions = array(); - - if ( ! $this->parent) - { - self::$root = $this; - } - } - - function add($name, $type, $immediate = FALSE) - { - if ($this->shared && ! $immediate) - { - return $this->parent->add($name, $type, $immediate); - } - - if (isset($this->positions[$name]) && is_numeric($pos = $this->positions[$name])) - { - $this->variables[$pos]['type'] = $type; - } - else - { - $this->variables[] = array('name' => $name, 'type' => $type); - $this->positions[$name] = count($this->variables) - 1; - } - } - - function assign($name, $value) - { - $this->add($name, array('value' => $value, 'assigned' => TRUE)); - $this->has_assignments = TRUE; - } - - function assigned_variables() - { - $tmp = array(); - - foreach ($this->variables as $v) - { - $type = $v['type']; - - if (is_array($type) && isset($type['assigned']) && $type['assigned']) - { - $tmp[] = "{$v['name']} = {$v['type']['value']}"; - } - } - - return $tmp; - } - - function check($name, $immediate = FALSE) - { - $found = !! $this->type($name); - - if ($found || $immediate) - { - return $found; - } - - return $this->parent ? $this->parent->check($name) : FALSE; - } - - function declared_variables() - { - $real_vars = array(); - $temp_vars = array(); - - foreach ($this->variables as $v) - { - if ($v['type'] === 'var') - { - if ($v['name']{0} === '_') - { - $temp_vars[] = $v['name']; - } - else - { - $real_vars[] = $v['name']; - } - } - } - - asort($real_vars); - asort($temp_vars); - - return array_merge($real_vars, $temp_vars); - } - - function find($name, $options = array()) - { - if ($this->check($name, $options)) - { - return TRUE; - } - - $this->add($name, 'var'); - - return FALSE; - } - - function free_variable($type) - { - $index = 0; - - while ($this->check(($temp = $this->temporary($type, $index)))) - { - $index++; - } - - $this->add($temp, 'var', TRUE); - - return $temp; - } - - function has_assignments() - { - return $this->has_assignments; - } - - function has_declarations() - { - return !! count($this->declared_variables()); - } - - function parameter($name) - { - if ($this->shared && $this->parent->check($name, TRUE)) - { - return; - } - - $this->add($name, 'param'); - } - - function temporary($name, $index) - { - if (strlen($name) > 1) - { - return '_'.$name.($index > 1 ? $index : ''); - } - else - { - $val = strval(base_convert($index + intval($name, 36), 10, 36)); - $val = preg_replace('/\d/', 'a', $val); - - return '_'.$val; - } - } - - function type($name) - { - foreach ($this->variables as $v) - { - if ($v['name'] === $name) - { - return $v['type']; - } - } - - return NULL; - } -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/coffeescript.php b/src/vitis/vas/rest/class/vmlib/coffeescript/coffeescript.php deleted file mode 100755 index bbfd970583f5a0312ff284d9436df2a33f4106fb..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/coffeescript.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php -namespace CoffeeScript; - -require_once 'classes/lexer.php'; -require_once 'classes/parser.php'; - -/** - * Compile some CoffeeScript. - * - * @param $code The source CoffeeScript code. - * @param $options Compiler options. - */ -function compile($code, $options = array(), & $tokens = NULL) -{ - $lexer = new Lexer($code, $options); - - if (isset($options['file'])) - { - Parser::$FILE = $options['file']; - } - - if (isset($options['trace'])) - { - Parser::Trace(fopen($options['trace'], 'w', TRUE), '> '); - } - - $parser = new Parser(); - - foreach (($tokens = $lexer->tokenize()) as $token) - { - $parser->parse($token); - } - - return $parser->parse(NULL)->compile($options); -} - -?> diff --git a/src/vitis/vas/rest/class/vmlib/coffeescript/jsmaker.php b/src/vitis/vas/rest/class/vmlib/coffeescript/jsmaker.php deleted file mode 100755 index 3b912e88d8f399bf07fa7dc0b6a005b9283a0352..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/coffeescript/jsmaker.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php -ini_set('display_errors', 1); -error_reporting(0); -header('Content-Type: application/javascript', true); -if(isset($_GET['f'])) -{ - include 'class.jstocoffee.php'; - $JsToCoffee = new JsToCoffee; - $JsToCoffee->setCacheDir(__DIR__ . '/cache/'); - $JsToCoffee->setAllowedCoffeeDir(__DIR__ . '/../../coffee/'); - echo $JsToCoffee->makeJavascript($_GET['f']); -} -else -{ - echo ''; -} \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/context/covage.inc b/src/vitis/vas/rest/class/vmlib/context/covage.inc deleted file mode 100755 index 54b6488302765982cf7a23a5b194e54df5c75435..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/context/covage.inc +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -// Corps du message -$properties['businessobject.bo_id']['value'] = $this->aObjects["oBusinessObject"]->get('bo_id'); -$properties['businessobject.bo_id']['fr'] = "Corps du message"; -$properties['businessobject.bo_id']['en'] = "Corps du message"; - -// Nom du demandeur -$properties['businessobject.user.name']['value'] = $this->aObjects["oBusinessObject"]->getUser('admin_framework')->aFields['name']; -$properties['businessobject.user.name']['fr'] = "Nom du demandeur"; -$properties['businessobject.user.name']['en'] = "Nom du demandeur"; -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/context/gtf.inc b/src/vitis/vas/rest/class/vmlib/context/gtf.inc deleted file mode 100755 index 9239727b5b7b8024574f52119230100f8d83b66f..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/context/gtf.inc +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -// Adresse email du demandeur -$properties['order.user.email']['value'] = $this->aObjects["oOrder"]->getUser()->aFields['email']; -$properties['order.user.email']['fr'] = "Adresse email du demandeur"; -$properties['order.user.email']['en'] = "Adresse email du demandeur"; - -// Nom du demandeur du traitement -$properties['order.user.name']['value'] = $this->aObjects["oOrder"]->getUser()->aFields['name']; -$properties['order.user.name']['fr'] = "Nom du demandeur du traitement"; -$properties['order.user.name']['en'] = "Nom du demandeur du traitement"; - -// Compte de connexion du demandeur du traitement -$properties['order.user.login']['value'] = $this->aObjects["oOrder"]->getUser()->aFields['login']; -$properties['order.user.login']['fr'] = "Compte du demandeur du traitement"; -$properties['order.user.login']['en'] = "Compte du demandeur du traitement"; - -// Date et heure de la demande -$properties['order.order_date']['value'] = $this->aObjects["oOrder"]->aFields['order_date']; -$properties['order.order_date']['fr'] = "Date et heure de la demande de traitement"; -$properties['order.order_date']['en'] = "Date et heure de la demande de traitement"; - -// Url de téléchargement du résultat -$properties['order.result_url']['value'] = $this->aObjects["oOrder"]->aFields['result_url']; -$properties['order.result_url']['fr'] = "Url de téléchargement du résultat"; -$properties['order.result_url']['en'] = "Url de téléchargement du résultat"; - -// Url de téléchargement du log -$properties['order.log_url']['value'] = $this->aObjects["oOrder"]->aFields['log_url']; -$properties['order.log_url']['fr'] = "Url de téléchargement du fichier de log"; -$properties['order.log_url']['en'] = "Url de téléchargement du fichier de log"; - -// Identifiant de la demande de traitement -$properties['order.order_id']['value'] = $this->aObjects["oOrder"]->aFields['order_id']; -$properties['order.order_id']['fr'] = "Identifiant de la demande de traitement"; -$properties['order.order_id']['en'] = "Identifiant de la demande de traitement"; - -// Nom du traitement -$properties['order.workspace.name']['value'] = $this->aObjects["oOrder"]->getWorkspace()->aFields['name']; -$properties['order.workspace.name']['fr'] = "Nom du traitement"; -$properties['order.workspace.name']['en'] = "Nom du traitement"; - -// Catégorie du traitement -$properties['order.workspace.category.name']['value'] = $this->aObjects["oOrder"]->getWorkspace()->getCategory()->aFields['name']; -$properties['order.workspace.category.name']['fr'] = "Catégorie du traitement"; -$properties['order.workspace.category.name']['en'] = "Catégorie du traitement"; - -// Durée du traitement -$properties['order.length_sec']['value'] = $this->aObjects["oOrder"]->aFields['length_sec']; -$properties['order.length_sec']['fr'] = "Durée du traitement en secondes"; -$properties['order.length_sec']['en'] = "Durée du traitement"; - -// Date et heure de fin de traitement -$properties['order.execution_date']['value'] = $this->aObjects["oOrder"]->aFields['execution_date']; -$properties['order.execution_date']['fr'] = "Date et heure de fin de traitement"; -$properties['order.execution_date']['en'] = "Date et heure de fin de traitement"; - -//Adresse mail du destinataire en copie -$properties['order.email_notifications']['value'] = $this->aObjects["oOrder"]->aFields['email_notifications']; -$properties['order.email_notifications']['fr'] = "Adresse email du destinataire en copie du mail"; -$properties['order.email_notifications']['en'] = "Adresse email du destinataire en copie du mail"; -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/context/message.inc b/src/vitis/vas/rest/class/vmlib/context/message.inc deleted file mode 100755 index 40b060d307ee4c41905e5894938d455cda9c973d..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/context/message.inc +++ /dev/null @@ -1,12 +0,0 @@ -<?php - -// Corps du message -$properties['message.email_body']['value'] = $this->aObjects["oMessage"]->getBody('email_body'); -$properties['message.email_body']['fr'] = "Corps du message"; -$properties['message.email_body']['en'] = "Corps du message"; - -// Id de la demande -$properties['message.order_id']['value'] = $this->aObjects["oMessage"]->getBody('order_id'); -$properties['message.order_id']['fr'] = "Id de la demande"; -$properties['message.order_id']['en'] = "Order Id"; -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/cryptUtil.inc b/src/vitis/vas/rest/class/vmlib/cryptUtil.inc deleted file mode 100755 index f0cdd11cd1b12efc48ce0b1216c972c4374dfdc4..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/cryptUtil.inc +++ /dev/null @@ -1,302 +0,0 @@ -<?php - -/* - * - * cryptUtil.inc : fonction de Cryptage et decryptage de texte en fonction d'une clef priv�e - * - */ - -//this takes the key, the message, and whether to encrypt or decrypt -function des($key, $message, $encrypt, $mode, $iv = null, $padding = "") { - //declaring this locally speeds things up a bit - $spfunction1 = array(0x1010400, 0, 0x10000, 0x1010404, 0x1010004, 0x10404, 0x4, 0x10000, 0x400, 0x1010400, 0x1010404, 0x400, 0x1000404, 0x1010004, 0x1000000, 0x4, 0x404, 0x1000400, 0x1000400, 0x10400, 0x10400, 0x1010000, 0x1010000, 0x1000404, 0x10004, 0x1000004, 0x1000004, 0x10004, 0, 0x404, 0x10404, 0x1000000, 0x10000, 0x1010404, 0x4, 0x1010000, 0x1010400, 0x1000000, 0x1000000, 0x400, 0x1010004, 0x10000, 0x10400, 0x1000004, 0x400, 0x4, 0x1000404, 0x10404, 0x1010404, 0x10004, 0x1010000, 0x1000404, 0x1000004, 0x404, 0x10404, 0x1010400, 0x404, 0x1000400, 0x1000400, 0, 0x10004, 0x10400, 0, 0x1010004); - $spfunction2 = array(-0x7fef7fe0, -0x7fff8000, 0x8000, 0x108020, 0x100000, 0x20, -0x7fefffe0, -0x7fff7fe0, -0x7fffffe0, -0x7fef7fe0, -0x7fef8000, -0x80000000, -0x7fff8000, 0x100000, 0x20, -0x7fefffe0, 0x108000, 0x100020, -0x7fff7fe0, 0, -0x80000000, 0x8000, 0x108020, -0x7ff00000, 0x100020, -0x7fffffe0, 0, 0x108000, 0x8020, -0x7fef8000, -0x7ff00000, 0x8020, 0, 0x108020, -0x7fefffe0, 0x100000, -0x7fff7fe0, -0x7ff00000, -0x7fef8000, 0x8000, -0x7ff00000, -0x7fff8000, 0x20, -0x7fef7fe0, 0x108020, 0x20, 0x8000, -0x80000000, 0x8020, -0x7fef8000, 0x100000, -0x7fffffe0, 0x100020, -0x7fff7fe0, -0x7fffffe0, 0x100020, 0x108000, 0, -0x7fff8000, 0x8020, -0x80000000, -0x7fefffe0, -0x7fef7fe0, 0x108000); - $spfunction3 = array(0x208, 0x8020200, 0, 0x8020008, 0x8000200, 0, 0x20208, 0x8000200, 0x20008, 0x8000008, 0x8000008, 0x20000, 0x8020208, 0x20008, 0x8020000, 0x208, 0x8000000, 0x8, 0x8020200, 0x200, 0x20200, 0x8020000, 0x8020008, 0x20208, 0x8000208, 0x20200, 0x20000, 0x8000208, 0x8, 0x8020208, 0x200, 0x8000000, 0x8020200, 0x8000000, 0x20008, 0x208, 0x20000, 0x8020200, 0x8000200, 0, 0x200, 0x20008, 0x8020208, 0x8000200, 0x8000008, 0x200, 0, 0x8020008, 0x8000208, 0x20000, 0x8000000, 0x8020208, 0x8, 0x20208, 0x20200, 0x8000008, 0x8020000, 0x8000208, 0x208, 0x8020000, 0x20208, 0x8, 0x8020008, 0x20200); - $spfunction4 = array(0x802001, 0x2081, 0x2081, 0x80, 0x802080, 0x800081, 0x800001, 0x2001, 0, 0x802000, 0x802000, 0x802081, 0x81, 0, 0x800080, 0x800001, 0x1, 0x2000, 0x800000, 0x802001, 0x80, 0x800000, 0x2001, 0x2080, 0x800081, 0x1, 0x2080, 0x800080, 0x2000, 0x802080, 0x802081, 0x81, 0x800080, 0x800001, 0x802000, 0x802081, 0x81, 0, 0, 0x802000, 0x2080, 0x800080, 0x800081, 0x1, 0x802001, 0x2081, 0x2081, 0x80, 0x802081, 0x81, 0x1, 0x2000, 0x800001, 0x2001, 0x802080, 0x800081, 0x2001, 0x2080, 0x800000, 0x802001, 0x80, 0x800000, 0x2000, 0x802080); - $spfunction5 = array(0x100, 0x2080100, 0x2080000, 0x42000100, 0x80000, 0x100, 0x40000000, 0x2080000, 0x40080100, 0x80000, 0x2000100, 0x40080100, 0x42000100, 0x42080000, 0x80100, 0x40000000, 0x2000000, 0x40080000, 0x40080000, 0, 0x40000100, 0x42080100, 0x42080100, 0x2000100, 0x42080000, 0x40000100, 0, 0x42000000, 0x2080100, 0x2000000, 0x42000000, 0x80100, 0x80000, 0x42000100, 0x100, 0x2000000, 0x40000000, 0x2080000, 0x42000100, 0x40080100, 0x2000100, 0x40000000, 0x42080000, 0x2080100, 0x40080100, 0x100, 0x2000000, 0x42080000, 0x42080100, 0x80100, 0x42000000, 0x42080100, 0x2080000, 0, 0x40080000, 0x42000000, 0x80100, 0x2000100, 0x40000100, 0x80000, 0, 0x40080000, 0x2080100, 0x40000100); - $spfunction6 = array(0x20000010, 0x20400000, 0x4000, 0x20404010, 0x20400000, 0x10, 0x20404010, 0x400000, 0x20004000, 0x404010, 0x400000, 0x20000010, 0x400010, 0x20004000, 0x20000000, 0x4010, 0, 0x400010, 0x20004010, 0x4000, 0x404000, 0x20004010, 0x10, 0x20400010, 0x20400010, 0, 0x404010, 0x20404000, 0x4010, 0x404000, 0x20404000, 0x20000000, 0x20004000, 0x10, 0x20400010, 0x404000, 0x20404010, 0x400000, 0x4010, 0x20000010, 0x400000, 0x20004000, 0x20000000, 0x4010, 0x20000010, 0x20404010, 0x404000, 0x20400000, 0x404010, 0x20404000, 0, 0x20400010, 0x10, 0x4000, 0x20400000, 0x404010, 0x4000, 0x400010, 0x20004010, 0, 0x20404000, 0x20000000, 0x400010, 0x20004010); - $spfunction7 = array(0x200000, 0x4200002, 0x4000802, 0, 0x800, 0x4000802, 0x200802, 0x4200800, 0x4200802, 0x200000, 0, 0x4000002, 0x2, 0x4000000, 0x4200002, 0x802, 0x4000800, 0x200802, 0x200002, 0x4000800, 0x4000002, 0x4200000, 0x4200800, 0x200002, 0x4200000, 0x800, 0x802, 0x4200802, 0x200800, 0x2, 0x4000000, 0x200800, 0x4000000, 0x200800, 0x200000, 0x4000802, 0x4000802, 0x4200002, 0x4200002, 0x2, 0x200002, 0x4000000, 0x4000800, 0x200000, 0x4200800, 0x802, 0x200802, 0x4200800, 0x802, 0x4000002, 0x4200802, 0x4200000, 0x200800, 0, 0x2, 0x4200802, 0, 0x200802, 0x4200000, 0x800, 0x4000002, 0x4000800, 0x800, 0x200002); - $spfunction8 = array(0x10001040, 0x1000, 0x40000, 0x10041040, 0x10000000, 0x10001040, 0x40, 0x10000000, 0x40040, 0x10040000, 0x10041040, 0x41000, 0x10041000, 0x41040, 0x1000, 0x40, 0x10040000, 0x10000040, 0x10001000, 0x1040, 0x41000, 0x40040, 0x10040040, 0x10041000, 0x1040, 0, 0, 0x10040040, 0x10000040, 0x10001000, 0x41040, 0x40000, 0x41040, 0x40000, 0x10041000, 0x1000, 0x40, 0x10040040, 0x1000, 0x41040, 0x10001000, 0x40, 0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x40000, 0x10001040, 0, 0x10041040, 0x40040, 0x10000040, 0x10040000, 0x10001000, 0x10001040, 0, 0x10041040, 0x41000, 0x41000, 0x1040, 0x1040, 0x40040, 0x10000000, 0x10041000); - $masks = array(4294967295, 2147483647, 1073741823, 536870911, 268435455, 134217727, 67108863, 33554431, 16777215, 8388607, 4194303, 2097151, 1048575, 524287, 262143, 131071, 65535, 32767, 16383, 8191, 4095, 2047, 1023, 511, 255, 127, 63, 31, 15, 7, 3, 1, 0); - - //create the 16 or 48 subkeys we will need - $keys = des_createKeys($key); - $m = 0; - $len = strlen($message); - $chunk = 0; - //set up the loops for single and triple des - $iterations = ((count($keys) == 32) ? 3 : 9); //single or triple des - if ($iterations == 3) { - $looping = (($encrypt) ? array(0, 32, 2) : array(30, -2, -2)); - } else { - $looping = (($encrypt) ? array(0, 32, 2, 62, 30, -2, 64, 96, 2) : array(94, 62, -2, 32, 64, 2, 30, -2, -2)); - } - - //pad the message depending on the padding parameter - if ($padding == 2) - $message .= " "; //pad the message with spaces - else if ($padding == 1) { - $temp = 8 - ($len % 8); - $message .= chr($temp) . chr($temp) . chr($temp) . chr($temp) . chr($temp) . chr($temp) . chr($temp) . chr($temp); - if ($temp == 8) - $len+=8; - } //PKCS7 padding - else if ($padding == "") - $message .= (chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0) . chr(0)); //pad the message out with null bytes - - -//store the result here - $result = ""; - $tempresult = ""; - - if ($mode == 1) { //CBC mode - $cbcleft = (ord($iv{$m++}) << 24) | (ord($iv{$m++}) << 16) | (ord($iv{$m++}) << 8) | ord($iv{$m++}); - $cbcright = (ord($iv{$m++}) << 24) | (ord($iv{$m++}) << 16) | (ord($iv{$m++}) << 8) | ord($iv{$m++}); - $m = 0; - } - - //loop through each 64 bit chunk of the message - while ($m < $len) { - $left = (ord($message{$m++}) << 24) | (ord($message{$m++}) << 16) | (ord($message{$m++}) << 8) | ord($message{$m++}); - $right = (ord($message{$m++}) << 24) | (ord($message{$m++}) << 16) | (ord($message{$m++}) << 8) | ord($message{$m++}); - - //for Cipher Block Chaining mode, xor the message with the previous result - if ($mode == 1) { - if ($encrypt) { - $left ^= $cbcleft; - $right ^= $cbcright; - } else { - $cbcleft2 = $cbcleft; - $cbcright2 = $cbcright; - $cbcleft = $left; - $cbcright = $right; - } - } - - //first each 64 but chunk of the message must be permuted according to IP - $temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; - $right ^= $temp; - $left ^= ($temp << 4); - $temp = (($left >> 16 & $masks[16]) ^ $right) & 0x0000ffff; - $right ^= $temp; - $left ^= ($temp << 16); - $temp = (($right >> 2 & $masks[2]) ^ $left) & 0x33333333; - $left ^= $temp; - $right ^= ($temp << 2); - $temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; - $left ^= $temp; - $right ^= ($temp << 8); - $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; - $right ^= $temp; - $left ^= ($temp << 1); - - $left = (($left << 1) | ($left >> 31 & $masks[31])); - $right = (($right << 1) | ($right >> 31 & $masks[31])); - - //do this either 1 or 3 times for each chunk of the message - for ($j = 0; $j < $iterations; $j+=3) { - $endloop = $looping[$j + 1]; - $loopinc = $looping[$j + 2]; - //now go through and perform the encryption or decryption - for ($i = $looping[$j]; $i != $endloop; $i+=$loopinc) { //for efficiency - $right1 = $right ^ $keys[$i]; - $right2 = (($right >> 4 & $masks[4]) | ($right << 28 & 0xffffffff)) ^ $keys[$i + 1]; - //the result is attained by passing these bytes through the S selection functions - $temp = $left; - $left = $right; - $right = $temp ^ ($spfunction2[($right1 >> 24 & $masks[24]) & 0x3f] | $spfunction4[($right1 >> 16 & $masks[16]) & 0x3f] | $spfunction6[($right1 >> 8 & $masks[8]) & 0x3f] | $spfunction8[$right1 & 0x3f] | $spfunction1[($right2 >> 24 & $masks[24]) & 0x3f] | $spfunction3[($right2 >> 16 & $masks[16]) & 0x3f] | $spfunction5[($right2 >> 8 & $masks[8]) & 0x3f] | $spfunction7[$right2 & 0x3f]); - } - $temp = $left; - $left = $right; - $right = $temp; //unreverse left and right - } //for either 1 or 3 iterations - //move then each one bit to the right - $left = (($left >> 1 & $masks[1]) | ($left << 31)); - $right = (($right >> 1 & $masks[1]) | ($right << 31)); - - //now perform IP-1, which is IP in the opposite direction - $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; - $right ^= $temp; - $left ^= ($temp << 1); - $temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; - $left ^= $temp; - $right ^= ($temp << 8); - $temp = (($right >> 2 & $masks[2]) ^ $left) & 0x33333333; - $left ^= $temp; - $right ^= ($temp << 2); - $temp = (($left >> 16 & $masks[16]) ^ $right) & 0x0000ffff; - $right ^= $temp; - $left ^= ($temp << 16); - $temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; - $right ^= $temp; - $left ^= ($temp << 4); - - //for Cipher Block Chaining mode, xor the message with the previous result - if ($mode == 1) { - if ($encrypt) { - $cbcleft = $left; - $cbcright = $right; - } else { - $left ^= $cbcleft2; - $right ^= $cbcright2; - } - } - $tempresult .= (chr($left >> 24 & $masks[24]) . chr(($left >> 16 & $masks[16]) & 0xff) . chr(($left >> 8 & $masks[8]) & 0xff) . chr($left & 0xff) . chr($right >> 24 & $masks[24]) . chr(($right >> 16 & $masks[16]) & 0xff) . chr(($right >> 8 & $masks[8]) & 0xff) . chr($right & 0xff)); - - $chunk += 8; - if ($chunk == 512) { - $result .= $tempresult; - $tempresult = ""; - $chunk = 0; - } - } //for every 8 characters, or 64 bits in the message - //return the result as an array - return ($result . $tempresult); -} - -//end of des -//des_createKeys -//this takes as input a 64 bit key (even though only 56 bits are used) -//as an array of 2 integers, and returns 16 48 bit keys -function des_createKeys($key) { - //declaring this locally speeds things up a bit - $pc2bytes0 = array(0, 0x4, 0x20000000, 0x20000004, 0x10000, 0x10004, 0x20010000, 0x20010004, 0x200, 0x204, 0x20000200, 0x20000204, 0x10200, 0x10204, 0x20010200, 0x20010204); - $pc2bytes1 = array(0, 0x1, 0x100000, 0x100001, 0x4000000, 0x4000001, 0x4100000, 0x4100001, 0x100, 0x101, 0x100100, 0x100101, 0x4000100, 0x4000101, 0x4100100, 0x4100101); - $pc2bytes2 = array(0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808, 0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808); - $pc2bytes3 = array(0, 0x200000, 0x8000000, 0x8200000, 0x2000, 0x202000, 0x8002000, 0x8202000, 0x20000, 0x220000, 0x8020000, 0x8220000, 0x22000, 0x222000, 0x8022000, 0x8222000); - $pc2bytes4 = array(0, 0x40000, 0x10, 0x40010, 0, 0x40000, 0x10, 0x40010, 0x1000, 0x41000, 0x1010, 0x41010, 0x1000, 0x41000, 0x1010, 0x41010); - $pc2bytes5 = array(0, 0x400, 0x20, 0x420, 0, 0x400, 0x20, 0x420, 0x2000000, 0x2000400, 0x2000020, 0x2000420, 0x2000000, 0x2000400, 0x2000020, 0x2000420); - $pc2bytes6 = array(0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002, 0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002); - $pc2bytes7 = array(0, 0x10000, 0x800, 0x10800, 0x20000000, 0x20010000, 0x20000800, 0x20010800, 0x20000, 0x30000, 0x20800, 0x30800, 0x20020000, 0x20030000, 0x20020800, 0x20030800); - $pc2bytes8 = array(0, 0x40000, 0, 0x40000, 0x2, 0x40002, 0x2, 0x40002, 0x2000000, 0x2040000, 0x2000000, 0x2040000, 0x2000002, 0x2040002, 0x2000002, 0x2040002); - $pc2bytes9 = array(0, 0x10000000, 0x8, 0x10000008, 0, 0x10000000, 0x8, 0x10000008, 0x400, 0x10000400, 0x408, 0x10000408, 0x400, 0x10000400, 0x408, 0x10000408); - $pc2bytes10 = array(0, 0x20, 0, 0x20, 0x100000, 0x100020, 0x100000, 0x100020, 0x2000, 0x2020, 0x2000, 0x2020, 0x102000, 0x102020, 0x102000, 0x102020); - $pc2bytes11 = array(0, 0x1000000, 0x200, 0x1000200, 0x200000, 0x1200000, 0x200200, 0x1200200, 0x4000000, 0x5000000, 0x4000200, 0x5000200, 0x4200000, 0x5200000, 0x4200200, 0x5200200); - $pc2bytes12 = array(0, 0x1000, 0x8000000, 0x8001000, 0x80000, 0x81000, 0x8080000, 0x8081000, 0x10, 0x1010, 0x8000010, 0x8001010, 0x80010, 0x81010, 0x8080010, 0x8081010); - $pc2bytes13 = array(0, 0x4, 0x100, 0x104, 0, 0x4, 0x100, 0x104, 0x1, 0x5, 0x101, 0x105, 0x1, 0x5, 0x101, 0x105); - $masks = array(4294967295, 2147483647, 1073741823, 536870911, 268435455, 134217727, 67108863, 33554431, 16777215, 8388607, 4194303, 2097151, 1048575, 524287, 262143, 131071, 65535, 32767, 16383, 8191, 4095, 2047, 1023, 511, 255, 127, 63, 31, 15, 7, 3, 1, 0); - - //how many iterations (1 for des, 3 for triple des) - $iterations = ((strlen($key) > 8) ? 3 : 1); //changed by Paul 16/6/2007 to use Triple DES for 9+ byte keys - //stores the return keys - $keys = array(); // size = 32 * iterations but you don't specify this in php - //now define the left shifts which need to be done - $shifts = array(0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0); - //other variables - $m = 0; - $n = 0; - - for ($j = 0; $j < $iterations; $j++) { //either 1 or 3 iterations - //$left = (ord($key{$m++}) << 24) | (ord($key{$m++}) << 16) | (ord($key{$m++}) << 8) | ord($key{$m++}); - $v = (isset($key{$m})) ? $key{$m} : ''; - $left = (ord($v) << 24); - $m++; - $v = (isset($key{$m})) ? $key{$m} : ''; - $left |= (ord($v) << 16); - $m++; - $v = (isset($key{$m})) ? $key{$m} : ''; - $left |= (ord($v) << 8); - $m++; - $v = (isset($key{$m})) ? $key{$m} : ''; - $left |= ord($v); - $m++; - - //$right = (ord($key{$m++}) << 24) | (ord($key{$m++}) << 16) | (ord($key{$m++}) << 8) | ord($key{$m++}); - $v = (isset($key{$m})) ? $key{$m} : ''; - $right = (ord($v) << 24); - $m++; - $v = (isset($key{$m})) ? $key{$m} : ''; - $right |= (ord($v) << 16); - $m++; - $v = (isset($key{$m})) ? $key{$m} : ''; - $right |= (ord($v) << 8); - $m++; - $v = (isset($key{$m})) ? $key{$m} : ''; - $right |= ord($v); - $m++; - - $temp = (($left >> 4 & $masks[4]) ^ $right) & 0x0f0f0f0f; - $right ^= $temp; - $left ^= ($temp << 4); - $temp = (($right >> 16 & $masks[16]) ^ $left) & 0x0000ffff; - $left ^= $temp; - $right ^= ($temp << 16); - $temp = (($left >> 2 & $masks[2]) ^ $right) & 0x33333333; - $right ^= $temp; - $left ^= ($temp << 2); - $temp = (($right >> 16 & $masks[16]) ^ $left) & 0x0000ffff; - $left ^= $temp; - $right ^= ($temp << 16); - $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; - $right ^= $temp; - $left ^= ($temp << 1); - $temp = (($right >> 8 & $masks[8]) ^ $left) & 0x00ff00ff; - $left ^= $temp; - $right ^= ($temp << 8); - $temp = (($left >> 1 & $masks[1]) ^ $right) & 0x55555555; - $right ^= $temp; - $left ^= ($temp << 1); - - //the right side needs to be shifted and to get the last four bits of the left side - $temp = ($left << 8) | (($right >> 20 & $masks[20]) & 0x000000f0); - //left needs to be put upside down - $left = ($right << 24) | (($right << 8) & 0xff0000) | (($right >> 8 & $masks[8]) & 0xff00) | (($right >> 24 & $masks[24]) & 0xf0); - $right = $temp; - - //now go through and perform these shifts on the left and right keys - for ($i = 0; $i < count($shifts); $i++) { - //shift the keys either one or two bits to the left - if ($shifts[$i] > 0) { - $left = (($left << 2) | ($left >> 26 & $masks[26])); - $right = (($right << 2) | ($right >> 26 & $masks[26])); - } else { - $left = (($left << 1) | ($left >> 27 & $masks[27])); - $right = (($right << 1) | ($right >> 27 & $masks[27])); - } - $left = $left & -0xf; - $right = $right & -0xf; - - //now apply PC-2, in such a way that E is easier when encrypting or decrypting - //this conversion will look like PC-2 except only the last 6 bits of each byte are used - //rather than 48 consecutive bits and the order of lines will be according to - //how the S selection functions will be applied: S2, S4, S6, S8, S1, S3, S5, S7 - $lefttemp = $pc2bytes0[$left >> 28 & $masks[28]] | $pc2bytes1[($left >> 24 & $masks[24]) & 0xf] | $pc2bytes2[($left >> 20 & $masks[20]) & 0xf] | $pc2bytes3[($left >> 16 & $masks[16]) & 0xf] | $pc2bytes4[($left >> 12 & $masks[12]) & 0xf] | $pc2bytes5[($left >> 8 & $masks[8]) & 0xf] | $pc2bytes6[($left >> 4 & $masks[4]) & 0xf]; - $righttemp = $pc2bytes7[$right >> 28 & $masks[28]] | $pc2bytes8[($right >> 24 & $masks[24]) & 0xf] | $pc2bytes9[($right >> 20 & $masks[20]) & 0xf] | $pc2bytes10[($right >> 16 & $masks[16]) & 0xf] | $pc2bytes11[($right >> 12 & $masks[12]) & 0xf] | $pc2bytes12[($right >> 8 & $masks[8]) & 0xf] | $pc2bytes13[($right >> 4 & $masks[4]) & 0xf]; - $temp = (($righttemp >> 16 & $masks[16]) ^ $lefttemp) & 0x0000ffff; - $keys[$n++] = $lefttemp ^ $temp; - $keys[$n++] = $righttemp ^ ($temp << 16); - } - } //for each iterations - //return the keys we've created - return $keys; -} - -//end of des_createKeys -////////////////////////////// TEST ////////////////////////////// -function stringToHex($s) { - $r = "0x"; - $hexes = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); - for ($i = 0; $i < strlen($s); $i++) { - $r .= ($hexes [(ord($s{$i}) >> 4)] . $hexes [(ord($s{$i}) & 0xf)]); - } - return $r; -} - -function hexToString($h) { - $r = ""; - for ($i = (substr($h, 0, 2) == "0x") ? 2 : 0; $i < strlen($h); $i+=2) { - $r .= chr(base_convert(substr($h, $i, 2), 16, 10)); - } - return $r; -} - -//Exemple d'utilisation -/* echo "<PRE>"; - $key = "this is a 24 byte key !!"; - $message = "This is a test message"; - $ciphertext = des ($key, $message, 1, 0, null); - echo "DES Test Encrypted: " . stringToHex ($ciphertext); - $recovered_message = des ($key, $ciphertext, 0, 0, null); - echo "\n"; - echo "DES Test Decrypted: " . $recovered_message; */ -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/dateUtil.class.inc b/src/vitis/vas/rest/class/vmlib/dateUtil.class.inc deleted file mode 100755 index 1eec84c05d99bd54acf607b1c6028d349e8aa19a..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/dateUtil.class.inc +++ /dev/null @@ -1,260 +0,0 @@ -<?php - -/** - * \file dateUtil.class.inc - * \brief dateUtil.class.inc \n \n Ce fichier contient la classe php dateOp. - * - * Cette classe � �t� �labor�e par Dorian Constant. - * Fonctions de calcul de dates : addition, soustraction et comparaison. - * - * \author Alf05. - */ - -/** - * \class dateOp - * \brief dateOp Class \n \n Cette classe totalement g�n�rique permet de faire des calcules sur les dates. - * - * Cette classe � �t� �labor�e par Dorian Constant. Tous les param�tres li�s � la cr�ation de formulaires - * Fonctions de calcul de dates : addition, soustraction et comparaison. - * - * Exemples : - * $madate=new dateOp("18/06/2008 12:00","jj/mm/aaaa hh:ii"); - * ou - * $madate=new dateOp("18.6.08 12:00","jj.m.aa h:ii"); - * - * Addition et soustraction - * $madate->AjouteJours(5); - * $madate->AjouteJours(-9); - * $madate->AjouteMois(5); - * $madate->AjouteMois(-9); - * $madate->AjouteAnnees(5); - * $madate->AjouteAnnees(-9); - * $madate->AjouteHeures(5); - * $madate->AjouteHeures(-9); - * $madate->AjouteMinutes(5); - * $madate->AjouteMinutes(-9); - * $madate->AjouteSecondes(5); - * $madate->AjouteSecondes(-9); - * - * Comparaison - * $difference=$madate->DiffenrenceEntreDate('11/04/2000','jj/mm/aaaa'); - * - * Affichage - * echo $madate->GetDate('h:i:s jj/mm/aaaa'); // r�sultat = "12:30:00 18/06/2008" - * - * D�finition du format de date - * 'j' repr�sente les jours ('jj' pour avoir le zero initial) - * 'm' repr�sente les mois ('mm' pour avoir le zero initial) - * 'aa' repr�sente les ann�es ('aaaa' pour avoir l'ann�e sur 4 chiffres) - * 'h' repr�sente les heures ('hh' pour avoir le zero initial) - * 'ii' repr�sente les minutes - * 'ss' repr�sente les secondes - * - * \author Alf05. - */ -class dateOp { - - /** - * Constructeur. - * \param $dat Date. - * \param $format Format de la date. - * \return Vrai. - - */ - /* - * Variable globale stockant le nom de dossier lib. - */ - var $sFolderLib = "vmlib"; - var $lang; - - function __construct($dat, $format = "jj/mm/aaaa hh:ii:ss", $lang = "fr") { - $this->lang = $lang; - loadLang($this->sFolderLib, $this->lang); - $this->errno = array(); - - if (strlen($dat) != strlen($format)) { - $this->_error(ERROR_DATE_FORMAT_INCOMPATIBLE); - return false; - } - - $this->dat['origine'] = $dat; - $this->format = strtolower($format); - return $this->_ExplodeDate($this->dat, $this->format); - } - - /** - * Ajoute un ou plusieurs jours . - * \param $nb nombre de jours - * \return Vrai. - */ - function AjouteJours($nb) { - $this->dat['jj']+=floatval($nb); - return true; - } - - /** - * Ajoute un ou plusieurs mois. - * \param $nb nombre de mois - * \return Vrai. - */ - function AjouteMois($nb) { - $this->dat['mm']+=floatval($nb); - return true; - } - - /** - * Ajoute une ou plusieurs ann�es. - * \param $nb nombre d'ann�e - * \return Vrai. - */ - function AjouteAnnees($nb) { - $this->dat['aaaa']+=floatval($nb); - return true; - } - - /** - * Ajoute un ou plusieurs heures. - * \param $nb nombre d'heures - * \return Vrai. - */ - function AjouteHeures($nb) { - $this->dat['hh']+=floatval($nb); - return true; - } - - /** - * Ajoute un ou plusieurs minutes. - * \param $nb nombre de minutes - * \return Vrai. - */ - function AjouteMinutes($nb) { - $this->dat['ii']+=floatval($nb); - return true; - } - - /** - * Ajoute une ou plusieurs secondes. - * \param $nb nombre de secondes - * \return Vrai. - */ - function AjouteSecondes($nb) { - $this->dat['ss']+=floatval($nb); - return true; - } - - /** - * Calcule la difference avec une date pass� en param�tre. - * \param $dat Date. - * \param $format Format de la date. - * \return Un tableau. - */ - function DiffenrenceEntreDate($dat, $format = "jj/mm/aaaa hh:ii:ss") { - if (strlen($dat) != strlen($format)) { - $this->_error(ERROR_DATE_FORMAT_INCOMPATIBLE); - return false; - } - $this->dat2['origine'] = $dat; - $this->format2 = strtolower($format); - $this->_ExplodeDate($this->dat2, $this->format2); - $d1 = mktime($this->dat['hh'], $this->dat['ii'], $this->dat['ss'], $this->dat['mm'], $this->dat['jj'], $this->dat['aaaa']); - $d2 = mktime($this->dat2['hh'], $this->dat2['ii'], $this->dat2['ss'], $this->dat2['mm'], $this->dat2['jj'], $this->dat2['aaaa']); - - if ($d2 > $d1) - $d = $d2 - $d1; - else - $d = $d1 - $d2; - - return array("ans" => date('Y', $d) - 1970, "mois" => date('m', $d) - 1, "jours" => date('d', $d) - 1, "joursTotal" => $d / 60 / 60 / 24, "heures" => date("G", $d) - 1, "minutes" => date("i", $d), "secondes" => date("s", $d)); - } - - /** - * Retourne la date dans un format pr�cis. - * \param $format Format de la date � renvoyer. - * \return Un tableau. - */ - function GetDate($format = "jj/mm/aaaa") { - $format = str_replace(array('jj', 'j', 'm', 'nn', 'aaaa', 'aa', 'hh', 'h', 'ii', 'ss'), array('d', 'D', 'n', 'm', 'Y', 'y', 'H', 'G', 'i', 's'), $format); - // - if (intval($this->dat['aaaa']) <= 1901 || intval($this->dat['aaaa']) >= 2038) { - $sDay = $this->dat['jj']; - $sMonth = $this->dat['mm']; - $sYear = $this->dat['aaaa']; - if (intval($sDay) <= 9) - $sDay = "0" . $sDay; - if (intval($sMonth) <= 9) - $sMonth = "0" . $sMonth; - if ($format == "d/m/Y") { - return $sDay . "/" . $sMonth . "/" . $sYear; - } - // TODO : Si besoin, g�rer tous les autres formats de dates possibles - } - // - return date($format, mktime($this->dat['hh'], $this->dat['ii'], $this->dat['ss'], $this->dat['mm'], $this->dat['jj'], $this->dat['aaaa'])); - } - - /** - * V�rifie si la date pass� en param�tre correspond au format pass� en param�tre. - * \param $dat Date. - * \param $format Format de la date. - * \return Vrai. - * \private - */ - function _ExplodeDate(&$dat, $format) { - $j[0] = 2; - if (($j[1] = strpos($format, 'jj')) === false) { - $j[0] = 1; - if (($j[1] = strpos($format, 'j')) === false) - $this->_error($format . " : " . ERROR_DAY_NOT_FOUND); - } - $m[0] = 2; - if (($m[1] = strpos($format, 'mm')) === false) - $m[0] = 1; - if (($m[1] = strpos($format, 'm')) === false) - $this->_error($format . " : " . ERROR_MONTH_NOT_FOUND); - $a[0] = 4; - if (($a[1] = strpos($format, 'aaaa')) === false) { - //cherche pour un aa au lieu de aaaa - $a[0] = 2; - if (($a[1] = strpos($format, 'aa')) === false) - $this->_error($format . " : " . ERROR_YEAR_NOT_FOUND); - } - $h[0] = 2; - if (($h[1] = strpos($format, 'hh')) === false) - $h[0] = 1; - if (($h[1] = strpos($format, 'h')) === false) - $this->_error($format . " : " . ERROR_HOUR_NOT_FOUND); - $i[0] = 2; - if (($i[1] = strpos($format, 'ii')) === false) - $i[0] = 1; - if (($i[1] = strpos($format, 'i')) === false) - $this->_error($format . " : " . ERROR_MINUTE_NOT_FOUND); - $s[0] = 2; - if (($s[1] = strpos($format, 'ss')) === false) - $s[0] = 1; - if (($s[1] = strpos($format, 's')) === false) - $this->_error($format . " : " . ERROR_SECOND_NOT_FOUND); - $dat['jj'] = ($j[1] !== false) ? floatval(substr($dat['origine'], $j[1], $j[0])) : 1; - $dat['mm'] = ($m[1] !== false) ? floatval(substr($dat['origine'], $m[1], $m[0])) : 1; - $dat['aaaa'] = ($a[1] !== false) ? floatval(substr($dat['origine'], $a[1], $a[0])) : 1970; - if ($a[0] == 2) - $dat['aaaa'] = floatval(substr(date('Y'), 0, 2) . $dat['aaaa']); - $dat['hh'] = ($h[1] !== false) ? floatval(substr($dat['origine'], $h[1], $h[0])) : 0; - $dat['ii'] = ($i[1] !== false) ? floatval(substr($dat['origine'], $i[1], $i[0])) : 0; - $dat['ss'] = ($s[1] !== false) ? floatval(substr($dat['origine'], $s[1], $s[0])) : 0; - return true; - } - - /** - * Stocke le message d'erreur. - * \param $str. - * \return Vrai. - * \private - */ - function _error($str) { - $this->errno[] = $str; - return true; - } - -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/dbUtil.inc b/src/vitis/vas/rest/class/vmlib/dbUtil.inc deleted file mode 100755 index fce8724585322449e66e54301d5f4eaf7558ed76..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/dbUtil.inc +++ /dev/null @@ -1,400 +0,0 @@ -<?php - -/* - * - * dbUtil.inc : fonction de r�cup�ration de connexion BD d'apr�s les param�tres de session - * - */ - -/* - * Variable globale stockant le nom de dossier lib. - */ -require_once __DIR__ . '/error.inc'; -require_once __DIR__ .'/../Ldap.class.inc'; -$sFolderLib = "vmlib"; - -/** - DEPRECATED utiliser la fonction codePass2 - * Cette m�thode code une chaine. - * \param $sPass Chaine � crypt�e. - * \return la chaine cod�e. - */ -/* function codepass($sPass) { - $sCode .= chr(97+strlen($sPass)); - for($i = 0; $i < 20; $i++){ - if ($i < strlen($sPass)){ - $iChar = ord($sPass[$i]); - $sCode .= sprintf("%'04s", $iChar); - }else{ - $sCode .= sprintf("%'04s", rand(0,99)); - } - } - return $sCode; - } */ - -/** - * Cette m�thode code une chaine. - * \param $sKey Cl� de cryptage. - * \param $sCode Chaine � crypt�e. - * \return la chaine cod�e. - */ -function codePass2($sKey, $sCode) { - require_once(__DIR__ . "/cryptUtil.inc"); - $sCode = stringToHex(trim(des(rtrim($sKey), rtrim($sCode), 1, 0, null))); - return $sCode; -} - -/** - DEPRECATED utiliser la fonction decodePass2 - * Cette m�thode d�code une chaine. - * \param $sCode Chaine � traduire. - * \return la chaine d�cod�e. - */ -function decodepass($sCode) { - require_once(__DIR__ . "/cryptUtil.inc"); - $sCode = trim(des(rtrim($_SESSION["ses_Login"]), hexToString(rtrim($sCode)), 0, 0, null)); - return $sCode; -} - -/** - * Cette m�thode d�code une chaine. - * \param $sKey Cl� de cryptage. - * \param $sCode Chaine � traduire. - * \return la chaine d�cod�e. - */ -function decodePass2($sKey, $sCode) { - require_once(__DIR__ . "/cryptUtil.inc"); - $sCode = trim(des(rtrim($sKey), hexToString(rtrim($sCode)), 0, 0, null)); - return $sCode; -} - -/** - * Cette m�thode g�n�re une connexion � la base de donn�es. - * \param $sPageEncoding Encodage de la base de donn�e. - * \return un objet BD. - */ -function connectFromSessionV2($sPageEncoding = "LATIN1") { - global $properties, $sFolderLib; - require_once(__DIR__ . "/cryptUtil.inc"); - loadLang($sFolderLib, $properties["language"], $sFolderLib . "/"); - $oBd = new Vm($_SESSION["ses_Login"], utf8_encode(trim(des(rtrim(utf8_decode($_SESSION["ses_Login"])), hexToString(rtrim($_SESSION["ses_Password"])), 0, 0, null))), $properties["database"], $properties["server"], $properties["port"], $properties["sgbd"], $sPageEncoding); - if ($oBd->erreurRencontree) { - writeToErrorLog(ERROR_CONNECTION_PROBLEM); - writeToErrorLog($oBd->getBDMessage()); - } - return $oBd; -} - -/** - * Cette m�thode g�n�re une connexion � la base de donn�es. - * \param $sPageEncoding Encodage de la base de donn�e. - * \return un objet BD. - */ -function connectFromSession($sPageEncoding = "LATIN1") { - global $properties, $sFolderLib; - require_once(__DIR__ . "/cryptUtil.inc"); - $sPassword = decodePass2($_SESSION["ses_Login"], $_SESSION["ses_Password"]); - loadLang($sFolderLib, $properties["language"], $sFolderLib . "/"); - $oBd = new Vm($_SESSION["ses_Login"], $sPassword, $properties["database"], $properties["server"], $properties["port"], $properties["sgbd"], $sPageEncoding); - if ($oBd->erreurRencontree) { - writeToErrorLog(ERROR_CONNECTION_PROBLEM); - writeToErrorLog($oBd->getBDMessage()); - } - return $oBd; -} - -/** - * Cette m�thode g�n�re une connexion � une base de donn�es pass�e en param�tre. - * \param $sPageEncoding Encodage de la base de donn�e. - * \param $sDatabase Nom de la base de donn�es. - * \return un objet BD. - */ -function connectFromSessionOtherDatabase($sDatabase, $sPageEncoding = "LATIN1") { - global $properties, $sFolderLib; - require_once("vmlib/cryptUtil.inc"); - $sPassword = decodePass2($_SESSION["ses_Login"], $_SESSION["ses_Password"]); - loadLang($sFolderLib, $properties["language"], $sFolderLib . "/"); - $oBd = new Vm($_SESSION["ses_Login"], $sPassword, $sDatabase, $properties["server"], $properties["port"], $properties["sgbd"], $sPageEncoding); - if ($oBd->erreurRencontree) { - writeToErrorLog(ERROR_CONNECTION_PROBLEM); - writeToErrorLog($oBd->getBDMessage()); - } - return $oBd; -} - -/** - * Cette m�thode g�n�re une connexion � une base de donn�es pass�e en param�tre. - * \param $sPageEncoding Encodage de la base de donn�e. - * \param $sDatabase Nom de la base de donn�es. - * \return un objet BD. - */ -function connectFromSessionOtherDatabaseV2($sDatabase, $sPageEncoding = "LATIN1") { - global $properties, $sFolderLib; - require_once(__DIR__ . "/cryptUtil.inc"); - loadLang($sFolderLib, $properties["language"], $sFolderLib . "/"); - $oBd = new Vm($_SESSION["ses_Login"], utf8_encode(trim(des(rtrim(utf8_decode($_SESSION["ses_Login"])), hexToString(rtrim($_SESSION["ses_Password"])), 0, 0, null))), $sDatabase, $properties["server"], $properties["port"], $properties["sgbd"], $sPageEncoding); - if ($oBd->erreurRencontree) { - writeToErrorLog(ERROR_CONNECTION_PROBLEM); - writeToErrorLog($oBd->getBDMessage()); - } - return $oBd; -} - -/** - * ? - */ -function getUserGroupsEngines($sSessLogin, $oBd, $bRights, $sSessPassword = "") { - global $properties; - $sSql = "SELECT domain_id, user_id FROM " . $properties["schema_framework"] . ".user WHERE lower(login) = '" . utf8_encode(strToLower(utf8_decode($sSessLogin))) . "'"; - $oPDOresult = @$oBd->execute($sSql); - $sListGroupId = ""; - $aFields = $oBd->ligneSuivante($oPDOresult); - $oPDOresult = $oBd->fermeResultat(); - if ($aFields['domain_id'] == "" || $bRights) { - $sSql = "SELECT group_id FROM " . $properties["schema_framework"] . ".user_group WHERE user_id = " . $aFields['user_id']; - $oPDOresult = @$oBd->execute($sSql); - - while ($aLigne = $oBd->ligneSuivante($oPDOresult)) { - if ($sListGroupId == "") { - $sListGroupId = $aLigne["group_id"]; - } else { - $sListGroupId .= ", " . $aLigne["group_id"]; - } - } - $oPDOresult = $oBd->fermeResultat(); - } - if ($aFields['domain_id'] != "") { - $sSql = "SELECT * FROM " . $properties["schema_framework"] . ".domain WHERE domain.domain_id='" . $aFields['domain_id'] . "'"; - $resultat = $oBd->execute($sSql); - $aResultLdap = $oBd->objetSuivant($resultat); - $resultat = $oBd->fermeResultat(); - if ($aResultLdap) { - if ($aResultLdap->verify_rights == 1) { - // Informations de l'AD stock� dans un tableau - if ($sSessPassword == "") { - $sSessLogin2 = $aResultLdap->login; - $sSessPassword = $aResultLdap->password; - } else { - $sSessLogin2 = $sSessLogin; - $sSessPassword = $sSessPassword; - } - if ($_REQUEST['object'] == "person") { - $aLdap = array(sIdLdap => $aResultLdap->domain_id, sLdapName => $aResultLdap->domain, sType => $aResultLdap->type, sLoginLdap => utf8_encode(strToLower(utf8_decode($sSessLogin2))), sPwdLdap => $sSessPassword, sServer => $aResultLdap->server, sPort => $aResultLdap->port, sDnResearch => $aResultLdap->dn_search_user); - } else { - $aLdap = array(sIdLdap => $aResultLdap->domain_id, sLdapName => $aResultLdap->domain, sType => $aResultLdap->type, sLoginLdap => utf8_encode(strToLower(utf8_decode($sSessLogin2))), sPwdLdap => $sSessPassword, sServer => $aResultLdap->server, sPort => $aResultLdap->port, sDnResearch => $aResultLdap->dn_search_group); - } - $oLdap = new Ldap(serialize($aLdap)); - $sLdapConn = $oLdap->connectLdap(); - if (ldap_error($sLdapConn) == "Success") { - $aGroups = $oLdap->getGroup($sLdapConn, utf8_encode(strToLower(utf8_decode($sSessLogin)))); - $sListGroupName = ""; - foreach ($aGroups as $iGroupId) { - if ($sListGroupName == "") { - $sListGroupName = "'" . str_replace("'", "''", utf8_encode(strToLower(utf8_decode($iGroupId)))) . "'"; - } else { - $sListGroupName .= ", '" . str_replace("'", "''", utf8_encode(strToLower(utf8_decode($iGroupId)))) . "'"; - } - } - $sSql = "SELECT group_id FROM " . $properties["schema_framework"] . ".group WHERE LOWER(name) IN (" . $sListGroupName . ")"; - $oPDOresult = @$oBd->execute($sSql); - while ($aLigne = $oBd->ligneSuivante($oPDOresult)) { - if ($sListGroupId == "") { - $sListGroupId = $aLigne["group_id"]; - } else { - $sListGroupId .= ", " . $aLigne["group_id"]; - } - } - $oPDOresult = $oBd->fermeResultat(); - } else { - if (ldap_error($sLdapConn) == "Invalid credentials") - $sErrorMessage = ERROR_0033; - else if (ldap_error($sLdapConn) == "Can't contact LDAP server") - $sErrorMessage = TEXT_ERROR_CONTACT_DOMAIN; - else - $sErrorMessage = ldap_error($sLdapConn); - writeToErrorLog($sErrorMessage); - $aFormContent = $_REQUEST; - } - }else { - $sListGroupId = "0"; - } - } - } - if ($sListGroupId == "") { - $sListGroupId = "0"; - } - return $sListGroupId; -} - -/** - * ? - */ -function getUserGroups($sSessLogin, $oBd, $sSessPassword = "", $bRights, $sSchema) { - - $sSql = "SELECT domain_id, user_id FROM " . $sSchema . ".v_user WHERE lower(login) = '" . utf8_encode(strToLower(utf8_decode($sSessLogin))) . "'"; - $oPDOresult = @$oBd->execute($sSql); - - $aFields = $oBd->ligneSuivante($oPDOresult); - $oPDOresult = $oBd->fermeResultat(); - if ($aFields['domain_id'] == "" || $bRights) { - $sSql = "SELECT group_id FROM " . $sSchema . ".v_user_group WHERE user_id = " . $aFields['user_id']; - $oPDOresult = @$oBd->execute($sSql); - $sListGroupId = ""; - while ($aLigne = $oBd->ligneSuivante($oPDOresult)) { - if ($sListGroupId == "") { - $sListGroupId = $aLigne["group_id"]; - } else { - $sListGroupId .= ", " . $aLigne["group_id"]; - } - } - $oPDOresult = $oBd->fermeResultat(); - if ($sListGroupId == "") { - $sListGroupId = "0"; - } - } - if ($aFields['domain_id'] != "") { - $sSql = 'SELECT * FROM ' . $sSchema . '.domain WHERE domain.domain_id=\'' . $aFields['domain_id'] . '\''; - $resultat = $oBd->execute($sSql); - $aResultLdap = $oBd->objetSuivant($resultat); - $resultat = $oBd->fermeResultat(); - if ($aResultLdap) { - // Informations de l'AD stock� dans un tableau - if ($sSessPassword == "") { - $sSessLogin2 = $aResultLdap->login; - $sSessPassword = $aResultLdap->password; - } else { - $sSessLogin2 = $sSessLogin; - $sSessPassword = $sSessPassword; - } - if ($_REQUEST['object'] == "person") { - $aLdap = array(sIdLdap => $aResultLdap->domain_id, sLdapName => $aResultLdap->domain, sLoginLdap => utf8_encode(strToLower(utf8_decode($sSessLogin2))), sPwdLdap => $sSessPassword, sServer => $aResultLdap->server, sPort => $aResultLdap->port, sDnResearch => $aResultLdap->dn_search_user, sType => $aResultLdap->type); - } else { - $aLdap = array(sIdLdap => $aResultLdap->domain_id, sLdapName => $aResultLdap->domain, sLoginLdap => utf8_encode(strToLower(utf8_decode($sSessLogin2))), sPwdLdap => $sSessPassword, sServer => $aResultLdap->server, sPort => $aResultLdap->port, sDnResearch => $aResultLdap->dn_search_group, sType => $aResultLdap->type); - } - $oLdap = new Ldap(serialize($aLdap)); - $sLdapConn = $oLdap->connectLdap(); - if (ldap_error($sLdapConn) == "Success") { - $aGroups = $oLdap->getGroup($sLdapConn, $sSessLogin); - $sListGroupName = ""; - foreach ($aGroups as $iGroupId) { - if ($sListGroupName == "") { - $sListGroupName = "'" . str_replace("'", "''", utf8_encode(strToLower(utf8_decode($iGroupId)))) . "'"; - } else { - $sListGroupName .= ", '" . str_replace("'", "''", utf8_encode(strToLower(utf8_decode($iGroupId)))) . "'"; - } - } - $sSql = "SELECT group_id FROM " . $sSchema . ".group WHERE LOWER(name) IN (" . $sListGroupName . ")"; - $oPDOresult = @$oBd->execute($sSql); - - while ($aLigne = $oBd->ligneSuivante($oPDOresult)) { - if ($sListGroupId == "") { - $sListGroupId = $aLigne["group_id"]; - } else { - $sListGroupId .= ", " . $aLigne["group_id"]; - } - } - $oPDOresult = $oBd->fermeResultat(); - } else { - if (ldap_error($sLdapConn) == "Invalid credentials") - $sErrorMessage = ERROR_0033; - else if (ldap_error($sLdapConn) == "Can't contact LDAP server") - $sErrorMessage = TEXT_ERROR_CONTACT_DOMAIN; - else - $sErrorMessage = ldap_error($sLdapConn); - writeToErrorLog($sErrorMessage); - $aFormContent = $_REQUEST; - } - } - } - if ($sListGroupId == "") { - $sListGroupId = "0"; - } - return $sListGroupId; -} - -function getUserGroups2($sSessLogin, $oBd, $bRights, $sSchema) { - $sListGroupIdBd = ""; - $sListGroupIdAd = ""; - - $sSql = "SELECT domain_id, user_id FROM " . $sSchema . ".v_user WHERE lower(login) = '" . utf8_encode(strToLower(utf8_decode($sSessLogin))) . "'"; - $oPDOresult = $oBd->execute($sSql); - if ($oBd->erreurRencontree) { - writeToErrorLog($oBd->getBDMessage()); - } else { - $aFields = $oBd->ligneSuivante($oPDOresult); - - $oPDOresult = $oBd->fermeResultat(); - if ($aFields['domain_id'] == "" || $bRights) { - $sSql = "SELECT group_id FROM " . $sSchema . ".v_user_group WHERE user_id = " . $aFields['user_id']; - $oPDOresult = @$oBd->execute($sSql); - while ($aLigne = $oBd->ligneSuivante($oPDOresult)) { - if ($sListGroupIdBd == "") { - $sListGroupIdBd = $aLigne["group_id"]; - } else { - $sListGroupIdBd .= ", " . $aLigne["group_id"]; - } - } - $oPDOresult = $oBd->fermeResultat(); - } - if ($aFields['domain_id'] != "") { - $sSql = 'SELECT * FROM ' . $sSchema . '.domain WHERE domain.domain_id=\'' . $aFields['domain_id'] . '\''; - $resultat = $oBd->execute($sSql); - $aResultLdap = $oBd->objetSuivant($resultat); - $resultat = $oBd->fermeResultat(); - if ($aResultLdap) { - // Informations de l'AD stock� dans un tableau - if ($sSessPassword == "") { - $sSessLogin2 = $aResultLdap->login; - //$sSessPassword = stringToHex (des ($sSessLogin2, $aResultLdap->password, 1, 0, null)); - $sSessPassword = $aResultLdap->password; - //writeToErrorLog($aResultLdap->password); - } else { - $sSessLogin2 = $_SESSION['']; - $sSessPassword = utf8_encode(trim(des(rtrim(utf8_decode($_SESSION[''])), hexToString(rtrim($_SESSION[''])), 0, 0, null))); - } - // if ($_REQUEST['object'] == "person"){ - $aLdap = array(sIdLdap => $aResultLdap->domain_id, sLdapName => $aResultLdap->domain, sLoginLdap => utf8_encode(strToLower(utf8_decode($sSessLogin2))), sPwdLdap => $sSessPassword, sServer => $aResultLdap->server, sPort => $aResultLdap->port, sDnResearch => $aResultLdap->dn_search_user, sType => $aResultLdap->type); - // }else{ - // $aLdap = array(sIdLdap=>$aResultLdap->domain_id,sLoginLdap=>strtolower($sSessLogin2),sPwdLdap=> $sSessPassword,sServer=>$aResultLdap->server,sPort=>$aResultLdap->port,sDnResearch=>$aResultLdap->dn_search_group); - // } - $oLdap = new Ldap(serialize($aLdap)); - $sLdapConn = $oLdap->connectLdap(); - if (ldap_error($sLdapConn) == "Success") { - $aGroups = $oLdap->getGroup($sLdapConn, utf8_encode(strToLower(utf8_decode($sSessLogin)))); - $sListGroupName = ""; - foreach ($aGroups as $iGroupId) { - if ($sListGroupName == "") { - $sListGroupName = "'" . utf8_encode(strToLower(utf8_decode($iGroupId))) . "'"; - } else { - $sListGroupName .= ", '" . utf8_encode(strToLower(utf8_decode($iGroupId))) . "'"; - } - } - $sSql = "SELECT name FROM " . $sSchema . ".group WHERE LOWER(name) IN (" . $sListGroupName . ")"; - $oPDOresult = @$oBd->execute($sSql); - $sListGroupIdAd = ""; - while ($aLigne = $oBd->ligneSuivante($oPDOresult)) { - if ($sListGroupIdAd == "") { - $sListGroupIdAd = $aLigne["name"]; - } else { - $sListGroupIdAd .= ", " . $aLigne["name"]; - } - } - $oPDOresult = $oBd->fermeResultat(); - } else { - if (ldap_error($sLdapConn) == "Invalid credentials") - $sErrorMessage = ERROR_0033; - else if (ldap_error($sLdapConn) == "Can't contact LDAP server") - $sErrorMessage = TEXT_ERROR_CONTACT_DOMAIN; - else - $sErrorMessage = ldap_error($sLdapConn); - writeToErrorLog($sErrorMessage); - $aFormContent = $_REQUEST; - } - } - } - } - $aGroupList = array("bd" => $sListGroupIdBd, "ad" => $sListGroupIdAd); - return $aGroupList; -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/error.inc b/src/vitis/vas/rest/class/vmlib/error.inc deleted file mode 100644 index 13db7b08ff362840fee0ef2bd2d8b84d0c63b52b..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/error.inc +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -// gtf.engines/engine.php -define('ERROR_0001', 'Impossible de récupérer les noms des moteurs GTF et FME'); - -// gtf_lib/DbClass.class.inc -define('ERROR_0002', 'The order creation has failed. -- '); -define('ERROR_0003', 'The order update [order_id] has failed. -- '); -define('ERROR_0004', 'The suppression order [order_id] has failed. -- '); - -// gtf_object/Ldap.class.inc -define('ERROR_0005', 'Could not connect to LDAP server.'); - -// gtf_object/Order.class.inc -define('ERROR_0006', "ATTENTION - Le tag du traitement n°[iOrderId] n'est associé à aucun moteur. Le tag default est utilisé pour définir le numéro de moteur."); -define('ERROR_0007', "ATTENTION - Le tag du traitement n'est associé à aucun moteur. Le tag default n'est pas non plus associé à un moteur. Parmi la liste des moteurs disponibles, le moteur n°[aGtfEngineList[0]] a été affecté à la demande de traitement n°[iOrderId]"); -define('ERROR_0008', "ERROR - Aucune méthode n'a permis d'affecté un moteur au traitement. le moteur n°1 a été affecté à la demande de traitement n°[iOrderId]."); -// define('ERROR_0026', 'ERROR - Parmi la liste des moteurs disponibles, le moteur n°[aGtfEngineList[0]] a été affecté à la demande de traitement n°[iOrderId]'); -// define('ERROR_0009', "ERROR - L'algorithme ne permet pas de retourner un numéro de moteur exploitable. Le numéro de moteur retourné n'est pas de type entier. Type de la valeur retournée par la méthode : "); -// define('ERROR_0010', "ERROR - Le numéro du moteur retourné par l'algorithme n'existe pas dans la liste des moteurs disponible dans GTF."); -define('ERROR_0011', "Erreur Le fichier [_FILES[sNomObjet][name]] n'est pas téléchargé sur le serveur"); -define('ERROR_0035', "Erreur de la suppression d'un processus d'une demande stoppée"); -define('ERROR_0036', "Erreur de la commande d'information d'un processus d'une demande stoppée"); -define('ERROR_0037', "Erreur pendant l'arrêt de la demande sur Fme Desktop."); -define('ERROR_0038', "Erreur pendant l'arrêt de la demande sur Fme Server."); - -// veremap/DownloadMaj.class.inc -define('ERROR_0012', "Unable to write file"); -define('ERROR_0013', 'Unable to download file'); -define('ERROR_0014', 'Error downloading binaries'); -define('ERROR_0015', "Une erreur s'est produite lors du telechargment de la mise à jour"); -define('ERROR_0016', 'Unable to unzip the file '); - -// veremap/FopTemplate.class.inc -define('ERROR_0017', 'Error Pdf generation'); -define('ERROR_0018', 'Command : '); -define('ERROR_0019', 'aCommand array '); -define('ERROR_0020', 'Erreur lors de la génération du Fichier Jpeg [sNameJpg] dans [sDirDestination]'); -define('ERROR_0021', 'Command : '); -define('ERROR_0022', 'aCommand array '); - -// vmlib\Email.class.inc -define('ERROR_0023', 'Failed sending email to the following address : '); - -// vmlib\EmailTemplate.class.inc -define('ERROR_0024', 'The e-mail template (id=[iEmailTemplateId]) does not exist...'); - -// gtf.engines\subscription.php -define('ERROR_0025', 'Error creating directory '); - -// configuration\getLicense.phtml -define('ERROR_0027', "Failed to send the mail to the following address : "); - -// configuration\properties.phtml -define('ERROR_0028', "Error writing file properties.inc"); -define('ERROR_0029', 'Le formulaire de properties passé en paramètre est vide!'); - -// forms\widget.phtml -define('ERROR_0030', 'invalid token.'); - -// workspace\importWorkspaces.phtml -define('ERROR_0031', 'Erreur lors de la copie du fichier FMW : '); -define('ERROR_0032', "Le fichier SubForm.class.inc du traitement [sLabelName] n'a pas été généré."); - -// vmlib\dbUtil.inc -define('ERROR_0033', 'Invalid credentials'); // -> TEXT_INVALID_CREDENTIALS - -// vitis/vitis.class.inc -define('ERROR_0034', 'Invalid filter'); -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/lang_vmlib/en-lang.inc b/src/vitis/vas/rest/class/vmlib/lang_vmlib/en-lang.inc deleted file mode 100755 index 44a182f35c904eb3dc8192f48a955801f712d184..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/lang_vmlib/en-lang.inc +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -define('USER_LABEL', 'User: '); -define('ERROR_LABEL', '<br>Error: '); - -//logUtil -define('ERROR_IMPOSSIBLE_WRITE', 'Impossible to write in the file '); -define('ERROR_RIGHTS_ON_FILE', ': the application does not arrange rights in writing on the file'); -define('ERROR_WRITING_FILE', ': failure of the writing'); -define('ERROR_REQUEST_ERROR', 'SQL Error, more information in the application logs'); - -//BD.class -define('ERROR_INCORRECT_SGBD', 'The dbms is not correct.\n Connection to the database impossible.'); -define('ERROR_ACCESS_SERVER', 'Access to the server impossible for:'); -define('ERROR_CONNECT_SERVER', 'Connection to the server impossible\n'); -define('ERROR_SGBD_UNDEFINED', 'You have not specified the dbms.\n Connection to the database impossible.'); -define('ERROR_REQUEST_IMPOSSIBLE', 'Execution of the request impossible: '); -define('RETURN_BD_LABEL', 'The server return: '); -define('ATTRIBUT_POSITION_BD_LABEL', '"There is not attribute in order $position'); -define('UNKNOWN_BD_LABEL', 'Unknown'); - -//dateUtil -define('ERROR_DATE_FORMAT_INCOMPATIBLE', 'Format of date incompatible with supplied date'); -define('ERROR_DAY_NOT_FOUND', 'Days were not found... Days must be specified by \'jj\' or by \'j\' (ex: jj/mm/aaaa)'); -define('ERROR_MONTH_NOT_FOUND', 'Monthes were not found... Monthes must be specified by \'mm\' or by \'m\' (ex: jj/mm/aaaa)'); -define('ERROR_YEAR_NOT_FOUND', 'Years were not found... Years must be specified by \'aaaa\' or by \'aa\' (ex: jj/mm/aaaa)'); -define('ERROR_HOUR_NOT_FOUND', 'Hours were not found... Hours must be specified by \'hh\' or by \'h\' (ex: jj/mm/aaaa hh:ii:ss)'); -define('ERROR_MINUTE_NOT_FOUND', 'Minutes were not found... Minutes must be specified by \'ii\' or by \'i\' (ex: jj/mm/aaaa hh:ii:ss)'); -define('ERROR_SECOND_NOT_FOUND', 'Seconds were not found... Seconds must be specified by \'ss\' or by \'s\' (ex: jj/mm/aaaa hh:ii:ss)'); - -//dbUtil -define('ERROR_DECODE_EMPTY_STRING', 'Error: The string to be decoded is empty'); -define('ERROR_CONNECTION_PROBLEM', 'Problem of connection:'); - -//Formulaire -define('ENLARGE_INPUT_FORMULAIRE_LABEL', 'Enlarge the input field'); -define('DECREASE_INPUT_FORMULAIRE_LABEL', 'Decrease the input field'); -define('PALLET_FORMULAIRE_LABEL', 'pallet'); -define('SYMBOL_FORMULAIRE_LABEL', 'symbols'); -define('FONT_FORMULAIRE_LABEL', 'fonts'); -define('ASSISTANT_FORMULAIRE_LABEL', 'assistant'); -define('MOVE_RIGHT_FORMULAIRE_LABEL', 'Move to the right'); -define('MOVE_LEFT_FORMULAIRE_LABEL', 'Move to the left'); -define('ERROR_UNKNOWN_TYPE', 'ERROR: $pType is an unknown type\n'); -define('DELETE_FORMULAIRE_LABEL', 'Delete'); -define('ADD_FORMULAIRE_LABEL', 'Add'); -define('SHOW_CALENDAR_FORMULAIRE_LABEL', 'Show calendar'); -define('CALENDAR_FORMULAIRE_LABEL', 'Calendar'); -define('VALIDATE_FORMULAIRE_LABEL', 'Validate'); -define('CANCEL_FORMULAIRE_LABEL', 'Cancel'); -define('NO_DOCUMENT_FORMULAIRE_LABEL', 'No document'); - -//formVerif -define('INPUT_FORMVERIF_LABEL', 'The field'); -define('NOT_NULL_FORMVERIF_LABEL', 'must not be \"NULL\".'); -define('NOT_CORRESPOND_FORMVERIF_LABEL', 'does not correspond at '); -define('NOT_NUMERIC_FORMVERIF_LABEL', 'must be numeric.'); -define('NOT_INTEGER_FORMVERIF_LABEL', 'must be an integer.'); -define('NOT_DECIMAL_FORMVERIF_LABEL', 'must be a decimal.'); -define('NOT_DATE_FORMVERIF_LABEL', 'must ba a date '); -define('NOT_SPACE_FORMVERIF_LABEL', 'does not have to contain of spaces or special characters (accepted \'point\').'); -define('NOT_EXTENSION_FORMVERIF_LABEL', 'forbids the upload of files of extension '); -define('NOT_CONTAINS_FORMVERIF_LABEL', 'does not have to contain: '); - -//ldap -define('ERROR_USER_NOT_FOUND_LDAP', 'Refused connection. The user [LOGIN] was not found in Active Directory.'); -define('ERROR_CONNECT_LDAP', 'Impossible connection. Impossible to connect to the server of Active Directory.'); -define('ERROR_LDAP_FAILED', 'Failed connection LDAP'); - -//vm -define('NOT_RECORD_FOUND_VM', 'No recording of this type was found'); -define('WARNING_DELETE_VM_01', '\'Warning! The recording N '); -define('WARNING_DELETE_VM_02', ' is going to be deleted.'); - -//phpUtil -define('ERROR_DOWNLOAD_FILE', 'Erreur downloading file '); -define('ERROR_UPLOAD_MAX_FILE_SIZE', 'it exceeds the size of upload_max_filesize, configured in the php.ini'); -define('ERROR_MAX_FILE_SIZE', 'it exceeds the size of MAX_FILE_SIZE, which was specified in the HTML form.'); -define('ERROR_NO_FILE_DOWNLOADED', 'No file was downloaded.'); -define('ERROR_PARTIAL_DOWNLOAD', 'It had only partially downloaded.'); -define('ERROR_MISSING_TEMP_FOLDER', 'a temporary folder is missing.'); -define('ERROR_WRITING_DISK', 'Failure of the writing of the file on the disk.'); -define('ERROR_PHP_EXT_SEND', 'a PHP extension stopped the sending of file.'); -define('ERROR_FILE', 'Error the file '); -define('ERROr_NOT_FILE', ' is not a file '); -define('FILE_LABEL_PHPUTIL', 'The file '); -define('ERROR_VALID_FILE', ' valid.<br> The authorized formats are:'); -define('OF_LABEL_PHPUTIL', ' of '); -define('ERROR_EXCEED_MAX_SIZE', ' bytes exceeds the authorized maximal size'); -define('LABEL_BYTES_PHPUTIL', ' bytes'); -define('ERROR_EXCEED_MAX_SIZE_PHP', ' exceeds the authorized maximal size by the PHP configuration'); -define('ERROR_COPYING_FILE', 'Error during the file copy '); -define('ON_SERVER_PHPUTIL', ' on the server'); -define('ERROR_DOWNLOAD_SERVER', ' is not downloaded on the server'); -define('ERROR_CODE_PHPUTIL', 'Error code: '); -define('ERROR_DAY_CODE', 'The day code "'); -define('ERROR_CODE_NOT_VALID', 'is not valid'); -define('ERROR_NOT_INF', 'He was have to be lower in '); -define('ERROR_NOT_SUP', ' and supérior in '); -define('ERROR_DAY_WEEK', 'You cannot define one month and a day or a day of the week.'); -define('ERROR_MONTH_CODE', 'The month code "'); -define('ERROR_NUMBER_PHPUTIL', 'It can\'t be a number.'); -define('ERROR_WEEK_CODE', 'The day code of the week "'); -define('ERROR_CODE_3_VALUES', 'The code does not contain three values separated by a space.'); - -define('YES', 'Yes'); -define('NO', 'No'); - -define('SUCCESS_REQUEST', htmlentities("Request processed successfully")); -define('FAILED_REQUEST', htmlentities("Error during request processing. HTTP error:")); - -// genericTreeviewField() -define('HTMLFORM_GENERIC_TREEVIEW_FIELD_TITLE', htmlentities("Aperçu de votre sélection", ENT_COMPAT | ENT_HTML401, $encodage)); -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/lang_vmlib/fr-lang.inc b/src/vitis/vas/rest/class/vmlib/lang_vmlib/fr-lang.inc deleted file mode 100755 index 36e37795d6b49feaaed20971b26f88216ddf4eb2..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/lang_vmlib/fr-lang.inc +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -define('USER_LABEL', 'Utilisateur : '); -define('ERROR_LABEL', '<br>Erreur : '); - -//logUtil -define('ERROR_IMPOSSIBLE_WRITE', 'Impossible d\'écrire dans le fichier '); -define('ERROR_RIGHTS_ON_FILE', ' : l\'application ne dispose pas de droits en écriture sur le fichier'); -define('ERROR_WRITING_FILE', ' : échec de l\'écriture'); -define('ERROR_REQUEST_ERROR', 'Une erreur SQl est survenue, plus d\'information dans les fichiers de log de l\'application, veuillez contacter votre administrateur'); - -//BD.class -define('ERROR_INCORRECT_SGBD', 'Le sgbd spécifié n\'est pas correct.\n Connexion à la base impossible.'); -define('ERROR_ACCESS_SERVER', 'Accès au serveur impossible pour :'); -define('ERROR_CONNECT_SERVER', 'Connexion au serveur impossible\n'); -define('ERROR_SGBD_UNDEFINED', 'Vous n\'avez pas spécifié votre sgbd.\n Connexion à la base impossible.'); -define('ERROR_REQUEST_IMPOSSIBLE', 'Impossible d\'exécuter la requête : '); -define('RETURN_BD_LABEL', 'Le serveur renvoit : '); -define('ATTRIBUT_POSITION_BD_LABEL', '"Il n\'y a pas d\'attribut en position $position'); -define('UNKNOWN_BD_LABEL', 'Inconnu'); - -//dateUtil -define('ERROR_DATE_FORMAT_INCOMPATIBLE', 'Format de date incompatible avec la date fournie'); -define('ERROR_DAY_NOT_FOUND', 'Les jours n\'ont pas été trouvés... Les jours doivent être précisés par \'jj\' ou par \'j\' (ex: jj/mm/aaaa)'); -define('ERROR_MONTH_NOT_FOUND', 'Les mois n\'ont pas été trouvés... Les mois doivent être précisés par \'mm\' ou par \'m\' (ex: jj/mm/aaaa)'); -define('ERROR_YEAR_NOT_FOUND', 'Les années n\'ont pas été trouvés... Les années doivent être précisés par \'aaaa\' ou par \'aa\' (ex: jj/mm/aaaa)'); -define('ERROR_HOUR_NOT_FOUND', 'Les heures n\'ont pas été trouvées... Les heures doivent être précisées par \'hh\' ou \'h\' (ex: jj/mm/aaaa hh:ii:ss)'); -define('ERROR_MINUTE_NOT_FOUND', 'Les minutes n\'ont pas été trouvées... Les minutes doivent être précisées par \'ii\' ou \'i\' (ex: jj/mm/aaaa hh:ii:ss)'); -define('ERROR_SECOND_NOT_FOUND', 'Les secondes n\'ont pas été trouvées... Les secondes doivent être précisés par \'ss\' ou \'s\' (ex: jj/mm/aaaa hh:ii:ss)'); - -//dbUtil -define('ERROR_DECODE_EMPTY_STRING', 'Erreur : La chaine à décoder est vide'); -define('ERROR_CONNECTION_PROBLEM', 'Problème de connexion :'); - -//Formulaire -define('ENLARGE_INPUT_FORMULAIRE_LABEL', 'Agrandir la zone de saisie'); -define('DECREASE_INPUT_FORMULAIRE_LABEL', 'Diminuer la zone de saisie'); -define('PALLET_FORMULAIRE_LABEL', 'palette'); -define('SYMBOL_FORMULAIRE_LABEL', 'symboles'); -define('FONT_FORMULAIRE_LABEL', 'polices'); -define('ASSISTANT_FORMULAIRE_LABEL', 'assistant'); -define('MOVE_RIGHT_FORMULAIRE_LABEL', 'Déplacer à droite'); -define('MOVE_LEFT_FORMULAIRE_LABEL', 'Déplacer à gauche'); -define('ERROR_UNKNOWN_TYPE', 'ERREUR: $pType est un type inconnu\n'); -define('DELETE_FORMULAIRE_LABEL', 'Supprimer'); -define('ADD_FORMULAIRE_LABEL', 'Ajouter'); -define('SHOW_CALENDAR_FORMULAIRE_LABEL', 'Afficher le calendrier'); -define('CALENDAR_FORMULAIRE_LABEL', 'Calendrier'); -define('VALIDATE_FORMULAIRE_LABEL', 'Valider'); -define('CANCEL_FORMULAIRE_LABEL', 'Annuler'); -define('NO_DOCUMENT_FORMULAIRE_LABEL', 'Aucun document'); - -//formVerif -define('INPUT_FORMVERIF_LABEL', 'Le champ'); -define('NOT_NULL_FORMVERIF_LABEL', 'ne doit pas être \"NULL\".'); -define('NOT_CORRESPOND_FORMVERIF_LABEL', 'ne correspond pas a '); -define('NOT_NUMERIC_FORMVERIF_LABEL', 'doit être de type numérique.'); -define('NOT_INTEGER_FORMVERIF_LABEL', 'doit être de type entier.'); -define('NOT_DECIMAL_FORMVERIF_LABEL', 'doit être de type entier décimal.'); -define('NOT_DATE_FORMVERIF_LABEL', 'doit être de type date '); -define('NOT_SPACE_FORMVERIF_LABEL', 'ne doit pas contenir d\'espaces ou de caractères spéciaux (\'point\' accepté).'); -define('NOT_EXTENSION_FORMVERIF_LABEL', 'interdit l\'upload de fichiers d\'extension '); -define('NOT_CONTAINS_FORMVERIF_LABEL', 'ne doit pas contenir : '); - -//ldap -define('ERROR_USER_NOT_FOUND_LDAP', 'Connexion refusée. L\'utilisateur [LOGIN] n\'a pas été trouvé dans l\'Active Directory.'); -define('ERROR_CONNECT_LDAP', 'Connexion impossible. Impossible de se connecter au serveur de l\'Active Directory.'); -define('ERROR_LDAP_FAILED', 'Connexion LDAP échouée'); - -//vm -define('NOT_RECORD_FOUND_VM', 'Aucun enregistrement de ce type n\'a été trouvé'); -define('WARNING_DELETE_VM_01', '\'Attention ! l\\\'enregistrement n° '); -define('WARNING_DELETE_VM_02', ' va être supprimé.'); - -//phpUtil -define('ERROR_DOWNLOAD_FILE', 'Erreur lors du téléchargement du fichier '); -define('ERROR_UPLOAD_MAX_FILE_SIZE', 'il excède la taille de upload_max_filesize, configurée dans le php.ini'); -define('ERROR_MAX_FILE_SIZE', 'il excède la taille de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML.'); -define('ERROR_NO_FILE_DOWNLOADED', 'Aucun fichier n\'a été téléchargé.'); -define('ERROR_PARTIAL_DOWNLOAD', 'il n\'a été que partiellement téléchargé.'); -define('ERROR_MISSING_TEMP_FOLDER', 'un dossier temporaire est manquant.'); -define('ERROR_WRITING_DISK', 'échec de l\'écriture du fichier sur le disque.'); -define('ERROR_PHP_EXT_SEND', 'une extension PHP a arrété l\'envoi de fichier.'); -define('ERROR_FILE', 'Erreur Le fichier '); -define('ERROR_NOT_FILE', ' n\'est pas un fichier '); -define('FILE_LABEL_PHPUTIL', 'Le fichier '); -define('ERROR_VALID_FILE', ' valide.<br> Les formats autorisés sont :'); -define('OF_LABEL_PHPUTIL', ' de '); -define('ERROR_EXCEED_MAX_SIZE', ' octets dépasse la taille maximale autorisée'); -define('LABEL_BYTES_PHPUTIL', ' octets'); -define('ERROR_EXCEED_MAX_SIZE_PHP', ' dépasse la taille maximale autorisée par la configuration PHP'); -define('ERROR_COPYING_FILE', 'Erreur lors de la copie du fichier '); -define('ON_SERVER_PHPUTIL', ' sur le serveur'); -define('ERROR_DOWNLOAD_SERVER', ' n\'est pas téléchargé sur le serveur'); -define('ERROR_CODE_PHPUTIL', 'Code erreur : '); -define('ERROR_DAY_CODE', 'Le code du jour "'); -define('ERROR_CODE_NOT_VALID', '" n\'est pas valide'); -define('ERROR_NOT_INF', 'Il ne doit pas être inférieure à '); -define('ERROR_NOT_SUP', ' et supérieure à '); -define('ERROR_DAY_WEEK', 'Vous ne pouvez pas définir un mois et un jour ou un jour de la semaine.'); -define('ERROR_MONTH_CODE', 'Le code du mois "'); -define('ERROR_NUMBER_PHPUTIL', 'Il ne peut pas être un nombre.'); -define('ERROR_WEEK_CODE', 'Le code du jour de la semaine "'); -define('ERROR_CODE_3_VALUES', 'Le code ne contient pas trois valeurs séparées par un espace.'); - -define('YES', 'Oui'); -define('NO', 'Non'); - -define('SUCCESS_REQUEST', htmlentities("Requête exécutée avec succés.")); -define('FAILED_REQUEST', htmlentities("Erreur lors de l'exécution de la requête. Erreur HTTP : ")); - -// genericTreeviewField() -define('HTMLFORM_GENERIC_TREEVIEW_FIELD_TITLE', htmlentities("Aperçu de votre sélection", ENT_COMPAT | ENT_HTML401, $encodage)); -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/logUtil.inc b/src/vitis/vas/rest/class/vmlib/logUtil.inc deleted file mode 100644 index d7474ff379d5a0cf1850ac78f8ab2f5712560450..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/logUtil.inc +++ /dev/null @@ -1,198 +0,0 @@ -<?php - -/** - * \file logUtil.inc - * \brief - * - * Fonctions de mise en place de logs - * - * \author Olivier Gayte <olivier.gayte@veremes.com> - * \author Frédéric Mauro - */ -/* - * Variable globale stockant une erreur. - */ -$sMessageLogError = ""; - -/* - * Variable globale stockant le nom de dossier lib. - */ -$sFolderLib = "vmlib"; -/** - * Converti une chaine ISO-8859-1 en UTF-8 - * \param $sString Chaîne de caractères à convertir. - * \return une chaine encodée en UTF-8 - */ -/* function Latin1ToUtf8($sString){ - if( mb_detect_encoding($sString,"UTF-8, ISO-8859-1")!="UTF-8" ){ - return iconv("ISO-8859-1","UTF-8",$sString); - } - else{ - return $sString; - } - } - bfd - - - function baseEncoding_pageEncoding($sDatabaseEncoding,$sPageEncoding,$sString){ - return iconv($sDatabaseEncoding,$sPageEncoding,$sString); - } - */ - -require_once("phpUtil.inc"); - -/** - * Ajoute la cha�ne de caract�re au fichier de log $sFileName. - * \param $sString Cha�ne de caract�res. - * \param $sFileName Fichier dans lequel �crire la cha�ne. - * \return un bool�en, true si l'�criture a fonctionn� sinon false. - */ -function writeToLog($sString, $sFileName) { - if (empty($sFileName)) - return false; - global $properties, $sMessageLogError, $sFolderLib; - - // Si le répertoire de log n'existe pas : création - if (!is_dir(dirname($sFileName))) - mkdir(dirname($sFileName), 0777, true); - if (empty(pathinfo($sFileName, PATHINFO_EXTENSION))) - return false; - - // Add Date and User informations before writing message in log file - loadLang($sFolderLib, $properties["language"], $sFolderLib . "/"); - $sString = str_replace(chr(13), '[\n]', $sString); - $sString = str_replace(chr(10), '[\n]', $sString); - if(isset($_SESSION['ses_Login']) && isset($_SERVER['REMOTE_ADDR']) && isset($_SERVER['REMOTE_PORT'])){ - $sPrelog = date("d/n/Y H:i:s").' '.$_SESSION['ses_Login'].' '.$_SERVER['REMOTE_ADDR'] . ':' . $_SERVER['REMOTE_PORT']; - } else { - $sPrelog = date("d/n/Y H:i:s"); - } - - $sMessageLogtoWrite = $sPrelog . $properties["log_delim"] . $sString . CR . LF; - - // Rename old file if greater than porperties log_size (maximum log size to open it through app in Kb) - // Get size of Log file in bytes - $iLogFileSize = filesize($sFileName); - - if($iLogFileSize !== false){ - // get size of log message - $iMessageLength = strlen($sMessageLogtoWrite); - $iTotalSizeKb = ($iLogFileSize + $iMessageLength) / 1024; - // compare with porperties log_size (maximum log size to open it through app in Kb) - if($iTotalSizeKb >= $properties['log_size'] - 1){ - // Rename of the original file to split log and keep the possibility to read it through application - $sFileSplitName = str_replace(".log", "." . date("Y_m_d_U") . ".log", $sFileName); - if(!rename($sFileName, $sFileSplitName)){ - $sMessageLogError = ERROR_IMPOSSIBLE_WRITE . $sFileName . ERROR_RIGHTS_ON_FILE . " (" . $sString . ")."; - } - } - } - - // create if needed and open log file to write log message inside. - $handle = fopen($sFileName, 'a'); - if (fwrite($handle, $sMessageLogtoWrite) === false) { - fclose($handle); - if (is_writable($sFileName)) { - $sMessageLogError = ERROR_IMPOSSIBLE_WRITE . $sFileName . ERROR_RIGHTS_ON_FILE . " (" . $sString . ")."; - } else { - $sMessageLogError = ERROR_IMPOSSIBLE_WRITE . $sFileName . ERROR_WRITING_FILE . " (" . $sString . ")."; - } - return false; - } else { - fclose($handle); - $sMessageLogError = ""; - return true; - } -} - -/** - * Ajoute la cha�ne de caract�re au fichier des log SQL. - * \param $sString Cha�ne de caract�res. - */ -function writeToSqlLog($sString) { - global $properties; - if (isSet($properties["log_mode"])) { - if ($properties["log_mode"] == true) { - writeToLog($sString, $properties["sql_log_file"]); - } - } -} - -/** - * Ajoute la cha�ne de caract�re au fichier des log SQL. - * \param $sString Cha�ne de caract�res. - */ -function writeToSqlErrorLog($sString) { - global $properties; - if (isSet($properties["log_mode"])) { - if ($properties["log_mode"] == true) { - writeToLog($sString, $properties["sql_error_log_file"]); - } - } -} - -/** - * Ajoute la cha�ne de caract�re au fichier des log ERROR. - * \param $sString Cha�ne de caract�res. - */ -function writeToErrorLog($sString) { - global $properties; - if (isSet($properties["log_mode"])) { - if ($properties["log_mode"] == true) { - writeToLog($sString, $properties["error_log_file"]); - } - } -} - -/** - * Ajoute la cha�ne de caract�re au fichier des log Proxy. - * \param $sString Cha�ne de caract�res. - */ -function writeToProxyLog($sString) { - global $properties; - if (isSet($properties["log_mode"])) { - if ($properties["log_mode"] == true) { - writeToLog($sString, $properties["proxy_log_file"]); - } - } -} - -/** - * Ajoute la cha�ne de caract�re au fichier des log DEBUG. - * \param $sString Cha�ne de caract�res. - */ -function writeToDebugLog($sString) { - global $properties; - if (isSet($properties["debug_mode"])) { - if ($properties["debug_mode"] == true) { - writeToLog($sString, $properties["debug_log_file"]); - } - } -} - -/** - * Ajoute la cha�ne de caract�re au fichier $sFileName. - * \param $sString Cha�ne de caract�res. - * \param $sFileName Fichier dans lequel �crire la cha�ne. - * \return un bool�en, true si l'�criture a fonctionn� sinon false. - */ -function writeToFile($sString, $sFileName) { - global $properties, $sFolderLib; - loadLang($sFolderLib, $properties["language"], $sFolderLib . "/"); - $handle = fopen($sFileName, 'a'); - if (fwrite($handle, $sString . CR . LF)) { - fclose($handle); - if (is_writable($sFileName)) { - $sMessageLogError = ERROR_IMPOSSIBLE_WRITE . $sFileName . ERROR_RIGHTS_ON_FILE . " (" . $sString . ")."; - } else { - $sMessageLogError = ERROR_IMPOSSIBLE_WRITE . $sFileName . ERROR_WRITING_FILE . " (" . $sString . ")."; - } - return false; - } else { - fclose($handle); - $sMessageLogError = ""; - return true; - } -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/vmlib/phpUtil.inc b/src/vitis/vas/rest/class/vmlib/phpUtil.inc deleted file mode 100755 index dee4b832527ccda3d2af6ca01b50acc49085d063..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/phpUtil.inc +++ /dev/null @@ -1,744 +0,0 @@ -<?php - -/* - * @brief Fonctions php diverses - * - * @author Fabien Marty <fabien.marty@veremes.com> - */ -/* - * Variable globale stockant le nom de dossier lib. - */ -$sFolderLib = "vmlib"; - -/** - *This method remove all the backslashes of the element in an array. - *@file vmlib/phpUtil.inc - *@return $aString An array without the backlashes. - */ -function stripslashes_deep($aString) { - $aString = is_array($aString) ? - array_map('stripslashes_deep', $aString) : - stripslashes($aString); - - return $aString; -} - -/** - *This method allow to upload a file on a server. - *@file vmlib/phpUtil.inc - *@param $sNomObjet Name of the object. - *@param $sFileType Type of file needed. - *@param $sServerPath New path of the file. - *@param $sMaxSize Maximal size of the file. - *@return $sErrorMsg The error message. - */ -function uploadFile($sNomObjet, $sFileType, $sServerPath, $sMaxSize) { - global $properties, $sFolderLib; - loadLang($sFolderLib, $properties["language"], $sFolderLib . "/"); - $aExtensionPicture = array('gif', 'jpg', 'jpeg', 'png'); - $aExtensionPictureAndPdf = array('gif', 'jpg', 'jpeg', 'png', 'pdf'); - $aExtensionFile = array('pdf', 'gif', 'jpg', 'jpeg', 'png', 'txt'); - $aExtensionZip = array('zip', 'gex'); - $aExtensionFmw = array('fmw'); - $aForbiddenExtension = explode('|', str_replace("*.", "", $properties['forbidden_extension'])); - $sTmpFile = $_FILES[$sNomObjet]['tmp_name']; - // Si l'utilisateur n'a indiqué aucun fichier à uploader, il ne se passe rien - $sErrorMsg = ""; - - if ($sTmpFile == '') { - if ($_FILES[$sNomObjet]['name'] != "") { - switch ($_FILES[$sNomObjet]['error']) { - case "1" : - $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_UPLOAD_MAX_FILE_SIZE; - break; - case "2" : - $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_MAX_FILE_SIZE; - break; - case "3" : - $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_PARTIAL_DOWNLOAD; - break; - case "4" : - $sErrorMsg = ERROR_NO_FILE_DOWNLOADED; - break; - case "6" : - $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_MISSING_TEMP_FOLDER; - break; - case "7" : - $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_WRITING_DISK; - break; - case "8" : - $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_PHP_EXT_SEND; - break; - } - writeToErrorLog($sErrorMsg); - } - return $sErrorMsg; - } - $aTemp = explode("\\", $sServerPath); - if (is_uploaded_file($sTmpFile)) { - if (!in_array(extension($aTemp[count($aTemp) - 1]), $aForbiddenExtension)) { - //Teste si le fichier correspont au format voulu. - $bAllowUpload = false; - $sFormat = ""; - switch ($sFileType) { - case "image" : - if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionPicture)) { - $bAllowUpload = true; - } else { - foreach ($aExtensionPicture as $sValue) { - $sFormat .= " " . $sValue; - } - writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType); - $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.'; - } - break; - case "image-pdf" : - if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionPictureAndPdf)) { - $bAllowUpload = true; - } else { - foreach ($aExtensionPictureAndPdf as $sValue) { - $sFormat .= " " . $sValue; - } - writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType); - $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.'; - } - break; - case "document" : - if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionFile)) { - $bAllowUpload = true; - } else { - foreach ($aExtensionFile as $sValue) { - $sFormat .= " " . $sValue; - } - writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType); - $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.'; - } - break; - case "zip" : - if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionZip)) { - $bAllowUpload = true; - } else { - foreach ($aExtensionZip as $sValue) { - $sFormat .= " " . $sValue; - } - writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType); - $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.'; - } - break; - case "fmw" : - if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionFmw)) { - $bAllowUpload = true; - } else { - foreach ($aExtensionFmw as $sValue) { - $sFormat .= " " . $sValue; - } - writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType); - $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.'; - } - break; - default : - - $bAllowUpload = true; - - break; - } - - //Teste si le fichier n'est pas de trop grande taille. - if ($_FILES[$sNomObjet]['size'] > $sMaxSize || $_FILES[$sNomObjet]['error'] == 1) { - $bAllowUpload = false; - if ($_FILES[$sNomObjet]['size'] > $sMaxSize) - $sErrorMsg .= FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . OF_LABEL_PHPUTIL . $_FILES[$sNomObjet]['size'] . ERROR_EXCEED_MAX_SIZE . ' (' . $sMaxSize . LABEL_BYTES_PHPUTIL . ').'; - if ($_FILES[$sNomObjet]['error'] > $sMaxSize) - $sErrorMsg .= FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_EXCEED_MAX_SIZE_PHP . ' (' . $sMaxSize . LABEL_BYTES_PHPUTIL . ').'; - } - //Lance l'upload. - if ($bAllowUpload) { - if (!copy($sTmpFile, $sServerPath)) { - writeToErrorLog(ERROR_COPYING_FILE . $_FILES[$sNomObjet]['name'] . ON_SERVER_PHPUTIL . ', ' . $sTmpFile . ', ' . $sServerPath); - $sErrorMsg = ERROR_COPYING_FILE . $_FILES[$sNomObjet]['name'] . ON_SERVER_PHPUTIL . '.'; - } - unlink($sTmpFile); - //chmod($sServerPath,755); - } - } else { - writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType); - $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.'; - } - } else { - writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_DOWNLOAD_SERVER); - $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_DOWNLOAD_SERVER . ' (' . ERROR_CODE_PHPUTIL . $_FILES[$sNomObjet]['error'] . ').'; - } - - return $sErrorMsg; -} - -/** - *This method return the extension of a file. - *@file vmlib/phpUtil.inc - *@param $sString Full name of a file. - *@return Retourne une chaine. - */ -function extension($sString) { - $aTemp = explode(".", $sString); - $sString = strtolower($aTemp[count($aTemp) - 1]); - - return $sString; -} - -/** - *This method return the name of a file from its full path. - *@file vmlib/phpUtil.inc - *@param $sFullFileName Full path of a file. - *@return $aTemp2 The file name. - */ -function getFileName($sFullFileName) { - $aTemp = explode("/", $sFullFileName); - $aTemp2 = explode("\\", $aTemp[(count($aTemp) - 1)]); - - return $aTemp2[(count($aTemp2) - 1)]; -} - -/** - *Creates a compressed zip file - *@file vmlib/phpUtil.inc - *@param string $sFolder - *@param string $sDestination - *@param string $sPassword - *@return boolean - */ -function createZip($sFolder, $sDestination, $sExtensionToExclude = '', $sPassword = '', $bDeleteFiles = false) { - if (!empty($sExtensionToExclude)) { - $aExtensionToExclude = explode('|', $sExtensionToExclude); - } else { - $aExtensionToExclude = array(); - } - $sFolder = rtrim($sFolder, "/"); - - $zip = new ZipArchive(); - - if ($zip->open($sDestination, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) { - die("An error occurred creating your ZIP file."); - } - - $files = new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($sFolder), RecursiveIteratorIterator::LEAVES_ONLY - ); - $aCompressedFiles = array(); - foreach ($files as $name => $file) { - if (!$file->isDir()) { - $filePath = $file->getRealPath(); - - // Récupération de l'extension - $oFileInfo = new SplFileInfo($filePath); - $sExtension = $oFileInfo->getExtension(); - - $relativePath = substr($filePath, strlen($sFolder) + 1); - if (in_array($sExtension, $aExtensionToExclude)) { - continue; - } - if ($zip->addFile($filePath, $relativePath)) - $aCompressedFiles[] = $filePath; - // Mot de passe. - if (!empty($sPassword)) - $zip->setEncryptionName($oFileInfo->getFilename(), ZipArchive::EM_AES_256, $sPassword); - } - } - - if ($zip->close()) { - // Suppression des fichiers compressés. - if ($bDeleteFiles) { - foreach ($aCompressedFiles as $sFilePath) { - if (file_exists($sFilePath)) - unlink($sFilePath); - } - } - } - return file_exists($sDestination); -} - -/** - *Unzip a compressed zip file - *@file vmlib/phpUtil.inc - *@param string $sZipFile - *@param string $sDestination - */ -function unZip($sZipFile, $sDestination) { - $zip = new ZipArchive; - $res = $zip->open($sZipFile); - if ($res === TRUE) { - // extract it to the path we determined above - $zip->extractTo($sDestination); - $zip->close(); - return file_exists($sDestination); - } else { - return false; - } -} - -/** - *@file vmlib/phpUtil.inc - *@brief Teste un code pour savoir si il correspond à une fréquence. - * Ce code est d'un jour (de 1 à 31), d'un mois (de 1 à 12) et d'un type de jour de la semaine (de 1 à 7). - * Ces éléments doivent être définis ainsi : * défini tout le temps et / défini une répétition. - *@param $sCode Code of the frequency. - *@return $sReturn Return nothing if the code is good else return an error message. - */ -function TesteCode($sCode) { - $bIsCorrecte = true; - $sErrorMessage = ""; - $aCode = explode(" ", $sCode); - if (count($aCode) == 3) { - $aCode = Array('jour' => $aCode[0], 'mois' => $aCode[1], 'jour_semaine' => $aCode[2]); - - //Teste sur le jour - if ($aCode['jour'] != "*") { - if (($aCode['mois'] == "*" || is_numeric($aCode['mois'])) && $aCode['jour_semaine'] == "*") { - if (is_numeric($aCode['jour'])) { - if ($aCode['jour'] >= 32 && $aCode['jour'] <= 0) { - $sErrorMessage = ERROR_DAY_CODE . $aCode['jour'] . ERROR_CODE_NOT_VALID . ERROR_NOT_INF . "1" . ERROR_NOT_SUP . '31.'; - $bIsCorrecte = false; - } - } else { - if (substr($aCode['jour'], 0, 2) != '*/' || !is_numeric(substr($aCode['jour'], 2, 2))) { - $sErrorMessage = ERROR_DAY_CODE . $aCode['jour'] . ERROR_CODE_NOT_VALID; - $bIsCorrecte = false; - } else { - if (substr($aCode['jour'], 2, 1) >= 31 && substr($aCode['jour'], 2, 2) <= 0) { - $sErrorMessage = ERROR_DAY_CODE . $aCode['jour'] . ERROR_CODE_NOT_VALID . ERROR_NOT_INF . '1' . ERROR_NOT_SUP . '30.'; - $bIsCorrecte = false; - } - } - } - } else { - $sErrorMessage = ERROR_DAY_WEEK; - $bIsCorrecte = false; - } - } - - //Teste sur le mois - if ($aCode['mois'] != "*" && $bIsCorrecte == true) { - if (($aCode['jour'] == "*" || is_numeric($aCode['jour']) ) && $aCode['jour_semaine'] == "*") { - if (is_numeric($aCode['mois'])) { - if ($aCode['mois'] >= 13 && $aCode['mois'] <= 0) { - $sErrorMessage = ERROR_MONTH_CODE . $aCode['mois'] . ERROR_CODE_NOT_VALID . ERROR_NOT_INF . '1' . ERROR_NOT_SUP . '12.'; - $bIsCorrecte = false; - } - } else { - if (substr($aCode['mois'], 0, 2) != '*/' || !is_numeric(substr($aCode['mois'], 2, 2))) { - $sErrorMessage = ERROR_MONTH_CODE . $aCode['mois'] . ERROR_CODE_NOT_VALID; - $bIsCorrecte = false; - } else { - if (substr($aCode['mois'], 2, 1) >= 13 && substr($aCode['mois'], 2, 2) <= 0) { - $sErrorMessage = ERROR_MONTH_CODE . $aCode['mois'] . ERROR_CODE_NOT_VALID . ERROR_CODE_NOT_VALID . ERROR_NOT_INF . '1' . ERROR_NOT_SUP . '12.'; - $bIsCorrecte = false; - } - } - } - } else { - $sErrorMessage = ERROR_DAY_WEEK; - $bIsCorrecte = false; - } - } - - //Teste sur le jour de la semaine - if ($aCode['jour_semaine'] != "*" && $bIsCorrecte == true) { - if ($aCode['jour'] == "*" && $aCode['mois'] == "*") { - if (is_numeric($aCode['jour_semaine'])) { - $sErrorMessage = ERROR_WEEK_CODE . $aCode['jour_semaine'] . ERROR_CODE_NOT_VALID . ERROR_NUMBER_PHPUTIL; - $bIsCorrecte = false; - } else { - if (substr($aCode['jour_semaine'], 0, 2) != '*/' || !is_numeric(substr($aCode['jour_semaine'], 2, 2))) { - $sErrorMessage = ERROR_WEEK_CODE . $aCode['jour_semaine'] . ERROR_CODE_NOT_VALID; - $bIsCorrecte = false; - } else { - if (substr($aCode['jour_semaine'], 2, 2) >= 13 && substr($aCode['jour_semaine'], 2, 2) <= 0) { - $sErrorMessage = ERROR_WEEK_CODE . $aCode['jour_semaine'] . ERROR_CODE_NOT_VALID . ERROR_CODE_NOT_VALID . ERROR_NOT_INF . '1' . ERROR_NOT_SUP . '12.'; - $bIsCorrecte = false; - } - } - } - } else { - $sErrorMessage = ERROR_DAY_WEEK; - $bIsCorrecte = false; - } - } - } else { - $sErrorMessage = ERROR_CODE_3_VALUES; - $bIsCorrecte = false; - } - - $sReturn = $sErrorMessage; - - return $sReturn; -} - -/** - * Cette méthode permet de générer un nom de fichier unique. - * \return une chaîne de caractères. - */ -function UniqFileName() { - $sUniqFileName = date('YmdHis') . rand(1, 100000); - return $sUniqFileName; -} - -/* - * function html2rgb - * \brief Ce code convertit les couleurs HTML (codées en hexa), en RGB . - * \param $color chaine correspondant à la couleur - * \return un tableau correspondant à la couleur en rgb - */ - -function html2rgb($color) { - // gestion du #... - if (substr($color, 0, 1) == "#") - $color = substr($color, 1, 6); - $aTableau[0] = hexdec(substr($color, 0, 2)); - $aTableau[1] = hexdec(substr($color, 2, 2)); - $aTableau[2] = hexdec(substr($color, 4, 2)); - return $aTableau; -} - -/* - * function rgb2html - * \brief La réciproque exacte de la fonction html2rgb. - * \param $aTableau tableau correspondant à la couleur en rgb - * \return un chaine correspondant à la couleur - */ - -function rgb2html($aTableau) { - for ($i = 0; $i <= 2; $i++) { - $aTableau[$i] = bornes($aTableau[$i], 0, 255); - } - // Le str_pad permet de remplir avec des 0 - // parce que sinon rgb2html(Array(0,255,255)) retournerai #0ffff<=manque un 0 ! - return "#" . str_pad(dechex(($aTableau[0] << 16) | ($aTableau[1] << 8) | $aTableau[2]), 6, "0", STR_PAD_LEFT); -} - -/* - * function rgb2html - * \brief Une petite fonction utile pour borner les nombres entre 0 et 255. - */ - -function bornes($nb, $min, $max) { - if ($nb < $min) - $nb = $min; // $nb est borné bas - if ($nb > $max) - $nb = $max; // $nb est Borné haut - return $nb; -} - -/* - * function verifyFolder - * \brief vérifie l'existance d'un répertoire - * \param $sFolder : chemin du répertoire - * \return $bFolderExist : booleen , true si le répertoire existe sinon false - */ - -function verifyFolder($sFolder) { - @$bFolderExist = dir($sFolder); - return (@$bFolderExist); -} - -/** - * Cette fonction permet de supprimer un dossier sur le serveur. - * \param $sDossier Dossier à supprimer. - * return un booleen. - */ -function clearDir($sDossier) { - $ouverture = @opendir($sDossier); - if (!$ouverture) - return; - while ($sFichier = readdir($ouverture)) { - - if ($sFichier == '.' || $sFichier == '..') - continue; - if (is_dir($sDossier . "/" . $sFichier)) { - $bCleared = clearDir($sDossier . "/" . $sFichier); - if (!$bCleared) - return false; - } - else { - $bCleared = @unlink($sDossier . "/" . $sFichier); - if (!$bCleared) - return false; - } - } - closedir($ouverture); - $bCleared = @rmdir($sDossier); - if (!$bCleared) - return false; - return true; -} - -/* - * function loadLang - * charge le fichier de lang - */ - -function loadLang($folderExt, $lang = "fr", $folderRoot = "", $encodage = "UTF-8") { - if ($lang == "") { - $lang = "fr"; - } - if ($folderExt != "") { - include_once($folderRoot . 'lang_' . $folderExt . '/' . $lang . '-lang.inc'); - } else { - include_once($folderRoot . 'lang/' . $lang . '-lang.inc'); - } -} - -/** - * Cette fonction retourne le contenu d'un fichier dans une variable. - * \param $sFilePath chaine Nom complet du fichier. - * \return une chaine contenant le contenu du fichier, rien si le fichier n'existe pas. - */ -function getFileContent($sFilePath) { - $sFileContent = ""; - if (file_exists($sFilePath)) { - ob_start(); - include($sFilePath); - $sFileContent = ob_get_contents(); - ob_end_clean(); - } - return $sFileContent; -} - -/** - * ? - */ -function convert($value_in = false, $source_base = 10, $target_base = 32) { - // We use these values for our conversions - $values = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '-', '_'); - $characters = array_flip($values); - $string_out = ''; - // Easy answers - if ($source_base == $target_base) { - return $value_in; - } - $len = strlen($value_in); - $sum = array(); - if ($source_base > $target_base) { - for ($i = 0; $i < $len; $i++) { - $char = substr($value_in, $len - $i - 1, 1); - $sum[$i] = $characters[$char] * pow($source_base, $i); - } - } else { - if ($source_base != 10) { - $value = convert($value_in, $source_base, 10); - } else { - $value = $value_in; - } - $cnt = 0; - while ($value > 0) { - $times = $value / $target_base; - $sum[] = mod($value, $target_base); - $value = floor2($times); // get rid of our remainder - } - for ($i = count($sum); $i > 0; $i--) { - $string_out .= $values[$sum[$i - 1]]; - } - return $string_out; - } - if ($target_base == 10) { - return array_sum($sum); - } - return implode($sum); -} - -function mod($val, $mod) { - return $val - floor2($val / $mod) * $mod; -} - -function floor2($val) { - $bits = explode('.', $val); - return $bits[0]; -} - -/** - * Send a websocket message - * @param string $webSocketServer - * @param string $webSocketPort - * @param string $webSocketAlias - * @param array $aPlayload array to convent JSON and send - */ -function sendWebsocketMessage($webSocketServer, $webSocketPort, $webSocketAlias, $aPlayload) { - require_once 'vmlib/class.websocket_client.php'; - - $client = new WebsocketClient; - $client->connect($webSocketServer, $webSocketPort, '/' . $webSocketAlias); - - $sPayload = json_encode($aPlayload); - - // Check each 10ms if the server is yet connected and send the data via the websocket - for ($index = 0; $index < 100; $index++) { - if ($client->isConnected() === true) { - $client->sendData($sPayload); - break; - } else { - usleep(10000); - } - } - - usleep(5000); -} - -/** - * \class array2xml - * \brief array2xml Class \n \n Cette classe totalement générique permet de générer du XML à partir d'un tableau PHP - */ -class array2xml extends DomDocument { - - private $xpath; - private $sRoot; - private $sNodeName; - - /** - * Constructeur - * \param $sRoot Nom du premier noeud (string) - * \param $sNodeName The name numeric keys are called (string) - */ - public function __construct($sRoot = 'root', $sNodeName = 'node') { - parent::__construct(); - //$this->encoding = "ISO-8859-1"; - $this->encoding = "utf-8"; - $this->formatOutput = true; - $this->sNodeName = $sNodeName; - $this->sRoot = $this->appendChild($this->createElement($sRoot)); - $this->xpath = new DomXPath($this); - } - - /* - * Crée le XML à partir du tableau - * \param $aValueXml Le tableau à convertir - * \param $sNode Nom du noeud dans lequelle inlure les valeurs (string) - */ - - public function createNode($aValueXml, $sNode = null) { - if (is_null($sNode)) { - $sNode = $this->sRoot; - } - foreach ($aValueXml as $element => $value) { - $element = is_numeric($element) ? $this->sNodeName : $element; - $child = $this->createElement($element, (is_array($value) ? null : utf8_encode($value))); - $sNode->appendChild($child); - if (is_array($value)) { - self::createNode($value, $child); - } - } - } - - /* - * Retourne le XML généré sous forme de chaine - * return le XML (string) - */ - - public function __toString() { - return $this->saveXML(); - } - - /* - * Perform an XPath query on the XML representation of the array - * \param str $query - query to perform - * return mixed - */ - - public function query($query) { - return $this->xpath->evaluate($query); - } - -} - -/** - * Generate an unique id - */ -function vitisUniqId() { - return uniqid(rand(10000, 99999)); -} - -/** - * Generate an unique id - * @param {integer} $iLength length og the random string before hash it - * @return string random string generated by hashing a random string concatenated with current timestamp - */ -function getUniqRandomId($iLength = 64){ - $sCharacters = 'abcdefghijklmnopqrstuvwxyz0123456789'; - $sString = ''; - $iMax = strlen($sCharacters) - 1; - - for ($i = 0; $i < $iLength; $i++) { - $sString .= $sCharacters[(mt_rand(0, $iMax*10) % $iMax)]; - } - - $sString .= time(); - - return sha1($sString, false); - } - -/** - * Copie un dossier ainsi que son contenu - * @param {string} $src Source - * @param {string} $dst Destination - */ -function copyDirectory($src,$dst) { - $dir = opendir($src); - @mkdir($dst); - while(false !== ( $file = readdir($dir)) ) { - if (( $file != '.' ) && ( $file != '..' )) { - if ( is_dir($src . '/' . $file) ) { - copyDirectory($src . '/' . $file,$dst . '/' . $file); - } - else { - copy($src . '/' . $file,$dst . '/' . $file); - } - } - } - closedir($dir); -} - -// end of class - -/** - * Get a date format - * @param string $sUserDateFormat - * @param string $sDateType - * \return date pattern - */ -function getDatePattern($sUserDateFormat, $sDateType) { - $Pattern= ""; - switch ($sDateType) { - case "year" : - $Pattern= "YYYY"; - break; - case "month" : - $Pattern= "MM"; - break; - case "day" : - $Pattern= "DD"; - break; - case "yeartomonth" : - $Pattern= "YYYY-DD"; - break; - case "yeartoday" : - $Pattern= substr($sUserDateFormat, 10); - break; - case "yeartominute" : - $Pattern= str_replace("[FORMATDATE]", $sUserDateFormat, "[FORMATDATE] HH24:MI:SS"); - break; - case "hourtosecond" : - $Pattern= 'HH24:MI:SS'; - break; - case "yeartosecond" : - $Pattern= str_replace("[FORMATDATE]", $sUserDateFormat, "[FORMATDATE] HH24:MI:SS"); - break; - case "yeartosecondtz" : - $Pattern= str_replace("[FORMATDATE]", $sUserDateFormat, "[FORMATDATE] HH24:MI:SStz"); - break; - case "yeartomillisecond" : - $Pattern= str_replace("[FORMATDATE]", $sUserDateFormat, "[FORMATDATE] HH24:MI:SS.ms"); - break; - case "yeartomillisecondtz" : - $Pattern= str_replace("[FORMATDATE]", $sUserDateFormat, "[FORMATDATE] HH24:MI:SS.mstz"); - break; - } - return $Pattern; -} -?> diff --git a/src/vitis/vas/rest/class/vmlib/stringUtil.inc b/src/vitis/vas/rest/class/vmlib/stringUtil.inc deleted file mode 100755 index f1ebb95912ae82ee7b94ff11f7a118315dabfd9c..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/vmlib/stringUtil.inc +++ /dev/null @@ -1,149 +0,0 @@ -<?php - -/* - * stringUtil.inc : fonctions sur les cha�nes de caract�res - */ - -function addDelimitedAttribute($sMain, $sAdded, $sDelim, $sProtectField) { - // renvoie la concat�nation des cha�nes $main et $added en ajoutant le d�limiteur $sDelim - if ($sMain == "") - $sMain = $sProtectField . $sAdded . $sProtectField; - else - $sMain .= $sDelim . $sProtectField . $sAdded . $sProtectField; - return $sMain; -} - -function addDelimitedString($sMain, $sAdded, $sDelim) { - // renvoie la concat�nation des cha�nes $main et $added en ajoutant le d�limiteur $sDelim - if ($sMain == "") - $sMain = $sAdded; - else - $sMain .= $sDelim . $sAdded; - return $sMain; -} - -// Convertit une chaine geometrique type veremes (x@y x@y) en wkt -function vm2wkt($sGeom, $sType) { - - switch ($sType) { - - case 'point' : - $aPointCoord = array(); - $aPointCoord = split("@", $sGeom); - $sWkt = "POINT ("; - - $aPointCoordxy[0]["x"] = $aPointCoord[0]; - $aPointCoordxy[0]["y"] = $aPointCoord[1]; - - $sWkt = $sWkt . $aPointCoordxy[0]["x"] . " " . $aPointCoordxy[0]["y"] . ")"; - - break; - - case 'line' : - $aLineCoord = array(); - $aPoint = array(); - $aLineCoord = split(" ", $sGeom); - - $sWkt = "LINESTRING ("; - $i = 0; - - while ($aLineCoord[$i]) { - $aPoint = split("@", $aLineCoord[$i]); - $aLineCoordxy[$i]["x"] = $aPoint[0]; - $aLineCoordxy[$i]["y"] = $aPoint[1]; - $i++; - } - - $i = 0; - while ($aLineCoordxy[$i]) { - $sWkt = $sWkt . $aLineCoordxy[$i]["x"] . " " . $aLineCoordxy[$i]["y"] . ","; - $i++; - } - $sWkt = rtrim($sWkt, ','); - $sWkt = $sWkt . ")"; - break; - - case 'polygon': - - $sWkt = "POLYGON (("; - $aShapeCoord = array(); - $aShapeCoord = split(" ", $aRequest["mf_selectShape"]); - - $i = 0; - while ($aShapeCoord[$i]) { - $aPoint = split("@", $aShapeCoord[$i]); - $aShapeCoordxy[$i]["x"] = $aPoint[0]; - $aShapeCoordxy[$i]["y"] = $aPoint[1]; - $i++; - } - - $i = 0; - while ($aShapeCoord[$i]) { - $sWkt = $sWkt . $aShapeCoordxy[$i]["x"] . " " . $aShapeCoordxy[$i]["y"] . ","; - $i++; - } - $sWkt = rtrim($sWkt, ','); - $sWkt = $sWkt . "))"; - - break; - } - return $sWkt; -} - -function wkt2vm($sWkt) { - - $sWkt = ltrim($sWkt, 'POLYGON('); - $sWkt = rtrim($sWkt, ')'); - $sWkt = str_replace(" ", "@", $sWkt); - $sWkt = str_replace(",", " ", $sWkt); - - return $sWkt; -} - -/* - * Fonction qui permet de prendre une chaine de caractere - * De la d�couper selon un d�limiter choisi en permettant de mettre des caract�res de protections - */ - -function stringExplode($sValue, $cDelimiter, $cProtectDeb, $cProtectFin) { - $iArray = 0; - $iChar = 0; - $iLength = strlen($sValue); - $aPart = array(); - while ($iChar < $iLength) { - if ($sValue[$iChar] == $cDelimiter) { - $iArray++; - $iChar++; - } else { // Caract�re diff�rent de $cDelimiter - if ($sValue[$iChar] == $cProtectDeb) { // Le caract�re est �gal � $cProtectDeb - $aPart[$iArray].=$sValue[$iChar]; - $iChar++; - while ($sValue[$iChar] != $cProtectFin) { // On boucle jusqu'� la trouver $cProtectFin - $aPart[$iArray].=$sValue[$iChar]; - $iChar++; - } - } - $aPart[$iArray].=$sValue[$iChar]; - $iChar++; - } - } //while - return $aPart; -} - -/* - * Fonction qui normalise une chaine de caract�re - * En remplacant tout les caract�res sp�ciaux par des _ - */ - -function normalizeString($sString) { - - $sString = str_replace(" ", "_", $sString); - $sString = str_replace(":", "_", $sString); - $sString = str_replace("/", "_", $sString); - $sString = str_replace("\\", "_", $sString); - $sString = str_replace("*", "_", $sString); - - return $sString; -} - -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/class/wab_lib/BusinessObject.class.inc b/src/vitis/vas/rest/class/wab_lib/BusinessObject.class.inc deleted file mode 100755 index 36ae854ee3dd0789c11f938c6eba90dda09a36bf..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/wab_lib/BusinessObject.class.inc +++ /dev/null @@ -1,390 +0,0 @@ -<?php - -//Par défaut il faudra inclure la lib de log pour pouvoir logger -//D’autres lib pourront être chargées ici en fonction des besoins - -require_once("vmlib/logUtil.inc"); -require_once("vmlib/Email.class.inc"); -require_once("vmlib/phpUtil.inc"); -require_once("gtf_lib/gtf_object/User.class.inc"); - -class WabBusinessObject { - - protected $bo_id; - protected $className; - private $status; - protected $history; - protected $oBd; - public $aValues = array(); - protected $aTableInfo = array(); - protected $aProperties = array(); - protected $aSql = array(); - protected $bNoError = true; - protected $sErrorMessage; - - /* * **************************************************** - Class constructor - \oBd : Connection object. - \aProperties : Array of properties. - - * **************************************************** */ - - public function __construct($oBd, $aTableInfo, $aValues, $aProperties, $className, $iId = null) { - require 'BusinessObject.class.sql.inc'; - //$this->aTableInfo = $aTableInfo; - $this->oBd = $oBd; - $this->aValues = $aValues; - $this->aProperties = $aProperties; - $this->className = $className; - $this->bo_id = $iId; - $this->history = ""; - } - - /* * **************************************************** - Sauve l'action réalisé par l'utilisateur - \sEvent : action réalisé (changement de statut...) - * **************************************************** */ - - private function addHistoryEvent($sEvent) { - $this->history .= date('d/m/Y H:i') . ' | ' . $_SESSION['ses_Login'] . ' | ' . $sEvent . PHP_EOL; - } - - /* * **************************************************** - Change le statut - \sStatus : statut - * **************************************************** */ -/* - protected function setStatus($sStatus) { - // Mode insertion ? - if (!empty($this->iId)) - $this->bo_id = $this->iId; - // - $this->status = $sStatus; - $this->addHistoryEvent($this->status); - $this->save(); - } -*/ - public function wabSetStatus($sSchema, $sTable, $sBoNameField, $mBoIdValue, $sStatusName, $sView = '') { - require 'BusinessObject.class.sql.inc'; - - if($sView === ''){ - $sView = $sTable; - } - - // get status Id avec le StatusName - $aParams = array( - "SCHEMA"=> array("value"=> $sSchema, "type"=>'column_name'), - "TABLE"=> array("value"=> $sTable, "type"=>'column_name'), - "STATUS_NAME"=> array("value"=> $sStatusName, "type"=>'string') - ); - $oResultat = $this->oBd->executeWithParams($aSQL["getStatusId"], $aParams); - - $this->status = $this->oBd->objetSuivant($oResultat)->status_id; - // ajout historique - $this->addHistoryEvent($this->status); - // UPDATE dans la table avec le boName - $sSql = $aSQL["updateStatus"]; - $aParams = array( - "SCHEMA" => array("value"=> $sSchema, "type"=> 'column_name'), - "TABLE" => array("value"=> $sView, "type"=> 'column_name'), - "STATUS_ID" => array("value"=> $this->status, "type"=> 'number'), - "BOIDFIELD" => array("value"=> $sBoNameField, "type"=> 'column_name'), - "BOID" => array("value"=> $mBoIdValue, "type"=> 'number') - ); - - $this->oBd->executeWithParams($sSql, $aParams); - } - - public function wabGetStatus($sSchema, $sTable, $sBoNameField, $mBoIdValue) { - require 'BusinessObject.class.sql.inc'; - // GET Status name - $sSql = $aSQL["getStatusName"]; - $aParams = array( - "SCHEMA" => array("value"=> $sSchema, "type"=> 'column_name'), - "TABLE" => array("value"=> $sTable, "type"=> 'column_name'), - "BOIDFIELD" => array("value"=> $sBoNameField, "type"=> 'column_name'), - "BOID" => array("value"=> $mBoIdValue, "type"=> 'number') - ); - - $oResultat = $this->oBd->executeWithParams($sSql, $aParams); - return $this->oBd->objetSuivant($oResultat)->name; - } - /* * ******************************************************************** - Ajoute une note - \sLineAttribute : Champ de form. contenant la note à ajouter - \sNoteAttribute : Champ de form. contenant l'historique des notes - * ******************************************************************** */ - - protected function addNote($sLineAttribute, $sNoteAttribute) { - if (!empty($this->aValues[$sLineAttribute])) { - // Mode insertion ? - if (!empty($this->iId)) - $this->bo_id = $this->iId; - // - $note = preg_replace('/^<br>/', '', $this->aValues[$sNoteAttribute]); - $note .= date('d/m/Y H:i') . ' | ' . $_SESSION['ses_Login'] . ' | ' . $this->aValues[$sLineAttribute] . PHP_EOL; - $this->aValues[$sNoteAttribute] = $note; - $this->save(); - } - } - - /* * ********************************************* - Retourne toutes les infos d'une méthode pour - la transition - \sMethodName : Nom de la méthode - * ********************************************* */ - /* function getMethodParameters($sMethodName) { - $sSql = $this->aSql[$this->oBd->sgbd]['getMethodParameters']; - $sSql = str_replace('[methodName]', $sMethodName , $sSql); - $sSql = str_replace('[schema_gpm]', $this->aProperties['schema_gpm'] , $sSql); - $sSql = str_replace('[className]', $this->className , $sSql); - $result = $this->oBd->execute($sSql); - if(!$oBd->erreurRencontree) { - $oMethodParameters = $this->oBd->objetSuivant($result); - } - return $oMethodParameters; - } */ - - /* * ********************************************** - Exécute le processus de transition par défaut. - \sMethodName : Nom de la méthode - * ********************************************** */ - /* function setTransition($sMethodName) { - $oMethodParameters = $this->getMethodParameters($sMethodName . '()'); - // Before script - if (!empty($oMethodParameters->before_transition_code)) - eval($oMethodParameters->before_transition_code); - // Mise à jour du status - if ($this->bNoError) { - $this->setStatus($oMethodParameters->transition_to_status); - // After script - if (!empty($oMethodParameters->after_transition_code)) - eval($oMethodParameters->after_transition_code); - } - - } */ - - /* * ************************************************************ - Vérifie si la méthode appelée inexistante est une méthode de - transition. - \$sMethodName : Nom de la méthode inexistante - \$aMethodArguments : Arguments de la méthode - /Retour : Tableau avec un message si erreur. - * ************************************************************ */ - /* public function __call($sMethodName, $aMethodArguments) { - $sSql = $this->aSql[$this->oBd->sgbd]['isTransitionMethod']; - $sSql = str_replace('[methodName]', $sMethodName . '()' , $sSql); - $sSql = str_replace('[schema_gpm]', $this->aProperties['schema_gpm'] , $sSql); - $sSql = str_replace('[className]', $this->className , $sSql); - $oResult = $this->oBd->execute($sSql); - if(!$oBd->erreurRencontree) { - if ($this->oBd->nombreLigne ($oResult) > 0) { - $this->setTransition($sMethodName); - } - } - if ($this->bNoError) { - $aReturn = array('sStatus' => 0); - $bFinishCreateWorkspace = true; - } else { - $aReturn = array('sStatus' => 1, 'sMessage' => $this->sErrorMessage); - $bFinishCreateWorkspace = false; - } - return array('bFinishCreateWorkspace' => $bFinishCreateWorkspace, 'aReturn' => $aReturn); - } */ - - /* * ******************************************************************** - Modifie un paramètre de la classe - \sParameterName : nom du paramètre à modifier - \sValue : Nouvelle valeur - * ******************************************************************** */ - - function set($sParameterName, $sValue) { - if (property_exists($this, $sParameterName)) - $this->$sParameterName = $sValue; - else - $this->aValues[$sParameterName] = $sValue; - } - - /* * ******************************************************************** - Retourne un paramètre de la classe - \sParameterName : nom du paramètre à retourner - /Retour : Valeur du paramètre (si il existe) - * ******************************************************************** */ - - function get($sParameterName) { - if (property_exists($this, $sParameterName)) - return $this->$sParameterName; - } - - /* * ******************************************************************** - Sauve tous les paramètres de la classe - * ******************************************************************** */ - - function save() { - $aValues = $this->getClassParameters(); - $this->oBd->update($this->aTableInfo['schema_name'], str_replace($this->aTableInfo["module"] . "_", "", $this->aTableInfo['name']), $aValues, $this->aTableInfo['id_field'], $this->bo_id, $this->aTableInfo['id_field_type']); - } - - /* * ******************************************************************** - Fusionne les propriétés de l'objet et le tableau aValues - /Return : tableau - * ******************************************************************** */ - - function getClassParameters() { - foreach (get_object_vars($this) as $sIndex => $value) { - if (!is_array($value) && !is_object($value)) - $aClassParameters[$sIndex] = $value; - } - return array_merge($this->aValues, $aClassParameters); - } - - /* * ******************************************************************** - Insère une demande pour un projet FME - \$sWorkspaceKey : Clé du projet FME - \$sWkParams : Paramètres de la demande - \$iPriorityId : Priority level - \$iEmailOptionId : Identifier for email option - \$sEmailNotifications : Notificiation email address - \$sXslStyleSheet : Stylesheet path - /Retour : booléen (T:ok, F:erreur) - * ******************************************************************** */ - - function insertOrder($sWorkspaceKey, $sWkParams, $iPriorityId = 1, $iEmailOptionId = 3, $sEmailNotifications = null, $sXslStyleSheet = '') { - - $bNoError = true; - - if($properties['web_server_name'] === "[HTTP_HOST]"){ - $properties['web_server_name'] = "https://localhost"; - } - - // Get token - $sToken = $this->getToken(); - - if ($sToken !== false) { - - //get workspace id - $sSQL = "SELECT workspace_id FROM [SCHEMA_GTF].workspace WHERE key = [WK_KEY];"; - $aParams = array( - "SCHEMA_GTF" => array('value'=> $this->aProperties["schema_gtf"], 'type' => 'column_name'), - "WK_KEY" => array('value'=> $sWorkspaceKey, 'type' => 'string'), - ); - $oWK = $this->oBd->executeWithParams($sSQL, $aParams); - // oBd en erreur - $iWKid = $this->oBd->objetSuivant ($oWK)->workspace_id; - // Insertion de la demande - $sUrl = $this->aProperties['web_server_name'] . '/' . $this->aProperties['services_alias'] . '/gtf/userorders'; - $postfields = array( - 'token'=>$sToken, - 'order_date' => date('Y-m-d'), - 'workspace_id'=>$iWKid, - 'priority_id'=>$iPriorityId, - 'email_option_id'=>$iEmailOptionId, - 'wk_params'=>$sWkParams, - 'xslstylesheet'=>$sXslStyleSheet - ); - - if ( $sEmailNotifications != null){ - $postfields['email_notifications'] = $sEmailNotifications; - } - - $oReturn = $this->postCurlRequest ($sUrl, $postfields); - - } else - $sErrorMsg = 'Error while performing a cURL session (' . __METHOD__ . ' (get token))'; - - if ($sErrorMsg != '') { - writeToErrorLog($sErrorMsg); - $bNoError = false; - $this->sErrorMessage = $sErrorMsg; - } - $this->bNoError = $bNoError; - return $bNoError; - } - - /* * ******************************************************************** - Envoi un email - \$iEmailTemplateId : Id du modèle d'email. - /Retour : Message - * ******************************************************************** */ - - function sendMail($iEmailTemplateId = null) { - $sMessage = ''; - $aObjects = array('oBusinessObject' => $this); - if (empty($iEmailTemplateId)) - $iEmailTemplateId = $this->aProperties['default_mail_model']; - $oEmail = new Email($this->oBd, $iEmailTemplateId, $this->aProperties, $aObjects); - //if(!empty($sValuesKey)){ - //$oEmail->aValues = $this->aValues; - //} - if (!empty($oEmail->oEmailTemplate->name)) - $sMessage = $oEmail->send(); - return $sMessage; - } - - /* * ******************************************************************** - Retourne un objet de la classe "User". - \$sUserLogin : Login d'un utilisateur - /Retour : Objet de la classe User - * ******************************************************************** */ - - function getUser($sUserLogin) { - $sSql = $this->aSql[$this->oBd->sgbd]['getUserId']; - //$sSql = str_replace('[login]', $this->aValues[$sUserLogin], $sSql); - //$sSql = str_replace('[schema_framework]', $this->aProperties['schema_framework'], $sSql); - $aParams = array( - "login"=>array("value"=>$this->aValues[$sUserLogin], "type"=>"string"), - "schema_framework"=>array("value"=>$this->aProperties['schema_framework'], "type"=>"column_name"), - ); - $oResult = $this->oBd->executeWithParams($sSql, $aParams); - if (!$this->oBd->erreurRencontree) { - if ($this->oBd->nombreLigne($oResult) > 0) { - $oUser = new User($this->oBd, $this->oBd->objetSuivant($oResult)->user_id, $this->aProperties); - return $oUser; - } - } - } - - /* * ******************************************************************** - Récupére un token de session utilisateur. - /Retour : string token - * ******************************************************************** */ - - function getToken () { - - if($this->aProperties['web_server_name'] === "[HTTP_HOST]"){ - $this->aProperties['web_server_name'] = "https://localhost"; - } - $sUrl = $this->aProperties['web_server_name'] . '/' . $this->aProperties['services_alias'] . '/vitis/privatetoken'; - - if(!empty($_SESSION["ses_Login"])){ - $sUserPassword = trim(des(rtrim(utf8_decode($_SESSION['ses_Login'])), hexToString(rtrim($_SESSION['ses_Password'])), 0, 0, null)); - $postfields = array('user'=>$_SESSION["ses_Login"], 'password'=>$sUserPassword); - } else { - $postfields = array('user'=>$this->aProperties["login_bot"], 'password'=>$this->aProperties["pass_bot"]); - } - - $oToken = json_decode($this->postCurlRequest ($sUrl, $postfields)); - return $oToken->token; - } - - /* * ******************************************************************** - envoi une requete curl en POST - \$sUrl : Url pour envoyer la requete - \$postfields : array contenant les paramètres à envoyer - /Retour : string token - * ******************************************************************** */ - function postCurlRequest ($sUrl, $postfields) { - $ch = curl_init($sUrl); - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); - curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json")); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - return curl_exec($ch); - } - -} - -?> diff --git a/src/vitis/vas/rest/class/wab_lib/BusinessObject.class.sql.inc b/src/vitis/vas/rest/class/wab_lib/BusinessObject.class.sql.inc deleted file mode 100755 index bf02e36db648547116d594e3689cc070a8d36fc8..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/class/wab_lib/BusinessObject.class.sql.inc +++ /dev/null @@ -1,5 +0,0 @@ -<?php - $aSQL["getStatusId"] = 'SELECT * FROM [SCHEMA].rt_[TABLE]_status WHERE name = [STATUS_NAME]'; - $aSQL["updateStatus"] = 'UPDATE [SCHEMA].v_[TABLE] SET status_id=[STATUS_ID] WHERE v_[TABLE].[BOIDFIELD]=[BOID]'; - $aSQL["getStatusName"] = 'SELECT name FROM [SCHEMA].rt_[TABLE]_status WHERE status_id = (SELECT status_id FROM [SCHEMA].[TABLE] WHERE [TABLE].[BOIDFIELD]=[BOID])'; -?> \ No newline at end of file diff --git a/src/vitis/vas/rest/ws/vitis/Accounts.class.mail.inc b/src/vitis/vas/rest/ws/vitis/Accounts.class.mail.inc deleted file mode 100755 index fef01a79071cca69302125072cd43ad789e10a85..0000000000000000000000000000000000000000 --- a/src/vitis/vas/rest/ws/vitis/Accounts.class.mail.inc +++ /dev/null @@ -1,622 +0,0 @@ -<?php - -$aMail["newUserTitle"] = "Un nouvel utilisateur vient juste de s'inscrire"; -$aMail["newUserTitleAutomated"] = "Vérification de votre adresse mail"; -$aMail["newUserBody"] = '<!-- 1 Column Text + Button : BEGIN --> - <tr> - <td bgcolor="#ffffff" style="padding: 0px; text-align: center;background-color:#8c8c8c; height:50px; margin-bottom:10px;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #FFFFFF; font-weight: normal;">[TITLE]</h1> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #000000; text-align: center;"> - <p style="width:100%; font-weight:bold; text-align: justify; font-size: 20px;">Bonjour [FULLNAME],</p> - <p style="width:100%; text-align: left;font-size: 18px;">Nous vous remercions d\'avoir créé votre compte sur <b>[HOSTNAME]</b>.</p> - <p style="width:100%; text-align: left;font-size: 18px;"><b>Informations sur votre compte :</b></p> - <p style="width:100%; text-align: left;font-size: 18px;">Identifiant : [USERNAME]</p> - <p style="width:100%; text-align: left;font-size: 18px;">Organisme : [COMPANY] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Mail : [MAIL]</p> - <p style="width:100%; text-align: left;font-size: 18px;">Téléphone : [PHONE] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Ip publique fixe : [PUBLIC_IP] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Nom du demandeur : [DEMANDEUR] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Adresse mail du demandeur : [MAIL_DEMANDEUR] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Objet de l\'étude : [STUDY_OBJECT] </p> - <p style="width:100%; text-align: left;font-size: 18px;margin-top: 20px;">Cliquez sur le bouton ci-dessous pour finaliser votre inscription :</p> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 20px; line-height: 20px; color: #555555;"> - <table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" style="margin: auto"> - <tr> - <td style="border-radius: 3px; background: #5cb85c; text-align: center;" class="button-td"> - <a href="[URL]" style="background: #5cb85c; border: 15px solid #5cb85c; font-family: sans-serif; font-size: 18px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 0px; font-weight: bold;" class="button-a"> - <span style="color:#ffffff;">Je confirme mon adresse mail</span> - </a> - </td> - </tr> - </table> - <!-- Button : END --> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; line-height: 20px; color: #000000; text-align: center;"> - <p style="width:100%; text-align: justify;font-size: 18px;">Si vous ne vous êtes pas inscrit(e) sur notre application <b>[HOSTNAME]</b>, ignorez simplement ce message.</p> - </td> - </tr> - <!-- 1 Column Text + Button : END -->'; - -$aMail["confirmationSignUpTitle"] = "Confirmation d'inscription"; -$aMail["genericBody"] = ' - <tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">[MESSAGE]</h1> - </td> - </tr>'; - -$aMail["SignUpOk"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">L\'utilisateur a été ajouté, connectez vous sur la base de données pour lui donner des droits (Defaut: [ROLES])</h1> - </td> - </tr>'; -$aMail["SignUpError"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">L\'utilisateur n\'a pas pu être ajouté consultez les fichiers de log pour plus d\'informations</h1> - </td> - </tr>'; - -$aMail["signUpConfirmation"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal; margin-bottom: 15px;">Votre compte est maintenant activé, vous pouvez vous connecter. Pour avoir accès à plus de fonctionnalités contactez l\'administrateur</h1> - <a style="margin: 0; font-family: sans-serif; font-size: 22px; font-weight: normal;" href="[REDIRECTION]"> Retourner vers l\'application </a> - </td> - </tr>'; -$aMail["fpwdTitle"] = "Changez votre mot de passe"; -$aMail["fpwdUpdateOk"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">Le mot de passe a été mis à jour</h1> - </td> - </tr>'; -$aMail["fpwdUpdateError"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">Le mot de passe n\'a pas pu être mis à jour</h1> - </td> - </tr>'; -$aMail["alreadyUpdate"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">Le mot de passe à déjà été changé</h1> - </td> - </tr>'; - -$aMail["fpwdBody"] = '<!-- 1 Column Text + Button : BEGIN --> - <tr> - <td bgcolor="#ffffff" style="padding: 0px; text-align: center;background-color:#8c8c8c; height:50px; margin-bottom:10px;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #FFFFFF; font-weight: normal;">Changez votre mot de passe</h1> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #000000; text-align: center;"> - <p style="width:100%; font-weight:bold; text-align: left; font-size: 20px;">Bonjour [LOGIN],</p> - <p style="width:100%; text-align: left;font-size: 18px;">Une tentative de récupération de votre compte à été effectué sur le site <b>[HOSTNAME]</b>.</p> - <p style="width:100%; text-align: left;font-size: 18px;margin-top: 10px;">Cliquez sur le bouton ci-dessous pour changer votre mot de passe :</p> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555;"> - <table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" style="margin: auto"> - <tr> - <td style="border-radius: 3px; background: #5cb85c; text-align: center;" class="button-td"> - <a href="[URL]" style="background: #5cb85c; border: 15px solid #5cb85c; font-family: sans-serif; font-size: 18px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 0px; font-weight: bold;" class="button-a"> - <span style="color:#ffffff;">Changer mon mot de passe</span> - </a> - </td> - </tr> - </table> - <!-- Button : END --> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; line-height: 20px; color: #000000; text-align: center;"> - <p style="width:100%; text-align: justify;font-size: 18px;">Si vous n\'avez pas perdu votre mot de passe pour vous connecter à notre application <b>[HOSTNAME]</b>, ignorez simplement ce message.</p> - </td> - </tr> - <!-- 1 Column Text + Button : END -->'; - -$aMail["fpwdForm"] = '<!-- 1 Column Text + Button : BEGIN --> - <tr> - <td bgcolor="#ffffff" style="padding: 0px; text-align: center;background-color:#8c8c8c; height:50px; margin-bottom:10px;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #FFFFFF; font-weight: normal;">Saisissez votre nouveau mot de passe</h1> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 20px 40px 40px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555; text-align: center;"> - <form style="text-align:-webkit-right;"> - <div style="text-align:left;"> - <label for="password" style="font-weight: bold;">Nouveau mot de passe</label> - <input type="password" id="password" name="password" class="input-text-control" required/> - </div> - <div style="text-align:left;margin-top:10px;"> - <label for="password_confirm" style="font-weight: bold;">Confirmer votre nouveau mot de passe</label> - <input type="password" id="password_confirm" name="password_confirm" class="input-text-control" required/> - </div> - <div style="margin-top:20px;"> - <input type="hidden" name="token" value="[TOKEN]"/> - <input type="hidden" name="output" value="text/html"/> - <button style="background: #5cb85c; border: 15px solid #5cb85c; font-family: sans-serif; font-size: 15px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 0px; font-weight: bold;" class="button-a" type="button" onclick="sendRequest(\'[URL]\')"><span style="color:#ffffff;">Envoi</span></button> - </div> - </form> - </td> - </tr>'; - -$aMail["passwordScript"] = '<script> - var password = document.getElementById("password"), confirm_password = document.getElementById("password_confirm"); - - function validatePassword(){ - if(password.value != confirm_password.value) { - confirm_password.setCustomValidity("Les deux mots de passe doivent être identique"); - } else { - confirm_password.setCustomValidity(\'\'); - } - } - - password.onchange = validatePassword; - confirm_password.onkeyup = validatePassword; - - function sendRequest (sUrl){ - if(typeof(password.value)!== "undefined"){ - if(password.value != ""){ - var xhr = new XMLHttpRequest(); - xhr.open("PUT", sUrl); - sParams = JSON.stringify({"password": password.value}); - xhr.onreadystatechange = function (aEvt) { - if (xhr.readyState == 4) { - if (xhr.status == 200) { - var oJson = JSON.parse(xhr.responseText); - window.location.replace(oJson.sUrl); - } else { - //xhr.responseText; - } - } - } - xhr.send(sParams); - }else{console.log("saisissez un mot de passe2")} - }else{console.log("saisissez un mot de passe")} - } - </script>'; - -$aMail["mainBody"] = '<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="utf-8"> <!-- utf-8 works for most cases --> - <meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn\'t be necessary --> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine --> - <meta name="x-apple-disable-message-reformatting"> <!-- Disable auto-scale in iOS 10 Mail entirely --> - <title>VAM</title> <!-- The title tag shows in email notifications, like Android 4.4. --> - <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> - <!-- Web Font / @font-face : BEGIN --> - <!-- NOTE: If web fonts are not required, lines 10 - 27 can be safely removed. --> - - <!-- Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. --> - <!--[if mso]> - <style> - * { - font-family: sans-serif !important; - } - </style> - <![endif]--> - - <!-- All other clients get the webfont reference; some will render the font and others will silently fail to the fallbacks. More on that here: http://stylecampaign.com/blog/2015/02/webfont-support-in-email/ --> - <!--[if !mso]><!--> - <!-- insert web font reference, eg: <link href="https://fonts.googleapis.com/css?family=Roboto:400,700" rel="stylesheet" type="text/css"> --> - <!--<![endif]--> - - <!-- Web Font / @font-face : END --> - - <!-- CSS Reset --> - <style> - - /* What it does: Remove spaces around the email design added by some email clients. */ - /* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */ - html, - body { - margin: 0 auto !important; - padding: 0 !important; - height: 100% !important; - width: 100% !important; - /*min-width: 600px;*/ - } - - /* What it does: Stops email clients resizing small text. */ - * { - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} - -/* What it does: Centers email on Android 4.4 */ -div[style*="margin: 16px 0"] { - margin:0 !important; -} - -/* What it does: Stops Outlook from adding extra spacing to tables. */ -table, -td { - mso-table-lspace: 0pt !important; - mso-table-rspace: 0pt !important; -} - -/* What it does: Fixes webkit padding issue. Fix for Yahoo mail table alignment bug. Applies table-layout to the first 2 tables then removes for anything nested deeper. */ -table { - border-spacing: 0 !important; - border-collapse: collapse !important; - table-layout: fixed !important; - margin: 0 auto !important; -} -table table table { - table-layout: auto; -} - -/* What it does: Uses a better rendering method when resizing images in IE. */ -img { - -ms-interpolation-mode:bicubic; -} - -/* What it does: A work-around for iOS meddling in triggered links. */ -*[x-apple-data-detectors] { - color: inherit !important; - text-decoration: none !important; -} - -/* What it does: A work-around for Gmail meddling in triggered links. */ -.x-gmail-data-detectors, -.x-gmail-data-detectors *, -.aBn { - border-bottom: 0 !important; - //cursor: default !important; -} - -/* What it does: Prevents Gmail from displaying an download button on large, non-linked images. */ -.a6S { - display: none !important; - opacity: 0.01 !important; -} -/* If the above doesn\'t work, add a .g-img class to any image in question. */ -img.g-img + div { - display:none !important; -} - -/* What it does: Prevents underlining the button text in Windows 10 */ -.button-link { - text-decoration: none !important; -} - -blockquote { - font-style:normal; - text-align:left; - //margin-left: 32px!important; - margin: 5px 5px 0px 32px!important; - //padding-top:10px; - //font-family:"Segoe Print","Times New Roman", Verdana; - padding-left: 7px; - min-height: 30px; - //background-color: #EFEFEF; - border-left: 2px solid #8c8c8c; -} - -blockquote > p { - margin:4.5px; -} - -.input-text-control{ - display: block; - width: 100%; - height: 14px; - padding: 4px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -/* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89 */ -/* Create one of these media queries for each additional viewport size you\'d like to fix */ -/* Thanks to Eric Lepetit (@ericlepetitsf) for help troubleshooting */ -@media only screen and (min-device-width: 375px) and (max-device-width: 413px) { /* iPhone 6 and 6+ */ - .email-container { - min-width: 375px !important; - } -} - -</style> - -<!-- What it does: Makes background images in 72ppi Outlook render at correct size. --> - <!--[if gte mso 9]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> -<![endif]--> - -<!-- Progressive Enhancements --> -<style> - -/* What it does: Hover styles for buttons */ -.button-td, -.button-a { - transition: all 100ms ease-in; -} -.button-td:hover, -.button-a:hover { - background: #449D44 !important; - border-color: #449D44 !important; -} - -.bottom-strip{ - width: 120px !important; - height: 10px !important; - float: left !important; -} - -.square-logo-layout{ - width: 40px; - float: left !important; - background-color: #FFF;//#24292E; - border-radius: 50%; - font-size: 30px; - padding: 7.5px; - margin-right: 0px; - //color: #FFF; - cursor:pointer !important; -} - -.square-logo-layout > svg{ - cursor:pointer!important; -} - - -/* Media Queries */ -@media screen and (max-width: 600px) { - - .email-container { - width: 100% !important; - margin: auto !important; - } - - /* What it does: Forces elements to resize to the full width of their container. Useful for resizing images beyond their max-width. */ - .fluid { - max-width: 100% !important; - height: auto !important; - margin-left: auto !important; - margin-right: auto !important; - } - - /* What it does: Forces table cells into full-width rows. */ - .stack-column, - .stack-column-center { - display: block !important; - width: 100% !important; - max-width: 100% !important; - direction: ltr !important; - } - /* And center justify these ones. */ - .stack-column-center { - text-align: center !important; - } - - /* What it does: Generic utility class for centering. Useful for images, buttons, and nested tables. */ - .center-on-narrow { - text-align: center !important; - display: block !important; - margin-left: auto !important; - margin-right: auto !important; - float: none !important; - } - table.center-on-narrow { - display: inline-block !important; - } - - .input-text-control{ - display: block; - width: 100%; - height: 14px; - padding: 4px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - } - - /* What it does: Adjust typography on small screens to improve readability */ - .email-container p { - font-size: 17px !important; - line-height: 22px !important; - } - -} - -</style> - -</head> -<body width="100%" bgcolor="#E5E5E5" style="margin: 0px; mso-line-height-rule: exactly;"> - <center style="width: 600px; margin: auto; background: #FFFFFF; text-align: left;"> - <!-- Email Header : BEGIN --> - <table role="presentation" aria-hidden="true" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> - <tr> - <td style="padding: 20px 0px; text-align: center"> - <a href="http://www.veremes.com/" target="_blank"> - <svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="335px" height="100px" viewBox="0 0 335 100" enable-background="new 0 0 335 100" xml:space="preserve"> - <g> - <rect fill="#FFFFFF" width="335" height="100"/> - <g> - <path fill="#1A171B" d="M308.774,60.788c-0.99-1.493-2.537-2.688-4.64-3.589c-0.533-0.224-1.577-0.57-3.142-1.042 - c-1.563-0.47-2.75-0.959-3.567-1.472c-0.893-0.547-1.532-1.161-1.916-1.841c-0.386-0.682-0.577-1.517-0.577-2.511 - c0-1.4,0.466-2.572,1.398-3.516c0.933-0.944,2.098-1.417,3.498-1.417c1.561,0,2.793,0.437,3.695,1.308 - c0.901,0.873,1.402,2.1,1.505,3.681h4.622c-0.12-2.909-1.026-5.178-2.72-6.806c-1.69-1.626-3.972-2.439-6.845-2.439 - c-2.71,0-5.016,0.916-6.921,2.744c-1.904,1.831-2.856,4.057-2.856,6.678c0,2.319,0.569,4.168,1.714,5.551 - c1.143,1.383,3.582,2.734,7.318,4.056c2.334,0.858,3.947,1.775,4.838,2.754c0.891,0.98,1.336,2.274,1.336,3.884 - c0,1.612-0.561,2.947-1.682,4.007c-1.121,1.063-2.526,1.592-4.219,1.592c-1.772,0-3.262-0.69-4.463-2.071 - c-1.202-1.379-1.802-3.12-1.802-5.228v-0.122h-4.502c0.103,3.535,1.114,6.344,3.039,8.431c1.922,2.085,4.466,3.127,7.637,3.127 - c3.108,0,5.674-0.952,7.698-2.853c2.025-1.899,3.038-4.301,3.038-7.205C310.261,64.182,309.764,62.279,308.774,60.788z - M118.462,41.021c-5.17,0-9.417,1.679-12.739,5.035c-3.32,3.357-4.979,7.607-4.979,12.742c0,4.912,1.693,9.118,5.084,12.617 - c3.389,3.502,7.535,5.252,12.438,5.252c3.694,0,6.947-0.998,9.756-2.988c2.808-1.994,4.988-4.849,6.542-8.569h-4.866 - c-1.103,2.332-2.666,4.151-4.688,5.459c-2.023,1.308-4.302,1.962-6.834,1.962c-3.575,0-6.558-1.131-8.947-3.394 - c-2.391-2.263-3.718-5.226-3.983-8.894h30.413v-0.318c0-5.604-1.601-10.154-4.797-13.655 - C127.662,42.771,123.529,41.021,118.462,41.021z M105.366,56.472c0.509-3.468,1.901-6.219,4.17-8.258 - c2.27-2.037,5.04-3.056,8.313-3.056c3.517,0,6.368,0.948,8.556,2.844c2.188,1.897,3.692,4.719,4.509,8.47H105.366z M99.054,31.046 - L84.898,69.101L72.402,35.38l0.007-0.047l-0.079-0.217c-0.401-1.095-0.841-2.3-1.34-3.546l-0.194-0.523h-0.021 - c-2.108-5.143-5.249-10.879-10.817-12.957c-5.541-2.069-12.762-0.675-17.169,3.314c-3.422,3.096-5.471,7.843-6.089,14.111 - c0-0.002-0.117,1.154-0.117,1.154c-0.239,2.31-0.481,4.665-0.354,7.034l0.047,0.874l0.875-0.048l2.31-0.124l0.876-0.046 - l-0.049-0.876c-0.113-2.069,0.115-4.268,0.335-6.396c0-0.001,0.12-1.172,0.12-1.172c0.517-5.235,2.121-9.103,4.771-11.499 - c3.349-3.03,8.825-4.09,13.024-2.522c4.294,1.604,6.994,6.964,8.88,11.717l1.387,3.688l0.208,0.57l0.005-0.004L83.24,75.692h3.407 - l16.788-44.646H99.054z M268.755,41.021c-5.171,0-9.418,1.679-12.738,5.035c-3.32,3.357-4.979,7.607-4.979,12.742 - c0,4.912,1.692,9.118,5.084,12.617c3.389,3.502,7.535,5.252,12.438,5.252c3.695,0,6.947-0.998,9.758-2.988 - c2.807-1.994,4.986-4.849,6.54-8.569h-4.866c-1.102,2.332-2.666,4.151-4.688,5.459c-2.022,1.308-4.302,1.962-6.835,1.962 - c-3.574,0-6.557-1.131-8.945-3.394c-2.392-2.263-3.72-5.226-3.984-8.894h30.415v-0.318c0-5.604-1.603-10.154-4.8-13.655 - C277.955,42.771,273.821,41.021,268.755,41.021z M255.658,56.472c0.51-3.468,1.901-6.219,4.171-8.258 - c2.27-2.037,5.039-3.056,8.314-3.056c3.516,0,6.367,0.948,8.555,2.844c2.187,1.897,3.692,4.719,4.509,8.47H255.658z - M148.164,42.625c-1.253,0.705-2.409,1.808-3.465,3.315v-3.946h-4.074v33.698h4.379V55.395c0-3.099,0.583-5.334,1.754-6.711 - c1.17-1.376,3.11-2.187,5.821-2.431l-0.032-4.744C150.878,41.549,149.417,41.922,148.164,42.625z M172.22,41.021 - c-5.171,0-9.418,1.679-12.738,5.035c-3.321,3.357-4.981,7.607-4.981,12.742c0,4.912,1.694,9.118,5.085,12.617 - c3.389,3.502,7.535,5.252,12.438,5.252c3.695,0,6.947-0.998,9.757-2.988c2.808-1.994,4.988-4.849,6.541-8.569h-4.866 - c-1.102,2.332-2.665,4.151-4.688,5.459c-2.023,1.308-4.303,1.962-6.834,1.962c-3.574,0-6.557-1.131-8.947-3.394 - c-2.391-2.263-3.718-5.226-3.984-8.894h30.414v-0.318c0-5.604-1.6-10.154-4.799-13.655 - C181.419,42.771,177.286,41.021,172.22,41.021z M159.124,56.472c0.51-3.468,1.901-6.219,4.17-8.258 - c2.271-2.037,5.04-3.056,8.313-3.056c3.517,0,6.369,0.948,8.556,2.844c2.188,1.897,3.692,4.719,4.51,8.47H159.124z - M232.864,41.264c-2.51,0-4.779,0.509-6.809,1.518c-2.03,1.012-3.73,2.49-5.097,4.43c-1.106-1.818-2.712-3.264-4.82-4.338 - c-2.108-1.072-4.441-1.61-7-1.61c-2.212,0-4.191,0.379-5.941,1.134c-1.748,0.756-3.27,1.88-4.558,3.372v-3.776h-4.258v33.698 - h4.258V59.274c0-2.927,0.105-4.978,0.321-6.154c0.215-1.177,0.586-2.227,1.119-3.147c0.856-1.473,2.026-2.604,3.509-3.391 - c1.481-0.787,3.203-1.182,5.165-1.182c3.248,0,5.66,0.926,7.233,2.777c1.573,1.852,2.36,4.722,2.36,8.61v18.905h4.136V59.274 - c0-2.927,0.112-4.978,0.338-6.154c0.223-1.177,0.59-2.227,1.1-3.147c0.854-1.473,2.012-2.604,3.467-3.391 - c1.457-0.787,3.143-1.182,5.06-1.182c3.318,0,5.711,0.947,7.178,2.84c1.469,1.894,2.202,5.07,2.202,9.529v17.923h4.137V58.658 - c0-6.093-1.043-10.516-3.122-13.268C240.76,42.64,237.436,41.264,232.864,41.264z"/> - <g> - <path fill="#1A171B" d="M36.791,43.727c4.5,3.508,3.856-8.518,5.095-10.445c-0.251,0.39,1.045-0.227,1.359-0.68 - c0.714-1.033,0.78-1.304,1.783-0.467c0.685,0.57,4.073-2.156,5.011-2.76c-0.206-0.223,0.68,1.338,0.68,0.764 - c0,4.354-0.253,0.671,2.42,1.401c1.206,0.329,2.179-0.847,3.269,0.893c-0.283,0.31-0.566,0.621-0.849,0.933 - c4.111,1.071,3.139,4.072,7.134,6.029c-1.239,0.545-2.304,1.363-2.463,2.803c1.169,0.267,2.366,0.422,3.566,0.424 - c-0.34,0.311-0.679,0.622-1.02,0.934c2.158,0.346,2.307,2.235,4.671,1.699c-0.891,1.669-4.83,4.51-1.274,5.094 - c-0.198,0.085-0.396,0.171-0.594,0.255c0.745,0.477,1.172,1.362,1.868,1.868c-0.946,0.11-1.794,0.679-2.802,0.68 - c0.04,1.611,1.581,1.87,2.717,2.124c-2.577,1.72,0.311,0.894,0.722,2.122c-0.165-0.493,1.154,1.254,0.807,0.977 - c-0.173-0.139-1.318,0.596-0.807,1.062c0.174,0.158,4.875,0.583,1.98,1.482c-1.714,0.534-4.447,0.456-3.679,2.763 - c-1.174-0.126-1.886,0.235-2.845-0.083c0.154,0.687-0.067,0.846,0.213,1.442c-1.335,0.382-2.595-0.269-3.695-1.061 - c-0.042,0.268-0.084,0.537-0.127,0.806c-0.368-0.325-0.736-0.649-1.104-0.976c0.016,0.536-0.255,1.096-0.212,1.656 - c-0.877-0.677-5.258-4.209-2.972-1.189c0.905,1.195,1.842,1.439,2.93,2.463c-1.363,0.366-0.2,5.027,1.91,4.627 - c-1.045,1.709-3.151-0.414-4.289,1.828c1.419,0.304,0.683,0.515,1.826,1.146c-0.596-0.139-1.35,0.109-1.996-0.043 - c0.058,0.606,1.302,2.911,1.104,3.185c-0.761,1.05-2.778-1.146-3.949-1.146c-0.209,0.18-0.252,0.392-0.126,0.636 - c1.264,0.254,0.742,0.52,0.976,1.698c-2.448-0.878-0.467,0.231-0.467,1.104c0,3.686-2.677-0.092-2.548,2.505 - c-0.269-0.014-0.537-0.027-0.806-0.041c0.263,2.893-2.243-0.257-2.845,3.056c0.048,0.018-3.298-0.522-3.333-0.488 - c-1.136,1.135-1.402-0.027-2.174,0.598c-1.87,1.514-1.024-1.807-1.552-1.998c-0.694-0.253-2.246,1.984-2.455,0.573 - c-0.207-1.396-0.55-3.131-1.463-1.656c-0.954-0.37-3.546,0.314-3.842-0.572c-0.223-0.67-2.252-3.619-0.871-4.078 - c-0.407,0.137-1.347,0.543-1.719,0.765c0.857-2.833-1.515-2.188-3.185-1.146c0.104-1.69,0.899-3.521-1.083-3.247 - c0.293-0.662,0.337-1.645,0.828-2.356c-0.382,0.084-0.764,0.17-1.146,0.254c0.059-0.477,4.984-10.382,5.223-10.382 - c-0.199-0.062-0.369-0.169-0.51-0.318c-1.236,3.129-3.048,5.804-5.095,8.534c0.046-0.52-0.061-1.008-0.318-1.464 - c-0.23,0-1.983,2.339-2.548,2.61c0-0.253,0-0.509,0-0.763c-0.231,0.366-1.444,2.675-1.783,2.675c-0.329,0,0.481-1.796-0.51-1.467 - c-0.944,0.315-1.458,0.54-2.292,0.701c0.99-1.181,1.719-2.432-0.446-1.783c0.204-0.955-0.191-1.231-0.191-1.974 - c-0.159,0.41-0.393,0.771-0.7,1.084c-0.23-1.254-0.242-6.138-0.383-6.138c-1.46,0,0.123-2.937,0.341-3.312 - c-0.17-0.142-0.341-0.282-0.51-0.425c0.05,1.16-0.433,1.305-0.764,2.293c-1.08-1.767,1.521-3.314-0.764-3.99 - c0.311-0.256,0.623-0.51,0.934-0.765c-0.199-0.198-0.396-0.396-0.595-0.595c-0.269,0.61-0.729,1.216-1.02,1.783 - c-0.154-0.479,0.034-2.888,0.51-2.888c-0.313-0.017-0.624-0.044-0.935-0.084c0.723-0.973,0.495-1.264,1.444-1.699 - c-0.17-0.51-0.339-1.019-0.509-1.529c0.17,0.058,0.339,0.114,0.509,0.171c0.149,0.083-0.41-0.829-0.68-0.424 - c0.503-0.754,1.123-1.223,1.868-1.614c-0.283-0.17-0.566-0.34-0.849-0.51c0.664-0.432,1.176-1.357,2.038-1.698 - c-0.566-1.104-0.674-1.464-1.868-1.784c-0.033-2.104,1.163-9.234,2.717-8.407c-0.049-0.578-0.062-0.699,0.509-0.765 - c-0.087-1.145-0.637-0.797,0.595-1.104c-0.979-4.102,1.847-2.083,3.651-1.104c0-0.341,0-0.68,0-1.02 - c0.534,0.116,1.853,0.641,2.177,0.085c0.109-0.188-0.92-0.513-1.073-0.594c1.126-0.569,0.975-1.844,0.17-3.143 - c1.503,0.075,3.008,0.738,3.482-0.594c0.613,0.591,1.188,0.584,1.697,1.358c0.284-0.481,0.566-0.963,0.85-1.443 - c0.53,0.646,1.549,2.504,2.59,1.983c0.223-0.111,1.486,0.661,1.486,0.394c0-1.159,0.588-2.121,1.529-2.717 - C35.584,34.716,35.005,38.027,36.791,43.727"/> - </g> - </g> - </g> - </svg> - </a> - </td> - </tr> -</table> -<!-- Email Header : END --> - -<!-- Email Body : BEGIN --> -<table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> - - [CONTENT] - -</table> -<!-- Email Body : END --> - -<!-- Email Footer : BEGIN --> -<table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> - <tr> - <td style="padding: 0px;width: 100%;" class="x-gmail-data-detectors"> - <div class="bottom-strip" style="background-color: #39468A;"></div> - <div class="bottom-strip" style="background-color: #E74F23;"></div> - <div class="bottom-strip" style="background-color: #923288;"></div> - <div class="bottom-strip" style="background-color: #1C9DB2;"></div> - <div class="bottom-strip" style="background-color: #E10759;"></div> - </td> - </tr> -</table> -<table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> - <tr> - <td style="padding: 10px;width: 50%;font-size: 12px; font-family: sans-serif; line-height:18px; text-align: center; color: #888888; cursor:pointer;" class="x-gmail-data-detectors"> - <a class="square-logo-layout" href="https://twitter.com/Veremes_Info" target="_blank" style="color: #24292E; cursor:pointer;"> - <!--<i class="fa fa-twitter" style=""></i>--> - <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> - <title>Twitter</title> - <path d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM75.28,37c0,.56,0,1.12,0,1.68C75.32,56,62.2,75.83,38.21,75.83h0a37,37,0,0,1-20-5.86,24.62,24.62,0,0,0,3.11.18,26.13,26.13,0,0,0,16.2-5.58,13,13,0,0,1-12.18-9.06,12.34,12.34,0,0,0,2.45.24,13,13,0,0,0,3.44-.46A13,13,0,0,1,20.77,42.5v-.16A13.11,13.11,0,0,0,26.68,44a13.05,13.05,0,0,1-4-17.42A37,37,0,0,0,49.52,40.18a13.19,13.19,0,0,1-.34-3,13.05,13.05,0,0,1,22.57-8.92A26.11,26.11,0,0,0,80,25.12a13.08,13.08,0,0,1-5.73,7.22,26.23,26.23,0,0,0,7.49-2.06A26.49,26.49,0,0,1,75.28,37Z"/> - </svg> - </a> - <a class="square-logo-layout" href="https://www.linkedin.com/company/veremes/" target="_blank" style="color: #24292E; cursor:pointer;"> - <!--<i class="fa fa-linkedin" style=""></i>--> - <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> - <title>LinkedIn</title> - <path d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM60.71,51a6.48,6.48,0,0,0-6.33,6.32V79.68H41.74V41.74H54.38v5a13.63,13.63,0,0,1,10.54-5.9A15,15,0,0,1,79.68,55.65v24H67V57.33A6.48,6.48,0,0,0,60.71,51ZM27,34.57A7.59,7.59,0,1,1,34.57,27,7.55,7.55,0,0,1,27,34.57Zm6.32,7.17V79.68H20.66V41.74Z"/> - </svg> - </a> - <a class="square-logo-layout" href="http://vm09.veremes.net/" target="_blank" style="color: #24292E; cursor:pointer;"> - <!--<i class="fa fa-github" style=""></i>--> - <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> - <title>GitLab</title> - <path d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM75.18,15.1a1,1,0,0,1,2,0l9,27.81h-20Zm-52.34,0a1,1,0,0,1,2,0l9,27.81h-20ZM9.85,61A2.63,2.63,0,0,1,8.9,58l4.35-13.4L47.16,88.07Zm4.33-17h20l14.3,44Zm21.19,0H64.63L50,89Zm30.42,0h20L51.49,88ZM90.15,61,52.84,88.07,86.75,44.62,91.1,58A2.63,2.63,0,0,1,90.15,61Z"/> - </svg> - </a> - <a class="square-logo-layout" href="http://www.veremes.com/" target="_blank" style="color: #24292E; cursor:pointer;"> - <!--<i class="fa fa-globe" style=""></i>--> - <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> - <defs> - <style>.cls-1{fill:none;}</style> - </defs> - <title>Veremes</title> - <path class="cls-1" d="M60.17,18.09h0S60.15,18.05,60.17,18.09Z"/> - <path class="cls-1" d="M48.39,26.38c.66-6.65,2.7-11.56,6.06-14.6a11.45,11.45,0,0,1,1.82-1.29A40.5,40.5,0,0,0,50,10l-1,0c-3.18,3.87-5.13,9.17-5.79,15.85l-.15,1.47c-.21,2.06-.42,4.16-.47,6.28-1.35-5.7-.83-9.69-1.1-15.87A4,4,0,0,0,39.6,21.2c0,.34-1.6-.64-1.88-.5-1.33.67-2.62-1.69-3.29-2.51L33.35,20c-.65-1-1.38-1-2.16-1.73-.6,1.69-2.51.85-4.42.76,1,1.65,1.21,3.26-.21,4,.19.1,1.5.51,1.36.75-.41.71-2.09,0-2.77-.11V25c-2.29-1.25-5.88-3.81-4.63,1.4-1.57.39-.87-.05-.76,1.4-.72.09-.71.24-.64,1-2-1.05-3.5,8-3.45,10.68,1.51.4,1.65.86,2.37,2.26-1.1.43-1.75,1.61-2.59,2.16l1.08.64a6,6,0,0,0-2.37,2c.34-.51,1.05.65.86.54l-.65-.22c.22.65.43,1.3.65,2-1.21.55-.92.92-1.83,2.15.39,0,.78.09,1.18.11-.6,0-.84,3.06-.65,3.67.37-.72,1-1.49,1.3-2.27l.75.76-1.18,1c2.9.86-.4,2.82,1,5.06.42-1.25,1-1.43,1-2.91l.65.54c-.28.48-2.29,4.21-.44,4.21.18,0,.2,6.2.49,7.79a4,4,0,0,0,.89-1.38c0,.95.5,1.3.24,2.51,2.75-.82,1.82.76.57,2.26a20.92,20.92,0,0,0,2.91-.89c1.26-.41.23,1.86.64,1.86s2-2.93,2.27-3.39v1c.72-.35,2.94-3.32,3.23-3.32a3.11,3.11,0,0,1,.41,1.86,46.51,46.51,0,0,0,6.47-10.83,1.46,1.46,0,0,0,.65.4c-.31,0-6.56,12.58-6.64,13.18l1.46-.32c-.63.9-.68,2.15-1,3,2.51-.35,1.5,2,1.37,4.13,2.12-1.33,5.14-2.15,4.05,1.45a15.73,15.73,0,0,1,2.18-1c-1.76.58.82,4.33,1.11,5.17.37,1.13,3.66.26,4.87.73,1.16-1.87,1.6.33,1.86,2.11s2.24-1,3.12-.73c.67.24-.4,4.46,2,2.53,1-.79,1.32.68,2.76-.75,0,0,4.29.64,4.23.62.77-4.21,3.94-.21,3.61-3.88l1,0c-.16-3.3,3.24,1.5,3.24-3.18,0-1.11-2.52-2.52.59-1.4-.29-1.5.37-1.84-1.24-2.16a.62.62,0,0,1,.16-.81c1.49,0,4,2.79,5,1.46.25-.35-1.33-3.28-1.4-4,.82.2,1.77-.12,2.53.06-1.45-.8-.52-1.07-2.32-1.46,1.45-2.84,4.12-.15,5.45-2.32C70.78,71.9,69.3,66,71,65.52c-1.38-1.3-2.57-1.61-3.72-3.13-2.9-3.83,2.66.65,3.78,1.51-.06-.71.28-1.42.27-2.1L72.76,63c0-.34.11-.69.16-1,1.4,1,3,1.83,4.69,1.35-.35-.76-.08-1-.27-1.83,1.22.4,2.12-.06,3.61.11-1-2.93,2.5-2.84,4.67-3.51,3.68-1.15-2.29-1.68-2.51-1.88-.65-.6.8-1.53,1-1.35.44.35-1.23-1.87-1-1.24-.52-1.56-4.19-.51-.92-2.7-1.44-.32-3.4-.65-3.45-2.69,1.28,0,2.36-.73,3.56-.87-.89-.64-1.43-1.76-2.37-2.37l.75-.32c-4.51-.74.49-4.35,1.62-6.47-3,.68-3.19-1.72-5.93-2.16l1.29-1.18a20.84,20.84,0,0,1-4.52-.54c.19-1.83,1.55-2.87,3.12-3.56-5.07-2.49-3.84-6.3-9.06-7.66L68.28,22c-1.38-2.21-2.62-.72-4.15-1.13-3.39-.93-3.07,3.75-3.07-1.78,0,.62-.81-.72-.89-1-1.22.8-5.47,4.21-6.34,3.49-1.27-1.06-1.35-.72-2.26.59-.4.58-2,1.36-1.73.87-.9,1.41-1,7.1-2.05,10.79,0-2,.25-4,.45-6Z"/> - <path d="M99.94,47.71l0-.64c0-.61-.08-1.23-.14-1.84,0-.16,0-.31,0-.46-.08-.74-.17-1.47-.28-2.2,0-.19-.06-.38-.1-.57q-.13-.86-.3-1.68l-.12-.64c-.15-.7-.31-1.39-.48-2.08,0-.15-.09-.3-.13-.45-.14-.56-.3-1.11-.46-1.65-.08-.24-.15-.49-.23-.73-.16-.51-.34-1-.52-1.54-.06-.17-.12-.35-.19-.53-.23-.62-.47-1.24-.73-1.85-.11-.27-.22-.53-.34-.8s-.35-.78-.53-1.17l-.38-.81c-.27-.56-.56-1.11-.85-1.66-.16-.3-.33-.59-.49-.88s-.35-.61-.53-.92-.37-.63-.57-.94L92,22.86q-.55-.86-1.14-1.68l-.45-.62c-.25-.35-.51-.69-.77-1-.13-.18-.27-.35-.41-.52q-1.36-1.74-2.9-3.35L86,15.35q-1.66-1.72-3.48-3.29L82.46,12a51.79,51.79,0,0,0-5.4-4h0a49.56,49.56,0,0,0-4.42-2.54h0A49.59,49.59,0,0,0,63.94,2h0c-1.56-.45-3.16-.83-4.78-1.13L58.49.73,57.21.52C56.59.43,56,.35,55.33.29L54.54.21,53,.1l-.73,0C51.51,0,50.76,0,50,0a50,50,0,1,0,50,50C100,49.23,100,48.47,99.94,47.71ZM49.84,23c-.31.49,1.33-.29,1.73-.87.91-1.31,1-1.65,2.26-.59.87.72,5.12-2.69,6.34-3.49,0,0,0-.06,0,0h0c.08.24.89,1.58.89,1,0,5.53-.32.85,3.07,1.78,1.53.41,2.77-1.08,4.15,1.13L67.2,23.14c5.22,1.36,4,5.17,9.06,7.66-1.57.69-2.93,1.73-3.12,3.56a20.84,20.84,0,0,0,4.52.54l-1.29,1.18c2.74.44,2.92,2.84,5.93,2.16-1.13,2.12-6.13,5.73-1.62,6.47l-.75.32c.94.61,1.48,1.73,2.37,2.37-1.2.14-2.28.86-3.56.87.05,2,2,2.37,3.45,2.69-3.27,2.19.4,1.14.92,2.7-.21-.63,1.46,1.59,1,1.24-.22-.18-1.67.75-1,1.35.22.2,6.19.73,2.51,1.88-2.17.67-5.64.58-4.67,3.51-1.49-.17-2.39.29-3.61-.11.19.87-.08,1.07.27,1.83-1.7.48-3.29-.34-4.69-1.35,0,.34-.11.69-.16,1l-1.4-1.24c0,.68-.33,1.39-.27,2.1C70,63,64.41,58.56,67.31,62.39c1.15,1.52,2.34,1.83,3.72,3.13-1.73.46-.25,6.38,2.43,5.87-1.33,2.17-4-.52-5.45,2.32,1.8.39.87.66,2.32,1.46-.76-.18-1.71.14-2.53-.06.07.77,1.65,3.7,1.4,4-1,1.33-3.53-1.46-5-1.46a.62.62,0,0,0-.16.81c1.61.32,1,.66,1.24,2.16-3.11-1.12-.59.29-.59,1.4,0,4.68-3.4-.12-3.24,3.18l-1,0c.33,3.67-2.84-.33-3.61,3.88.06,0-4.19-.67-4.23-.62-1.44,1.43-1.78,0-2.76.75-2.37,1.93-1.3-2.29-2-2.53-.88-.32-2.86,2.52-3.12.73s-.7-4-1.86-2.11c-1.21-.47-4.5.4-4.87-.73-.29-.84-2.87-4.59-1.11-5.17a15.73,15.73,0,0,0-2.18,1c1.09-3.6-1.93-2.78-4.05-1.45.13-2.15,1.14-4.48-1.37-4.13.37-.84.42-2.09,1-3l-1.46.32c.08-.6,6.33-13.18,6.64-13.18a1.46,1.46,0,0,1-.65-.4,46.51,46.51,0,0,1-6.47,10.83A3.11,3.11,0,0,0,28,67.51c-.29,0-2.51,3-3.23,3.32v-1c-.3.46-1.83,3.39-2.27,3.39s.62-2.27-.64-1.86a20.92,20.92,0,0,1-2.91.89c1.25-1.5,2.18-3.08-.57-2.26.26-1.21-.24-1.56-.24-2.51a4,4,0,0,1-.89,1.38c-.29-1.59-.31-7.79-.49-7.79-1.85,0,.16-3.73.44-4.21l-.65-.54c.06,1.48-.55,1.66-1,2.91-1.37-2.24,1.93-4.2-1-5.06l1.18-1L15,52.47c-.34.78-.93,1.55-1.3,2.27-.19-.61,0-3.67.65-3.67-.4,0-.79-.06-1.18-.11.91-1.23.62-1.6,1.83-2.15-.22-.65-.43-1.3-.65-2l.65.22c.19.11-.52-1-.86-.54a6,6,0,0,1,2.37-2l-1.08-.64c.84-.55,1.49-1.73,2.59-2.16-.72-1.4-.86-1.86-2.37-2.26-.05-2.68,1.47-11.73,3.45-10.68-.07-.73-.08-.88.64-1-.11-1.45-.81-1,.76-1.4-1.25-5.21,2.34-2.65,4.63-1.4v-1.3c.68.15,2.36.82,2.77.11.14-.24-1.17-.65-1.36-.75,1.42-.73,1.23-2.34.21-4,1.91.09,3.82.93,4.42-.76C32,19,32.7,19,33.35,20l1.08-1.83c.67.82,2,3.18,3.29,2.51.28-.14,1.88.84,1.88.5a4,4,0,0,1,1.94-3.45c.27,6.18-.25,10.17,1.1,15.87,0-2.12.26-4.22.47-6.28l.15-1.47c.66-6.68,2.61-12,5.79-15.85l1,0a40.5,40.5,0,0,1,6.27.49,11.45,11.45,0,0,0-1.82,1.29c-3.36,3-5.4,8-6.06,14.6l-.15,1.49c-.2,2-.41,4-.45,6C48.82,30.14,48.94,24.45,49.84,23Z"/> - </svg> - </a> - </td> - <td style="padding: 10px;width: 50%;font-size: 20px; font-family: sans-serif; line-height:18px; text-align: center; color: #000000;" class="x-gmail-data-detectors"> - <div style="margin-bottom:10px;">Pour toute question :</div> - <div>support@veremes.com</div> - </td> - </tr> -</table> -<!-- Email Footer : END --> - -</center> -[SCRIPT] -</body> -</html>'; -?> \ No newline at end of file diff --git a/src/vitis/vas/sql/sqlQueries.xml b/src/vitis/vas/sql/sqlQueries.xml deleted file mode 100644 index 4e745ccc2419751dc9590cbf5e359dc3ed5fb6a2..0000000000000000000000000000000000000000 --- a/src/vitis/vas/sql/sqlQueries.xml +++ /dev/null @@ -1,948 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<sqlQueries> - <title>Scripts d'installation et de mises à jour de la base du VAS</title> - <queriesCollection> - <query> - <type>init</type> - <version>2016.01.00</version> - <code> - <![CDATA[ - CREATE SCHEMA s_vitis; - CREATE OR REPLACE FUNCTION s_vitis.create_role_if_not_exists(rolename NAME, rights text) RETURNS TEXT AS $$ BEGIN IF NOT EXISTS (SELECT * FROM pg_roles WHERE rolname = rolename) THEN EXECUTE 'CREATE ROLE ' || rolename|| ' ' || rights; RETURN 'CREATE ROLE'; ELSE RETURN format('ROLE ''%I'' ALREADY EXISTS', rolename); END IF; END; $$ LANGUAGE plpgsql; - select s_vitis.create_role_if_not_exists('vitis_user', 'NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION'); - GRANT vitis_user TO u_vitis; - select s_vitis.create_role_if_not_exists('vitis_admin', 'NOSUPERUSER INHERIT NOCREATEDB CREATEROLE NOREPLICATION'); - GRANT vitis_user TO vitis_admin; - ALTER SCHEMA s_vitis OWNER TO u_vitis; - SET search_path = s_vitis, pg_catalog; - CREATE FUNCTION f_add_col(_tbl regclass, _col text, _type regtype, OUT success boolean) RETURNS boolean LANGUAGE plpgsql AS $$ BEGIN IF EXISTS (SELECT 1 FROM pg_attribute WHERE attrelid = _tbl AND attname = _col AND NOT attisdropped) THEN success := FALSE; ELSE EXECUTE 'ALTER TABLE ' || _tbl || ' ADD COLUMN ' || quote_ident(_col) || ' ' || _type; success := TRUE; END IF; END $$; - ALTER FUNCTION s_vitis.f_add_col(_tbl regclass, _col text, _type regtype, OUT success boolean) OWNER TO u_vitis; - CREATE FUNCTION f_add_unique_index(_schema text, _table text, _col text, _name text, OUT success boolean) RETURNS boolean LANGUAGE plpgsql AS $$ BEGIN IF EXISTS (SELECT 1 FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relname = _name AND n.nspname = _schema ) THEN success := FALSE; ELSE EXECUTE ' CREATE UNIQUE INDEX ' || _name || ' ON ' || _schema || '.' || _table || ' (lower(' || _col || '));' ; success := TRUE; END IF; END $$; - ALTER FUNCTION s_vitis.f_add_unique_index(_schema text, _table text, _col text, _name text, OUT success boolean) OWNER TO u_vitis; - CREATE FUNCTION s2hms(integer) RETURNS character varying LANGUAGE plpgsql AS $_$ declare nDureeSeconde ALIAS for $1; sDureeChaine varchar(10) ; nHeures int ; nMinutes int ; nSecondes int ; nHeures2 varchar(2) ; nMinutes2 varchar(2) ; nSecondes2 varchar(2) ; BEGIN nHeures := nDureeSeconde / 3600 ; nMinutes := (nDureeSeconde %% 3600) / 60 ; nSecondes := nDureeSeconde %% 60 ; if nHeures < 10 then nHeures2:= 0 || cast(nHeures as text) ; else nHeures2:= cast(nHeures as text) ; end if; if nMinutes < 10 then nMinutes2:= 0 || cast(nMinutes as text) ; else nMinutes2:= cast(nMinutes as text) ; end if; if nSecondes < 10 then nSecondes2:= 0 || cast(nSecondes as text) ; else nSecondes2:= cast(nSecondes as text) ; end if; sDureeChaine := nHeures2 || ':' || nMinutes2 || ':' || nSecondes2; RETURN sDureeChaine; END; $_$; - ALTER FUNCTION s_vitis.s2hms(integer) OWNER TO u_vitis; - CREATE TABLE "user" (user_id integer NOT NULL,login character varying(50),name character varying(80),ip_constraint character varying(255), email character varying(100), company character varying(80),department character varying(80),last_connection timestamp without time zone, domain_id integer,restriction text); - ALTER TABLE "user" OWNER TO u_vitis; - CREATE TABLE vm_translation (translation_id character varying(60) NOT NULL, lang character varying(2) NOT NULL, translation text); - ALTER TABLE vm_translation OWNER TO u_vitis; - CREATE TABLE "group" (group_id integer NOT NULL, name character varying(50)); - ALTER TABLE "group" OWNER TO u_vitis; - COMMENT ON TABLE "group" IS 'User group having the same access rights to workspaces and inboxes'; - CREATE TABLE user_group (user_id integer, group_id integer); - ALTER TABLE user_group OWNER TO u_vitis; - CREATE SEQUENCE seq_common START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - ALTER TABLE seq_common OWNER TO u_vitis; - CREATE TABLE domain (domain_id integer NOT NULL, domain character varying(50), alias character varying(50), server character varying(100), port integer, dn_search_user character varying(255), filter_user character varying(100), dn_search_group character varying(255), filter_group character varying(100), login character varying(50), password character varying(50), type character varying(10), verify_rights boolean DEFAULT true); - ALTER TABLE domain OWNER TO u_vitis; - COMMENT ON TABLE domain IS 'Ms Active Directory domain'; - COMMENT ON COLUMN domain.dn_search_user IS 'Distinguished Name for users root node '; - COMMENT ON COLUMN domain.dn_search_group IS 'Distinguished Name for groups root node '; - CREATE TABLE privileges ( rolname character varying(100) NOT NULL, description text); - ALTER TABLE privileges OWNER TO u_vitis; - CREATE SEQUENCE seq_translation START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - ALTER TABLE seq_translation OWNER TO u_vitis; - CREATE SEQUENCE seq_vm START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; - ALTER TABLE seq_vm OWNER TO u_vitis; - CREATE VIEW v_group AS SELECT CASE WHEN (user_group.nb_members IS NULL) THEN (0)::bigint ELSE user_group.nb_members END AS nb_members, "group".group_id, "group".name FROM ("group" LEFT JOIN ( SELECT count(*) AS nb_members, user_group_1.group_id FROM user_group user_group_1 GROUP BY user_group_1.group_id) user_group ON (("group".group_id = user_group.group_id))); - ALTER TABLE v_group OWNER TO u_vitis; - CREATE TABLE vm_application_module ( application_name character varying(100) NOT NULL, module_name character varying(50) NOT NULL); - ALTER TABLE vm_application_module OWNER TO u_vitis; - CREATE TABLE vm_mode ( mode_id character varying(100) NOT NULL, module_id character varying(50)); - ALTER TABLE vm_mode OWNER TO u_vitis; - CREATE TABLE vm_mode_rolname ( index integer, mode_id character varying(100) NOT NULL, rolname character varying(100) NOT NULL); - ALTER TABLE vm_mode_rolname OWNER TO u_vitis; - CREATE VIEW v_mode AS SELECT DISTINCT vm_mode.mode_id, vm_application_module.application_name, vm_mode_rolname.index, vm_application_module.module_name FROM ((((vm_mode LEFT JOIN vm_application_module ON (((vm_mode.module_id)::text = (vm_application_module.module_name)::text))) LEFT JOIN vm_mode_rolname ON (((vm_mode.mode_id)::text = (vm_mode_rolname.mode_id)::text))) JOIN pg_group ON ((pg_group.groname = (vm_mode_rolname.rolname)::name))) JOIN pg_user ON (((pg_user.usesysid = ANY (pg_group.grolist)) AND ((pg_user.usename)::text = ("current_user"())::text)))); - ALTER TABLE v_mode OWNER TO u_vitis; - CREATE VIEW v_ra_members_group AS SELECT count(*) AS nb_members, user_group.group_id FROM user_group GROUP BY user_group.group_id; - ALTER TABLE v_ra_members_group OWNER TO u_vitis; - CREATE TABLE vm_section ( section_id integer DEFAULT nextval('seq_vm'::regclass) NOT NULL, label_id character varying(60), name character varying(50), index integer, event text, tab_id integer, template character varying(100), ressource_id character varying(100), module character varying(100)); - ALTER TABLE vm_section OWNER TO u_vitis; - CREATE TABLE vm_tab ( tab_id integer DEFAULT nextval('seq_vm'::regclass) NOT NULL, event character varying(255) NOT NULL, index integer DEFAULT 0 NOT NULL, mode_id character varying(100) NOT NULL, label_id character varying(60) NOT NULL, ressource_id character varying(100), edit_column character varying(255), show_column character varying(255), sorted_by character varying(100), sorted_dir character varying(4) DEFAULT 'ASC'::character varying, name character varying(100)); - ALTER TABLE vm_tab OWNER TO u_vitis; - CREATE VIEW v_section AS SELECT vm_section.tab_id, vm_section.section_id, vm_section.event, vm_section.index, vm_translation.translation AS label, vm_translation.lang, vm_section.name, vm_section.template, vm_section.ressource_id, vm_section.module AS module_name FROM s_vitis.vm_section LEFT JOIN s_vitis.vm_translation ON vm_section.label_id::text = vm_translation.translation_id::text LEFT JOIN s_vitis.vm_tab ON vm_section.tab_id::text = vm_tab.tab_id::text; - ALTER TABLE v_section OWNER TO u_vitis; - CREATE VIEW v_tab AS SELECT vm_tab.tab_id, vm_tab.event, vm_tab.index, vm_tab.mode_id, vm_translation.translation AS label, vm_translation.lang, vm_tab.ressource_id, vm_tab.edit_column, vm_tab.show_column, vm_tab.sorted_by, vm_tab.sorted_dir, vm_tab.name FROM (vm_tab LEFT JOIN vm_translation ON (((vm_tab.label_id)::text = (vm_translation.translation_id)::text))); - ALTER TABLE v_tab OWNER TO u_vitis; - CREATE VIEW v_user AS SELECT "user".user_id, "user".login, "user".name, "user".email, "user".company, "user".department, "user".ip_constraint, domain.domain, "user".domain_id, "user".last_connection, "user".restriction, CASE WHEN ((array_to_string(ARRAY( SELECT pg_group.groname FROM (pg_group JOIN pg_roles ON ((pg_roles.oid = ANY (pg_group.grolist)))) WHERE ((("user".login)::name = pg_roles.rolname) AND ((pg_group.groname = 'vitis_admin'::name) OR (pg_group.groname = 'vitis_user'::name)))), '|'::text) = 'vitis_user|vitis_admin'::text) OR (array_to_string(ARRAY( SELECT pg_group.groname FROM (pg_group JOIN pg_roles ON ((pg_roles.oid = ANY (pg_group.grolist)))) WHERE ((("user".login)::name = pg_roles.rolname) AND ((pg_group.groname = 'vitis_admin'::name) OR (pg_group.groname = 'vitis_user'::name)))), '|'::text) = 'vitis_admin|vitis_user'::text)) THEN 'admin'::text WHEN (array_to_string(ARRAY( SELECT pg_group.groname FROM (pg_group JOIN pg_roles ON ((pg_roles.oid = ANY (pg_group.grolist)))) WHERE ((("user".login)::name = pg_roles.rolname) AND ((pg_group.groname = 'vitis_admin'::name) OR (pg_group.groname = 'vitis_user'::name)))), '|'::text) = 'vitis_user'::text) THEN 'user'::text ELSE ''::text END AS role FROM ("user" LEFT JOIN domain ON (("user".domain_id = domain.domain_id))); - ALTER TABLE v_user OWNER TO u_vitis; - CREATE VIEW v_user_group AS SELECT user_group.group_id, user_group.user_id FROM ((user_group LEFT JOIN "user" ON ((user_group.user_id = "user".user_id))) LEFT JOIN "group" ON (("group".group_id = user_group.group_id))) WHERE ((("user".login)::name)::text = ("current_user"())::text); - ALTER TABLE v_user_group OWNER TO u_vitis; - CREATE TABLE version ( version character varying(10) NOT NULL, build integer NOT NULL, date timestamp with time zone NOT NULL, active boolean); - ALTER TABLE version OWNER TO u_vitis; - CREATE TABLE vm_application ( name character varying(100) NOT NULL); - ALTER TABLE vm_application OWNER TO u_vitis; - CREATE TABLE vm_module ( module_id character varying(50) NOT NULL, description text, version character varying(50) NOT NULL, label character varying(50), type character varying(3)); - ALTER TABLE vm_module OWNER TO u_vitis; - CREATE TABLE vm_string ( string text, string_id character varying(60) NOT NULL); - ALTER TABLE vm_string OWNER TO u_vitis; - CREATE TABLE vm_table_button ( button_class character varying(50), table_button_id integer DEFAULT nextval('seq_vm'::regclass) NOT NULL, event character varying(100) NOT NULL, label_id character varying(60), ressource_id character varying(100), tab_id integer); - ALTER TABLE vm_table_button OWNER TO u_vitis; - CREATE TABLE vm_table_field ( table_field_id integer DEFAULT nextval('seq_vm'::regclass) NOT NULL, name character varying(200) NOT NULL, sortable boolean DEFAULT true, resizeable boolean DEFAULT false, index integer, width integer, align character varying(6) DEFAULT 'left'::character varying NOT NULL, label_id character varying(60), module character varying(50), ressource_id character varying(100), template character varying(255), tab_id integer); - ALTER TABLE vm_table_field OWNER TO u_vitis; - INSERT INTO privileges (rolname, description) VALUES ('vitis_admin', E'rôle administrateur de vitis\nPermet d''accéder aux modes :\n - Utilisateur\n - Utilisateurs\n - Configuration\n - Logs'); - INSERT INTO privileges (rolname, description) VALUES ('vitis_user', E'rôle utilisateur de vitis\n\nPermet de se connecter à l''application'); - INSERT INTO vm_mode (mode_id, module_id) VALUES ('user', 'vitis'); - INSERT INTO vm_mode (mode_id, module_id) VALUES ('users', 'vitis'); - INSERT INTO vm_mode (mode_id, module_id) VALUES ('configuration', 'vitis'); - INSERT INTO vm_mode (mode_id, module_id) VALUES ('logs', 'vitis'); - INSERT INTO vm_mode (mode_id, module_id) VALUES ('help', 'vitis'); - INSERT INTO vm_mode_rolname (index, mode_id, rolname) VALUES (20, 'users', 'vitis_admin'); - INSERT INTO vm_mode_rolname (index, mode_id, rolname) VALUES (70, 'configuration', 'vitis_admin'); - INSERT INTO vm_mode_rolname (index, mode_id, rolname) VALUES (80, 'logs', 'vitis_admin'); - INSERT INTO vm_mode_rolname (index, mode_id, rolname) VALUES (10, 'user', 'vitis_user'); - INSERT INTO vm_mode_rolname (index, mode_id, rolname) VALUES (90, 'help', 'vitis_admin'); - INSERT INTO vm_module (module_id, description, version, label, type) VALUES ('vitis', 'module vitis veremes', '0.1', 'vitis', NULL); - INSERT INTO vm_string (string, string_id) VALUES ('Chaine de caractère nulle', 'vitis_1'); - INSERT INTO vm_string (string, string_id) VALUES ('onglet 2 du mode (Utilisateurs) utilisé dans la table vm_tab', 'vitis_2'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre de la list correspondant à le vm_table 3 (v_user)', 'vitis_3'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre Formulaire vm_table id 3 (v_user)', 'vitis_4'); - INSERT INTO vm_string (string, string_id) VALUES ('Button d''ajout de la table v_user table_button_id = 38', 'vitis_5'); - INSERT INTO vm_string (string, string_id) VALUES ('Button de suppression de la table v_user table_button_id =39', 'vitis_6'); - INSERT INTO vm_string (string, string_id) VALUES ('Button import AD de la table v_user table_button_id =40', 'vitis_7'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ user_id correspondant au table field_id 1', 'vitis_8'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ login correspondant au table field_id 11', 'vitis_9'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ name correspondant au table field_id 12', 'vitis_10'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ email correspondant au table field_id 13', 'vitis_11'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ ip correspondant au table field_id 14', 'vitis_12'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ company correspondant au table field_id 15', 'vitis_13'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ domain_id de la table domain correspondant au table field_id 146', 'vitis_14'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ Role de la table v_user pour connaitre si un utilisateur est administrateur ou pas', 'vitis_15'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ department correspondant au table field_id 18', 'vitis_16'); - INSERT INTO vm_string (string, string_id) VALUES ('onglet 1 du mode administration (Annuaires) utilisé dans la table vm_tab', 'vitis_17'); - INSERT INTO vm_string (string, string_id) VALUES ('onglet 3 du mode administration (Groupes) utilisé dans la table vm_tab', 'vitis_18'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre Formulaire vm_table id (group)', 'vitis_19'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre de la list correspondant à le vm_table 1 (group)', 'vitis_20'); - INSERT INTO vm_string (string, string_id) VALUES ('Button d''ajout de la table group table_button_id = 9', 'vitis_21'); - INSERT INTO vm_string (string, string_id) VALUES ('Button de suppression de la table group table_button_id =10', 'vitis_22'); - INSERT INTO vm_string (string, string_id) VALUES ('Button import AD de la table group table_button_id =50', 'vitis_23'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ id de la vue group correspondant au table field_id 154', 'vitis_24'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ nom de la vue group correspondant au table field_id 135', 'vitis_25'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ nb_members de la vue v_ra_members_group correspondant au champ Membres', 'vitis_26'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre de la list correspondant à le vm_table 19 (domain)', 'vitis_27'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre Formulaire vm_table domain', 'vitis_28'); - INSERT INTO vm_string (string, string_id) VALUES ('Button d''ajout de la table domain table_button_id = 7', 'vitis_29'); - INSERT INTO vm_string (string, string_id) VALUES ('Button de suppression de la table domain table_button_id =8', 'vitis_30'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ domain_id de la table domain correspondant au table field_id 145', 'vitis_31'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ domain de la table domain correspondant au table field_id 145', 'vitis_32'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ server de la table domain correspondant au table field_id 147', 'vitis_33'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ port de la table domain correspondant au table field_id 148', 'vitis_34'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ alias correspondant au table field_id 139', 'vitis_35'); - INSERT INTO vm_string (string, string_id) VALUES ('"Champ name de la vue update correspondant au table_field_id 41"', 'vitis_37'); - INSERT INTO vm_string (string, string_id) VALUES ('"Champ from de la vue update correspondant au table_field_id 42"', 'vitis_38'); - INSERT INTO vm_string (string, string_id) VALUES ('"Champ to de la vue update correspondant au table_field_id 43"', 'vitis_39'); - INSERT INTO vm_string (string, string_id) VALUES ('"Champ publishing_date de la vue update correspondant au table_field_id 44"', 'vitis_40'); - INSERT INTO vm_string (string, string_id) VALUES ('"Champ status de la vue update correspondant au table_field_id 45"', 'vitis_41'); - INSERT INTO vm_string (string, string_id) VALUES ('"Champ telechargement de la vue update correspondant au table_field_id 46"', 'vitis_42'); - INSERT INTO vm_string (string, string_id) VALUES ('"Champ installation de la vue update correspondant au table_field_id 47"', 'vitis_43'); - INSERT INTO vm_string (string, string_id) VALUES ('"Champ log de la vue update correspondant au table_field_id 48"', 'vitis_44'); - INSERT INTO vm_string (string, string_id) VALUES ('"Champ error_log de la vue update correspondant au table_field_id 49"', 'vitis_45'); - INSERT INTO vm_string (string, string_id) VALUES ('status disponible de la table rt_update_status', 'vitis_46'); - INSERT INTO vm_string (string, string_id) VALUES ('status téléchargé de la table rt_update_status', 'vitis_47'); - INSERT INTO vm_string (string, string_id) VALUES ('status installé de la table rt_update_status', 'vitis_48'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ update_id correspondant au table field_id 41', 'vitis_49'); - INSERT INTO vm_string (string, string_id) VALUES ('status erreur de la table rt_update_status', 'vitis_50'); - INSERT INTO vm_string (string, string_id) VALUES ('onglet 4 du mode administration (Privilèges) utilisé dans la table vm_tab', 'vitis_51'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre Formulaire vm_table id (privileges)', 'vitis_52'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre de la liste correspondant à le vm_table 1 (privileges)', 'vitis_53'); - INSERT INTO vm_string (string, string_id) VALUES ('Groupe d''utilisateurs', 'vitis_54'); - INSERT INTO vm_string (string, string_id) VALUES ('Description du groupe d''utilisateurs', 'vitis_55'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre section general pour v_user', 'vitis_57'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre section general pour group', 'vitis_58'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre section general pour domain', 'vitis_59'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre section general pour privileges', 'vitis_60'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ last_connection correspondant à la table v_user', 'vitis_61'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ alias correspondant à la table domain', 'vitis_62'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ type correspondant à la table domain', 'vitis_63'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ from de la vue update', 'vitis_64'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ to de la vue update', 'vitis_65'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ publishing_date de la vue update', 'vitis_66'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ status de la vue update', 'vitis_67'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ telechargement de la vue update', 'vitis_68'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ installation de la vue update', 'vitis_69'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ log de la vue update', 'vitis_70'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ error_log de la vue update', 'vitis_71'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ update_id de la vue update', 'vitis_72'); - INSERT INTO vm_string (string, string_id) VALUES ('Button de suppression de la table update', 'vitis_73'); - INSERT INTO vm_string (string, string_id) VALUES ('Champ name de la vue update', 'vitis_74'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre section configuration pour configuration', 'vitis_75'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre section version pour configuration', 'vitis_76'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre section php info pour configuration', 'vitis_77'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre section mises à jour pour configuration', 'vitis_78'); - INSERT INTO vm_string (string, string_id) VALUES ('Titre section installation pour configuration', 'vitis_79'); - INSERT INTO vm_string (string, string_id) VALUES ('Onglet Administration de l''objet vitis_help', 'vitis_291'); - INSERT INTO vm_string (string, string_id) VALUES ('Onglet Web service de l''objet vitis_help', 'vitis_80'); - INSERT INTO vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'loadConfiguration()', 0, 'configuration', 'vitis_1', NULL, NULL, NULL, NULL, 'ASC', 'vitis_configuration'); - INSERT INTO vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'loadHelp()', 0, 'help', 'vitis_1', NULL, NULL, NULL, NULL, 'ASC', 'vitis_help'); - INSERT INTO vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'loadLogsJob()', 0, 'logs', 'vitis_1', NULL, NULL, NULL, NULL, 'ASC', 'vitis_log'); - INSERT INTO vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'loadUser();', 0, 'user', 'vitis_1', 'vitis/users', NULL, NULL, NULL, 'ASC', 'vitis_user'); - INSERT INTO vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'loadList()', 1, 'users', 'vitis_17', 'vitis/domains', 'editSectionForm', 'showSectionForm', 'domain_id', 'DESC', 'vitis_domain'); - INSERT INTO vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'loadList()', 2, 'users', 'vitis_18', 'vitis/groups', 'editSectionForm', 'showSectionForm', 'group_id', 'DESC', 'vitis_group'); - INSERT INTO vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'loadList()', 3, 'users', 'vitis_51', 'vitis/privileges', 'editSectionForm', 'showSectionForm', 'rolname', 'ASC', 'vitis_privilege'); - INSERT INTO vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'loadList()', 0, 'users', 'vitis_2', 'vitis/users', 'editSectionForm', 'showSectionForm', 'user_id', 'DESC', 'vitis_users'); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_57', 'general', 1, 'javascript:loadSection', (select tab_id from s_vitis.vm_tab where name = 'vitis_users'), 'workspaceListTpl.html', NULL, 'vitis'); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'nb_members', true, true, 3, 130, 'right', 'vitis_26', NULL, 'vitis/groups', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_group')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'domain_id', true, true, 1, 30, 'right', 'vitis_31', NULL, 'vitis/domains', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_domain')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'type', true, true, 2, 100, 'left', 'vitis_63', NULL, 'vitis/domains', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_domain')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'alias', true, true, 3, 300, 'left', 'vitis_62', NULL, 'vitis/domains', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_domain')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'domain', true, true, 4, 300, 'left', 'vitis_32', NULL, 'vitis/domains', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_domain')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'server', true, true, 5, 150, 'left', 'vitis_33', NULL, 'vitis/domains', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_domain')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'port', true, true, 6, 50, 'right', 'vitis_34', NULL, 'vitis/domains', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_domain')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'group_id', true, true, 1, 40, 'right', 'vitis_24', NULL, 'vitis/groups', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_group')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'rolname', true, true, 1, 200, 'left', 'vitis_54', NULL, 'vitis/privileges', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_privilege')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'description', true, true, 2, 800, 'left', 'vitis_55', NULL, 'vitis/privileges', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_privilege')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'name', true, true, 2, 200, 'left', 'vitis_25', NULL, 'vitis/groups', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_group')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'name', true, true, 3, 150, 'left', 'vitis_10', NULL, 'vitis/users', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'email', true, true, 6, 250, 'left', 'vitis_11', NULL, 'vitis/users', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'user_id', true, true, 1, 30, 'right', 'vitis_8', NULL, 'vitis/users', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'login', true, true, 2, 200, 'left', 'vitis_9', NULL, 'vitis/users', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'ip_constraint', true, true, 9, 150, 'left', 'vitis_12', NULL, 'vitis/users', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'company', true, true, 5, 130, 'left', 'vitis_13', NULL, 'vitis/users', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'domain', true, true, 8, 200, 'left', 'vitis_14', NULL, 'vitis/users', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'last_connection', true, true, 9, 170, 'left', 'vitis_61', NULL, 'vitis/users', '<div data-app-format-date-column="{{row.entity[col.field]}}"></div>', (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'role', true, true, 4, 40, 'center', 'vitis_15', NULL, 'vitis/users', '<div data-app-user-role-column="{{row.entity[col.field]}}"></div>', (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_59', 'general', 1, 'javascript:loadSection', (select tab_id from s_vitis.vm_tab where name = 'vitis_domain'), 'workspaceListTpl.html', NULL, 'vitis'); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_60', 'general', 1, 'javascript:loadSection', (select tab_id from s_vitis.vm_tab where name = 'vitis_privilege'), 'workspaceListTpl.html', NULL, 'vitis'); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_1', 'general', 1, 'Javascript:reloadSectionForm', (select tab_id from s_vitis.vm_tab where name = 'vitis_user'), 'simpleFormTpl.html', NULL, 'vitis'); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_58', 'general', 1, 'javascript:loadSection', (select tab_id from s_vitis.vm_tab where name = 'vitis_group'), 'workspaceListTpl.html', NULL, 'vitis'); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_1', 'general', 1, 'Javascript:reloadSectionForm', (select tab_id from s_vitis.vm_tab where name = 'vitis_log'), 'doubleFormTpl.html', NULL, 'vitis'); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_76', 'version', 2, 'Javascript:reloadSectionForm', (select tab_id from s_vitis.vm_tab where name = 'vitis_configuration'), 'modules/vitis/templates/versionConfigurationTpl.html', NULL, 'vitis'); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_77', 'phpinfo', 3, 'Javascript:reloadSectionForm', (select tab_id from s_vitis.vm_tab where name = 'vitis_configuration'), 'modules/vitis/templates/phpInfoConfigurationTpl.html', NULL, 'vitis'); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_75', 'general', 1, 'setPropertiesFormValues', (select tab_id from s_vitis.vm_tab where name = 'vitis_configuration'), 'simpleFormTpl.html', NULL, 'vitis'); - INSERT INTO vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_80', 'webService', 2, 'Javascript:reloadSectionForm', (select tab_id from s_vitis.vm_tab where name = 'vitis_help'), 'modules/vitis/templates/webServiceHelpTpl.html', NULL, 'vitis'); - INSERT INTO vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('add_smallFlexigrid', (select nextval('s_vitis.seq_vm'::regclass)), 'AddSectionForm', 'vitis_5', 'vitis/users', (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('deleteFlexigrid', (select nextval('s_vitis.seq_vm'::regclass)), 'deleteUsers()', 'vitis_6', 'vitis/users', (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('add_smallFlexigrid', (select nextval('s_vitis.seq_vm'::regclass)), 'AddSectionForm', 'vitis_29', 'vitis/domains', (select tab_id from s_vitis.vm_tab where name = 'vitis_domain')); - INSERT INTO vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('deleteFlexigrid', (select nextval('s_vitis.seq_vm'::regclass)), 'DeleteSelection', 'vitis_30', 'vitis/domains', (select tab_id from s_vitis.vm_tab where name = 'vitis_domain')); - INSERT INTO vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('add_smallFlexigrid', (select nextval('s_vitis.seq_vm'::regclass)), 'AddSectionForm', 'vitis_21', 'vitis/groups', (select tab_id from s_vitis.vm_tab where name = 'vitis_group')); - INSERT INTO vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('deleteFlexigrid', (select nextval('s_vitis.seq_vm'::regclass)), 'DeleteSelection', 'vitis_22', 'vitis/groups', (select tab_id from s_vitis.vm_tab where name = 'vitis_group')); - INSERT INTO vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('adImport', (select nextval('s_vitis.seq_vm'::regclass)), 'ImportFromAd("group")', 'vitis_23', 'vitis/groups', (select tab_id from s_vitis.vm_tab where name = 'vitis_group')); - INSERT INTO vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('adImport', (select nextval('s_vitis.seq_vm'::regclass)), 'ImportFromAd("person")', 'vitis_7', 'vitis/users', (select tab_id from s_vitis.vm_tab where name = 'vitis_users')); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_1', 'fr', NULL); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_1', 'en', NULL); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_2', 'fr', 'Utilisateurs'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_2', 'en', 'Users'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_3', 'fr', 'Utilisateurs'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_3', 'en', 'Users'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_4', 'fr', 'utilisateur'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_4', 'en', 'user'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_5', 'en', 'Add user'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_6', 'en', 'Delete users'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_6', 'fr', 'Supprimer les utilisateurs'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_7', 'fr', 'Importer de l''A.D.'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_7', 'en', 'Import from A.D.'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_8', 'fr', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_8', 'en', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_9', 'fr', 'Compte'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_9', 'en', 'Login'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_10', 'fr', 'Nom'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_10', 'en', 'Name'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_11', 'fr', 'Email'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_11', 'en', 'Email'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_12', 'en', 'Workstation IP'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_13', 'fr', 'Société'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_13', 'en', 'Company'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_14', 'fr', 'Domaine'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_14', 'en', 'Domain'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_15', 'fr', 'Rôle'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_15', 'en', 'Role'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_16', 'en', 'Department'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_16', 'fr', 'Service'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_17', 'fr', 'Domaines'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_17', 'en', 'Domains'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_18', 'fr', 'Groupes'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_18', 'en', 'Groups'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_19', 'fr', 'groupe'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_19', 'en', 'group'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_20', 'fr', 'Groupes'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_20', 'en', 'Groups'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_21', 'en', 'Add group'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_22', 'fr', 'Supprimer les groupes'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_22', 'en', 'Delete groups'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_23', 'fr', 'Importer de l''A.D.'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_23', 'en', 'Import from AD'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_24', 'fr', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_24', 'en', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_25', 'fr', 'Groupe'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_25', 'en', 'Group'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_28', 'en', 'domain'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_28', 'fr', 'domaine'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_27', 'en', 'Domains'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_27', 'fr', 'Domaines'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_29', 'en', 'Add domain'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_30', 'en', 'Delete domaines'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_30', 'fr', 'Supprimer les domaines'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_31', 'fr', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_31', 'en', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_32', 'fr', 'Domaine'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_32', 'en', 'Domain'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_33', 'fr', 'Serveur'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_33', 'en', 'Server'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_34', 'fr', 'Port'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_34', 'en', 'Port'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_35', 'fr', 'Supprimer mise à jour'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_35', 'en', 'Delete update'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_37', 'fr', 'Nom'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_37', 'en', 'Name'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_38', 'fr', 'De'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_38', 'en', 'From'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_39', 'fr', 'A'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_39', 'en', 'To'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_40', 'fr', 'Date de publication'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_40', 'en', 'Publishing date'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_41', 'fr', 'Statut'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_41', 'en', 'Status'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_42', 'fr', 'Téléchargement'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_42', 'en', 'Download'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_43', 'fr', 'Installation'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_43', 'en', 'Installation'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_44', 'fr', 'Log'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_44', 'en', 'Log'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_45', 'fr', 'Erreurs'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_45', 'en', 'Errors'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_46', 'fr', 'Disponible'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_46', 'en', 'Available'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_47', 'fr', 'Téléchargé'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_47', 'en', 'Downloaded'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_48', 'fr', 'Installé'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_48', 'en', 'Installed'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_49', 'fr', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_49', 'en', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_50', 'fr', 'Erreur'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_50', 'en', 'Error'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_51', 'fr', 'Privilèges'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_51', 'en', 'Privileges'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_52', 'fr', 'Privilèges'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_52', 'en', 'Privileges'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_53', 'fr', 'Privilèges'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_53', 'en', 'Privileges'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_54', 'fr', 'Groupes d''utilisateurs'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_54', 'en', 'User groups'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_55', 'fr', 'Description'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_55', 'en', 'Description'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_57', 'fr', 'Général'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_57', 'en', 'General'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_58', 'fr', 'Général'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_58', 'en', 'General'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_59', 'fr', 'Général'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_59', 'en', 'General'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_60', 'fr', 'Général'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_60', 'en', 'General'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_61', 'fr', 'Dernière connexion'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_61', 'en', 'Last connection'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_62', 'fr', 'Alias'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_62', 'en', 'Alias'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_63', 'fr', 'Type'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_63', 'en', 'Type'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_64', 'fr', 'De'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_64', 'en', 'From'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_65', 'fr', 'A'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_65', 'en', 'To'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_66', 'fr', 'Date de publication'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_26', 'fr', 'Nombre de membres'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_26', 'en', 'Number of members'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_66', 'en', 'Publishing date'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_67', 'fr', 'Statut'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_67', 'en', 'Status'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_68', 'fr', 'Téléchargement'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_68', 'en', 'Download'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_69', 'fr', 'Installation'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_69', 'en', 'Installation'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_70', 'fr', 'Log'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_70', 'en', 'Log'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_71', 'fr', 'Erreurs'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_71', 'en', 'Errors'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_72', 'fr', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_72', 'en', 'ID'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_73', 'fr', 'Supprimer mise à jour'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_73', 'en', 'Delete update'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_74', 'fr', 'Nom'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_74', 'en', 'Name'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_75', 'fr', 'Configuration'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_75', 'en', 'Configuration'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_76', 'fr', 'Version'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_76', 'en', 'Version'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_77', 'fr', 'Php info'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_77', 'en', 'Php info'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_78', 'fr', 'Mises à jour'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_78', 'en', 'Mises à jour'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_79', 'fr', 'Installation'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_79', 'en', 'Installation'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_80', 'fr', 'Service Web'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_80', 'en', 'Web Service'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_21', 'fr', 'Ajouter un groupe'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_29', 'fr', 'Ajouter un domaine'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_5', 'fr', 'Ajouter un utilisateur'); - INSERT INTO vm_translation (translation_id, lang, translation) VALUES ('vitis_12', 'fr', 'IP du poste'); - ALTER TABLE ONLY vm_application_module ADD CONSTRAINT fk_application_module_name PRIMARY KEY (application_name, module_name); - ALTER TABLE ONLY domain ADD CONSTRAINT pk_domain_id PRIMARY KEY (domain_id); - ALTER TABLE ONLY "group" ADD CONSTRAINT pk_group_id PRIMARY KEY (group_id); - ALTER TABLE ONLY vm_application ADD CONSTRAINT pk_name PRIMARY KEY (name); - ALTER TABLE ONLY privileges ADD CONSTRAINT pk_privileges PRIMARY KEY (rolname); - ALTER TABLE ONLY vm_string ADD CONSTRAINT pk_string_id PRIMARY KEY (string_id); - ALTER TABLE ONLY vm_tab ADD CONSTRAINT pk_tab_id PRIMARY KEY (tab_id); - ALTER TABLE ONLY vm_table_button ADD CONSTRAINT pk_table_button_id PRIMARY KEY (table_button_id); - ALTER TABLE ONLY vm_table_field ADD CONSTRAINT pk_table_field_id PRIMARY KEY (table_field_id); - ALTER TABLE ONLY user_group ADD CONSTRAINT pk_user_group UNIQUE (group_id, user_id); - ALTER TABLE ONLY "user" ADD CONSTRAINT pk_user_id PRIMARY KEY (user_id); - ALTER TABLE ONLY vm_mode ADD CONSTRAINT pk_vm_mode PRIMARY KEY (mode_id); - ALTER TABLE ONLY vm_mode_rolname ADD CONSTRAINT pk_vm_mode_rolname PRIMARY KEY (rolname, mode_id); - ALTER TABLE ONLY vm_module ADD CONSTRAINT pk_vm_module PRIMARY KEY (module_id); - ALTER TABLE ONLY vm_section ADD CONSTRAINT pk_vm_section PRIMARY KEY (section_id); - ALTER TABLE ONLY vm_translation ADD CONSTRAINT pk_vm_translation PRIMARY KEY (translation_id, lang); - ALTER TABLE ONLY version ADD CONSTRAINT pk_version PRIMARY KEY (version); - ALTER TABLE ONLY vm_module ADD CONSTRAINT uk_label UNIQUE (label); - ALTER TABLE ONLY "user" ADD CONSTRAINT uk_user_login UNIQUE (login); - CREATE INDEX fki_login ON "user" USING btree (login); - CREATE INDEX fki_user_restriction ON "user" USING btree (restriction); - CREATE UNIQUE INDEX uk_domain ON domain USING btree (lower((domain)::text)); - CREATE UNIQUE INDEX uk_login ON "user" USING btree (lower((login)::text)); - CREATE UNIQUE INDEX uk_mode_id ON vm_mode_rolname USING btree (rolname, lower((mode_id)::text)); - CREATE UNIQUE INDEX uk_name_group ON "group" USING btree (lower((name)::text)); - ALTER TABLE s_vitis.vm_tab ADD CONSTRAINT uk_vm_tab_name UNIQUE (name); - CREATE RULE delete_v_group AS ON DELETE TO v_group DO INSTEAD DELETE FROM "group" WHERE ("group".group_id = old.group_id); - CREATE RULE delete_v_user AS ON DELETE TO v_user DO INSTEAD DELETE FROM "user" WHERE ("user".user_id = old.user_id); - CREATE RULE delete_v_user_group AS ON DELETE TO v_user_group DO INSTEAD DELETE FROM user_group WHERE (user_group.group_id = old.group_id); - CREATE RULE insert_v_group AS ON INSERT TO v_group DO INSTEAD INSERT INTO "group" (group_id, name) VALUES (new.group_id, new.name); - CREATE RULE insert_v_user AS ON INSERT TO v_user DO INSTEAD INSERT INTO "user" (user_id, login, domain_id, name, email, company, department, ip_constraint, restriction) VALUES (new.user_id, new.login, new.domain_id, new.name, new.email, new.company, new.department, new.ip_constraint, new.restriction); - CREATE RULE update_v_group AS ON UPDATE TO v_group DO INSTEAD UPDATE "group" SET name = new.name WHERE ("group".group_id = new.group_id); - CREATE RULE update_v_user AS ON UPDATE TO v_user DO INSTEAD UPDATE "user" SET name = new.name, email = new.email, company = new.company, department = new.department, ip_constraint = new.ip_constraint, restriction = new.restriction WHERE ("user".user_id = new.user_id); - ALTER TABLE ONLY vm_application_module ADD CONSTRAINT fk_application_name FOREIGN KEY (application_name) REFERENCES vm_application(name) ON UPDATE CASCADE ON DELETE CASCADE; - ALTER TABLE ONLY "user" ADD CONSTRAINT fk_domain_id FOREIGN KEY (domain_id) REFERENCES domain(domain_id) ON UPDATE CASCADE ON DELETE CASCADE; - ALTER TABLE ONLY user_group ADD CONSTRAINT fk_group_id_user FOREIGN KEY (group_id) REFERENCES "group"(group_id) ON DELETE CASCADE; - ALTER TABLE ONLY vm_table_field ADD CONSTRAINT fk_label_id FOREIGN KEY (label_id) REFERENCES vm_string(string_id); - ALTER TABLE ONLY vm_table_button ADD CONSTRAINT fk_label_id_button FOREIGN KEY (label_id) REFERENCES vm_string(string_id); - ALTER TABLE ONLY vm_mode_rolname ADD CONSTRAINT fk_mode_id FOREIGN KEY (mode_id) REFERENCES vm_mode(mode_id) ON DELETE CASCADE; - ALTER TABLE ONLY vm_tab ADD CONSTRAINT fk_mode_id_tab FOREIGN KEY (mode_id) REFERENCES vm_mode(mode_id) ON DELETE CASCADE; - ALTER TABLE ONLY vm_mode ADD CONSTRAINT fk_module_id FOREIGN KEY (module_id) REFERENCES vm_module(module_id) ON DELETE CASCADE; - ALTER TABLE ONLY vm_application_module ADD CONSTRAINT fk_module_name FOREIGN KEY (module_name) REFERENCES vm_module(module_id) ON UPDATE CASCADE ON DELETE CASCADE; - ALTER TABLE ONLY vm_mode_rolname ADD CONSTRAINT fk_rolname FOREIGN KEY (rolname) REFERENCES privileges(rolname) ON DELETE CASCADE; - ALTER TABLE ONLY vm_tab ADD CONSTRAINT fk_string_id_tab FOREIGN KEY (label_id) REFERENCES vm_string(string_id); - ALTER TABLE ONLY vm_translation ADD CONSTRAINT fk_string_id_translation FOREIGN KEY (translation_id) REFERENCES vm_string(string_id) ON DELETE CASCADE; - ALTER TABLE ONLY vm_section ADD CONSTRAINT fk_string_section FOREIGN KEY (label_id) REFERENCES vm_string(string_id); - ALTER TABLE ONLY user_group ADD CONSTRAINT fk_user_id_group FOREIGN KEY (user_id) REFERENCES "user"(user_id) ON DELETE CASCADE; - ALTER TABLE ONLY vm_table_button ADD CONSTRAINT fk_vm_tab_button FOREIGN KEY (tab_id) REFERENCES vm_tab(tab_id); - ALTER TABLE ONLY vm_table_field ADD CONSTRAINT fk_vm_tab_button FOREIGN KEY (tab_id) REFERENCES vm_tab(tab_id); - ALTER TABLE ONLY vm_section ADD CONSTRAINT fk_vm_tab_section FOREIGN KEY (tab_id) REFERENCES vm_tab(tab_id); - ALTER TABLE ONLY vm_section ADD CONSTRAINT fk_module_vm_section FOREIGN KEY (module) REFERENCES vm_module (module_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION; - REVOKE ALL ON SCHEMA s_vitis FROM PUBLIC; - REVOKE ALL ON SCHEMA s_vitis FROM u_vitis; - GRANT ALL ON SCHEMA s_vitis TO u_vitis; - GRANT USAGE ON SCHEMA s_vitis TO vitis_admin; - GRANT USAGE ON SCHEMA s_vitis TO vitis_user; - REVOKE ALL ON TABLE "user" FROM PUBLIC; - REVOKE ALL ON TABLE "user" FROM u_vitis; - GRANT ALL ON TABLE "user" TO u_vitis; - GRANT ALL ON TABLE "user" TO vitis_admin; - GRANT SELECT,UPDATE ON TABLE "user" TO vitis_user; - REVOKE ALL ON TABLE vm_translation FROM PUBLIC; - REVOKE ALL ON TABLE vm_translation FROM u_vitis; - GRANT ALL ON TABLE vm_translation TO u_vitis; - GRANT SELECT ON TABLE vm_translation TO vitis_user; - GRANT ALL ON TABLE vm_translation TO vitis_admin; - REVOKE ALL ON TABLE "group" FROM PUBLIC; - REVOKE ALL ON TABLE "group" FROM u_vitis; - GRANT ALL ON TABLE "group" TO u_vitis; - GRANT ALL ON TABLE "group" TO vitis_admin; - GRANT SELECT ON TABLE "group" TO vitis_user; - REVOKE ALL ON TABLE user_group FROM PUBLIC; - REVOKE ALL ON TABLE user_group FROM u_vitis; - GRANT ALL ON TABLE user_group TO u_vitis; - GRANT ALL ON TABLE user_group TO vitis_admin; - GRANT SELECT ON TABLE user_group TO vitis_user; - REVOKE ALL ON SEQUENCE seq_common FROM PUBLIC; - REVOKE ALL ON SEQUENCE seq_common FROM u_vitis; - GRANT ALL ON SEQUENCE seq_common TO u_vitis; - GRANT ALL ON SEQUENCE seq_common TO vitis_admin; - GRANT SELECT,UPDATE ON SEQUENCE seq_common TO vitis_user; - REVOKE ALL ON TABLE domain FROM PUBLIC; - REVOKE ALL ON TABLE domain FROM u_vitis; - GRANT ALL ON TABLE domain TO u_vitis; - GRANT ALL ON TABLE domain TO vitis_admin; - GRANT SELECT ON TABLE domain TO vitis_user; - REVOKE ALL ON TABLE privileges FROM PUBLIC; - REVOKE ALL ON TABLE privileges FROM u_vitis; - GRANT ALL ON TABLE privileges TO u_vitis; - GRANT ALL ON TABLE privileges TO vitis_admin; - GRANT SELECT ON TABLE privileges TO vitis_user; - REVOKE ALL ON SEQUENCE seq_translation FROM PUBLIC; - REVOKE ALL ON SEQUENCE seq_translation FROM u_vitis; - GRANT ALL ON SEQUENCE seq_translation TO u_vitis; - GRANT ALL ON SEQUENCE seq_translation TO vitis_admin; - GRANT SELECT,UPDATE ON SEQUENCE seq_translation TO vitis_user; - REVOKE ALL ON SEQUENCE seq_vm FROM PUBLIC; - REVOKE ALL ON SEQUENCE seq_vm FROM u_vitis; - GRANT ALL ON SEQUENCE seq_vm TO u_vitis; - GRANT ALL ON SEQUENCE seq_vm TO vitis_admin; - GRANT SELECT,UPDATE ON SEQUENCE seq_vm TO vitis_user; - REVOKE ALL ON TABLE v_group FROM PUBLIC; - REVOKE ALL ON TABLE v_group FROM u_vitis; - GRANT ALL ON TABLE v_group TO u_vitis; - GRANT ALL ON TABLE v_group TO vitis_admin; - GRANT SELECT ON TABLE v_group TO vitis_user; - REVOKE ALL ON TABLE vm_application_module FROM PUBLIC; - REVOKE ALL ON TABLE vm_application_module FROM u_vitis; - GRANT ALL ON TABLE vm_application_module TO u_vitis; - GRANT ALL ON TABLE vm_application_module TO vitis_admin; - GRANT SELECT ON TABLE vm_application_module TO vitis_user; - REVOKE ALL ON TABLE vm_mode FROM PUBLIC; - REVOKE ALL ON TABLE vm_mode FROM u_vitis; - GRANT ALL ON TABLE vm_mode TO u_vitis; - GRANT ALL ON TABLE vm_mode TO vitis_admin; - GRANT SELECT ON TABLE vm_mode TO vitis_user; - REVOKE ALL ON TABLE vm_mode_rolname FROM PUBLIC; - REVOKE ALL ON TABLE vm_mode_rolname FROM u_vitis; - GRANT ALL ON TABLE vm_mode_rolname TO u_vitis; - GRANT SELECT ON TABLE vm_mode_rolname TO vitis_user; - GRANT ALL ON TABLE vm_mode_rolname TO vitis_admin; - REVOKE ALL ON TABLE v_mode FROM PUBLIC; - REVOKE ALL ON TABLE v_mode FROM u_vitis; - GRANT ALL ON TABLE v_mode TO u_vitis; - GRANT ALL ON TABLE v_mode TO vitis_admin; - GRANT SELECT ON TABLE v_mode TO vitis_user; - REVOKE ALL ON TABLE v_ra_members_group FROM PUBLIC; - REVOKE ALL ON TABLE v_ra_members_group FROM u_vitis; - GRANT ALL ON TABLE v_ra_members_group TO u_vitis; - GRANT ALL ON TABLE v_ra_members_group TO vitis_admin; - GRANT SELECT ON TABLE v_ra_members_group TO vitis_user; - REVOKE ALL ON TABLE vm_section FROM PUBLIC; - REVOKE ALL ON TABLE vm_section FROM u_vitis; - GRANT ALL ON TABLE vm_section TO u_vitis; - GRANT ALL ON TABLE vm_section TO vitis_admin; - GRANT SELECT ON TABLE vm_section TO vitis_user; - REVOKE ALL ON TABLE vm_tab FROM PUBLIC; - REVOKE ALL ON TABLE vm_tab FROM u_vitis; - GRANT ALL ON TABLE vm_tab TO u_vitis; - GRANT SELECT ON TABLE vm_tab TO vitis_user; - GRANT ALL ON TABLE vm_tab TO vitis_admin; - REVOKE ALL ON TABLE v_section FROM PUBLIC; - REVOKE ALL ON TABLE v_section FROM u_vitis; - GRANT ALL ON TABLE v_section TO u_vitis; - GRANT ALL ON TABLE v_section TO vitis_admin; - GRANT SELECT ON TABLE v_section TO vitis_user; - REVOKE ALL ON TABLE v_tab FROM PUBLIC; - REVOKE ALL ON TABLE v_tab FROM u_vitis; - GRANT ALL ON TABLE v_tab TO u_vitis; - GRANT ALL ON TABLE v_tab TO vitis_admin; - GRANT SELECT ON TABLE v_tab TO vitis_user; - REVOKE ALL ON TABLE v_user FROM PUBLIC; - REVOKE ALL ON TABLE v_user FROM u_vitis; - GRANT ALL ON TABLE v_user TO u_vitis; - GRANT ALL ON TABLE v_user TO vitis_admin; - GRANT SELECT,UPDATE ON TABLE v_user TO vitis_user; - REVOKE ALL ON TABLE v_user_group FROM PUBLIC; - REVOKE ALL ON TABLE v_user_group FROM u_vitis; - GRANT ALL ON TABLE v_user_group TO u_vitis; - GRANT ALL ON TABLE v_user_group TO vitis_admin; - GRANT SELECT ON TABLE v_user_group TO vitis_user; - REVOKE ALL ON TABLE vm_application FROM PUBLIC; - REVOKE ALL ON TABLE vm_application FROM u_vitis; - GRANT ALL ON TABLE vm_application TO u_vitis; - GRANT ALL ON TABLE vm_application TO vitis_admin; - GRANT SELECT ON TABLE vm_application TO vitis_user; - REVOKE ALL ON TABLE vm_module FROM PUBLIC; - REVOKE ALL ON TABLE vm_module FROM u_vitis; - GRANT ALL ON TABLE vm_module TO u_vitis; - GRANT ALL ON TABLE vm_module TO vitis_admin; - GRANT SELECT ON TABLE vm_module TO vitis_user; - REVOKE ALL ON TABLE vm_string FROM PUBLIC; - REVOKE ALL ON TABLE vm_string FROM u_vitis; - GRANT ALL ON TABLE vm_string TO u_vitis; - GRANT SELECT ON TABLE vm_string TO vitis_user; - GRANT ALL ON TABLE vm_string TO vitis_admin; - REVOKE ALL ON TABLE vm_table_button FROM PUBLIC; - REVOKE ALL ON TABLE vm_table_button FROM u_vitis; - GRANT ALL ON TABLE vm_table_button TO u_vitis; - GRANT SELECT ON TABLE vm_table_button TO vitis_user; - GRANT ALL ON TABLE vm_table_button TO vitis_admin; - REVOKE ALL ON TABLE vm_table_field FROM PUBLIC; - REVOKE ALL ON TABLE vm_table_field FROM u_vitis; - GRANT ALL ON TABLE vm_table_field TO u_vitis; - GRANT ALL ON TABLE vm_table_field TO vitis_user; - GRANT SELECT,INSERT,DELETE,UPDATE ON TABLE vm_table_field TO vitis_admin; - ]]> - </code> - - </query> - <query> - <type>update</type> - <version>2016.02.00</version> - <code> - <![CDATA[ - -- Frédéric le 15/07/2016 15:21 - UPDATE s_vitis.vm_table_button SET event = 'deleteUsers()' WHERE tab_id = (select tab_id from s_vitis.vm_tab where name = 'vitis_users') AND label_id = 'vitis_6'; - ]]> - </code> - - </query> - <query> - <type>update</type> - <version>2016.03.00</version> - <code> - <![CDATA[ - ]]> - </code> - - </query> - <query> - <type>update</type> - <version>2016.04.00</version> - <code> - <![CDATA[ - ]]> - </code> - - </query> - <query> - <type>update</type> - <version>2016.05.00</version> - <code> - <![CDATA[ - ]]> - </code> - - </query> - <query> - <type>update</type> - <version>2017.01.00</version> - <code> - <![CDATA[ - -- Anthony le 24/01/2017 à 10:20 - CREATE OR REPLACE FUNCTION s_vitis.insertJointure(arrayJointure text, value1 varchar(100), tableSchema varchar(255),jointureTable varchar(255), key1 varchar(255), key2 varchar(255)) RETURNS VOID AS $BODY$ DECLARE item varchar(255); request text; BEGIN FOREACH item IN ARRAY string_to_array(arrayJointure, '|') LOOP request = 'INSERT INTO '|| tableSchema ||'.'|| jointureTable ||' ('|| key1 ||', '|| key2 ||')VALUES('; IF pg_typeof(value1)::text = 'integer' THEN request = request || value1 || ', '; ELSE request = request || '''' || value1 || ''', '; END IF; IF pg_typeof(item)::text = 'integer' THEN request = request || item || ');'; ELSE request = request || '''' || item || ''');'; END IF; EXECUTE request; END LOOP; RETURN; END $BODY$ LANGUAGE 'plpgsql'; - ALTER FUNCTION s_vitis.insertjointure(text, character varying, character varying, character varying, character varying, character varying) OWNER TO u_vitis; - CREATE OR REPLACE FUNCTION s_vitis.wabinsertstate( schemametier character varying, tablestatus character varying, statusname character varying, progress integer) RETURNS void AS $BODY$ DECLARE request text; rowData integer; Id integer; BEGIN EXECUTE 'SELECT status_id FROM ' || schemaMetier || '.' || tableStatus || ' WHERE name = '''||statusName||''';' INTO rowData; IF rowData IS NOT NULL THEN RAISE NOTICE '%', rowData;request = 'UPDATE ' || schemaMetier || '.' || tableStatus || ' SET progress = '|| progress ||' WHERE name = '''||statusName||''';'; ELSE EXECUTE 'SELECT MAX(status_id) FROM '||schemaMetier||'.'||tableStatus|| ';' INTO Id; IF Id IS NOT NULL THEN RAISE NOTICE '%', Id; Id:= Id + 1; else Id:=1; RAISE NOTICE '%', Id;end if;request = 'INSERT INTO ' || schemaMetier || '.' || tableStatus || ' (status_id, name, progress) VALUES (' || Id || ',''' || statusName|| ''', ' || progress || ');'; END IF; RAISE NOTICE '%', request;EXECUTE request; RETURN; END $BODY$ LANGUAGE plpgsql VOLATILE COST 100; - ALTER FUNCTION s_vitis.wabinsertstate(character varying, character varying, character varying, integer) OWNER TO u_vitis; - -- Armand le 30/01/2017 à 10:00 - CREATE OR REPLACE VIEW s_vitis.v_section AS SELECT vm_section.tab_id, vm_section.section_id, vm_section.event, vm_section.index, vm_translation.translation AS label, vm_translation.lang, vm_section.name, vm_section.template, vm_section.ressource_id, vm_section.module AS module_name, vm_tab.name AS tab_name, vm_tab.mode_id FROM s_vitis.vm_section LEFT JOIN s_vitis.vm_translation ON vm_section.label_id::text = vm_translation.translation_id::text LEFT JOIN s_vitis.vm_tab ON vm_section.tab_id::text = vm_tab.tab_id::text; - ALTER TABLE s_vitis.v_section OWNER TO u_vitis; - REVOKE ALL ON TABLE s_vitis.v_section FROM PUBLIC; - REVOKE ALL ON TABLE s_vitis.v_section FROM u_vitis; - GRANT ALL ON TABLE s_vitis.v_section TO u_vitis; - GRANT ALL ON TABLE s_vitis.v_section TO vitis_admin; - GRANT SELECT ON TABLE s_vitis.v_section TO vitis_user; - -- Sébastien le 01/02/2017 à 12:33 - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Section Mode du mode Configuration', 'vitis_81'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_81', 'fr', 'Modes'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_81', 'en', 'Modes'); - INSERT INTO s_vitis.vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_81', 'modes', 2, 'loadModes', (select tab_id from s_vitis.vm_tab where name = 'vitis_configuration'), 'workspaceListTpl.html', 'vitis/modes', 'vitis'); - UPDATE s_vitis.vm_section SET index = 3 WHERE name = 'version' and label_id = 'vitis_76' and tab_id = (select tab_id from s_vitis.vm_tab where name = 'vitis_configuration'); - UPDATE s_vitis.vm_section SET index = 4 WHERE name = 'phpinfo' and label_id = 'vitis_77' and tab_id = (select tab_id from s_vitis.vm_tab where name = 'vitis_configuration'); - -- Armand le 15/02/2017 à 11:40 - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Titre section websocket pour configuration', 'vitis_82'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_82', 'fr', 'Websocket'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_82', 'en', 'Websocket'); - INSERT INTO s_vitis.vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_82', 'websocket', 4, 'Javascript:reloadWebsocketStatus', (select tab_id from s_vitis.vm_tab where name = 'vitis_configuration'), 'modules/vitis/templates/websocketConfigurationTpl.html', NULL, 'vitis'); - -- Armand le 31/03/2017 à 11:40 - REVOKE ALL ON TABLE s_vitis.vm_table_field FROM vitis_user; - REVOKE ALL ON TABLE s_vitis.vm_table_field FROM vitis_admin; - GRANT SELECT ON TABLE s_vitis.vm_table_field TO vitis_user; - GRANT ALL ON TABLE s_vitis.vm_table_field TO vitis_admin; - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.01.01</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.01.02</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.01.03</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.01.04</version> - <code> - <![CDATA[ - -- Armand le 20/06/2017 à 18h ajout de la table feature_style - CREATE TABLE IF NOT EXISTS s_vitis.feature_style(feature_style_id SERIAL NOT NULL,draw_color VARCHAR(50),draw_outline_color VARCHAR(50),draw_size VARCHAR(50),draw_dash VARCHAR(50),draw_symbol VARCHAR(50),text_font VARCHAR(50),text_color VARCHAR(50),text_outline_color VARCHAR(50),text_size VARCHAR(50),text_outline_size VARCHAR(50),text_offset_x VARCHAR(50),text_offset_y VARCHAR(50),text_rotation VARCHAR(50),text_text VARCHAR(255),feature_type VARCHAR(255),PRIMARY KEY (feature_style_id)); - ALTER TABLE s_vitis.feature_style owner TO u_vitis; - GRANT ALL ON table s_vitis.feature_style TO u_vitis; - GRANT SELECT ON TABLE s_vitis.feature_style TO vitis_user; - GRANT ALL ON table s_vitis.feature_style TO vitis_admin; - -- Armand le 27/07/2017 à 18h restriction des droits de vitis_user pour des raisons de sécurité - REVOKE ALL ON TABLE s_vitis."user" FROM vitis_user; - REVOKE ALL ON TABLE s_vitis."user_group" FROM vitis_user; - CREATE OR REPLACE FUNCTION s_vitis.is_vitis_admin() RETURNS boolean AS $total$ declare total boolean; BEGIN SELECT(SELECT count(*) FROM information_schema.applicable_roles WHERE role_name='vitis_admin') > 0 INTO total; RETURN total; END; $total$ LANGUAGE plpgsql; - CREATE OR REPLACE VIEW s_vitis.v_user AS SELECT "user".user_id, "user".login, "user".name, "user".email, "user".company, "user".department, "user".ip_constraint, domain.domain, "user".domain_id, "user".last_connection, "user".restriction, CASE WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user|vitis_admin'::text OR array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_admin|vitis_user'::text THEN 'admin'::text WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user'::text THEN 'user'::text ELSE ''::text END AS role FROM s_vitis."user" LEFT JOIN s_vitis.domain ON "user".domain_id = domain.domain_id WHERE "user".login = "current_user"() OR s_vitis.is_vitis_admin(); - CREATE OR REPLACE RULE delete_v_user AS ON DELETE TO s_vitis.v_user DO INSTEAD DELETE FROM s_vitis."user" WHERE "user".user_id = old.user_id; - CREATE OR REPLACE RULE insert_v_user AS ON INSERT TO s_vitis.v_user DO INSTEAD INSERT INTO s_vitis."user" (user_id, login, domain_id, name, email, company, department, ip_constraint, restriction) VALUES (new.user_id, new.login, new.domain_id, new.name, new.email, new.company, new.department, new.ip_constraint, new.restriction); - DROP RULE update_v_user ON s_vitis.v_user; - CREATE OR REPLACE RULE update_v_user_u AS ON UPDATE TO s_vitis.v_user DO INSTEAD UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department WHERE (new.name = "current_user"() or s_vitis.is_vitis_admin()) AND "user".user_id = new.user_id; - CREATE OR REPLACE RULE update_v_user_a AS ON UPDATE TO s_vitis.v_user WHERE s_vitis.is_vitis_admin() DO INSTEAD UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, ip_constraint = new.ip_constraint, restriction = new.restriction WHERE (new.name = "current_user"() or s_vitis.is_vitis_admin()) AND "user".user_id = new.user_id; - CREATE OR REPLACE VIEW s_vitis.v_user_group_by_rights AS SELECT user_group.user_id, user_group.group_id FROM s_vitis.user_group LEFT JOIN s_vitis."user" ON user_group.user_id = "user".user_id LEFT JOIN s_vitis."group" ON "group".group_id = user_group.group_id WHERE "user".login::name::text = "current_user"()::text OR s_vitis.is_vitis_admin(); - ALTER TABLE s_vitis.v_user_group_by_rights OWNER TO u_vitis; - GRANT ALL ON TABLE s_vitis.v_user_group_by_rights TO u_vitis; - GRANT ALL ON TABLE s_vitis.v_user_group_by_rights TO vitis_admin; - GRANT SELECT ON TABLE s_vitis.v_user_group_by_rights TO vitis_user; - CREATE OR REPLACE RULE update_v_user_group_by_rights AS ON DELETE TO s_vitis.v_user_group_by_rights DO INSTEAD DELETE FROM s_vitis.user_group WHERE user_group.group_id = old.group_id; - CREATE OR REPLACE RULE insert_v_user_group_by_rights AS ON INSERT TO s_vitis.v_user_group_by_rights DO INSTEAD INSERT INTO s_vitis.user_group (user_id, group_id) VALUES (new.user_id, new.group_id); - DROP RULE IF EXISTS update_v_user_a ON s_vitis.v_user; - DROP RULE IF EXISTS update_v_user_u ON s_vitis.v_user; - CREATE OR REPLACE RULE update_v_user AS ON UPDATE TO s_vitis.v_user DO INSTEAD (UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department WHERE NOT s_vitis.is_vitis_admin() AND new.login::name = "current_user"() AND "user".user_id = new.user_id; UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, ip_constraint = new.ip_constraint, restriction = new.restriction WHERE s_vitis.is_vitis_admin() AND "user".user_id = new.user_id); - -- Armand 02/08/2017: donne le droit d'édition sur last_connection - CREATE OR REPLACE RULE update_v_user AS ON UPDATE TO s_vitis.v_user DO INSTEAD (UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, last_connection = new.last_connection WHERE NOT s_vitis.is_vitis_admin() AND new.login::name = "current_user"() AND "user".user_id = new.user_id; UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, ip_constraint = new.ip_constraint, domain_id = new.domain_id, last_connection = new.last_connection, restriction = new.restriction WHERE s_vitis.is_vitis_admin() AND "user".user_id = new.user_id); - -- Armand 02/08/2017: correction bug: un utilisateur simple peut changer le nom, l'email la company, le departement et le last_connection d'un autre utilisateur si il passe un user_id dans les paramètres à changer - CREATE OR REPLACE RULE update_v_user AS ON UPDATE TO s_vitis.v_user DO INSTEAD( UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, last_connection = new.last_connection WHERE NOT s_vitis.is_vitis_admin() AND new.login::name = "current_user"() AND "user".user_id = (SELECT user_id FROM s_vitis."user" WHERE login = "current_user"()); UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, ip_constraint = new.ip_constraint, domain_id = new.domain_id, last_connection = new.last_connection, restriction = new.restriction WHERE s_vitis.is_vitis_admin() AND "user".user_id = new.user_id;); - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.02.00</version> - <code> - <![CDATA[ - -- Laurent le 01/08/2017 à 12h Creation de fonction générique pour récupérer l'utilisateur qui créé ou met à jour un enregistrement - CREATE OR REPLACE FUNCTION s_vitis.insert_author_date() RETURNS trigger AS $BODY$ BEGIN NEW.author = current_user; NEW.create_date = now(); RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; - ALTER FUNCTION s_vitis.insert_author_date() OWNER TO u_vitis; - CREATE OR REPLACE FUNCTION s_vitis.update_modifier_date() RETURNS trigger AS $BODY$ BEGIN NEW.modifier = current_user; NEW.update_date = now(); RETURN NEW; END;$BODY$ LANGUAGE plpgsql VOLATILE COST 100; - ALTER FUNCTION s_vitis.update_modifier_date() OWNER TO u_vitis; - -- Armand 31/08/2017: correction bug: quand un administrateur met à jour les groupes d'un utilisateur, il pert lui même les groupes qu'il a enlevé à l'utilisateur - CREATE OR REPLACE RULE update_v_user_group_by_rights AS ON DELETE TO s_vitis.v_user_group_by_rights DO INSTEAD DELETE FROM s_vitis.user_group WHERE user_group.group_id = old.group_id AND user_group.user_id = old.user_id; - --Yoann 12/09/2017: attribution de la séquence s_vitis.seq_common aux champs user_id(table user) et group_id (table group) - ALTER TABLE s_vitis."user" ALTER COLUMN user_id SET DEFAULT nextval('s_vitis.seq_common'::regclass); - ALTER TABLE s_vitis."group" ALTER COLUMN group_id SET DEFAULT nextval('s_vitis.seq_common'::regclass); - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.02.01</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.02.02</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.02.03</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.02.04</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.03.00</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2017.04.00</version> - <code> - <![CDATA[ - ALTER FUNCTION s_vitis.is_vitis_admin() OWNER TO u_vitis; - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2018.01.00</version> - <code> - <![CDATA[ - ALTER TABLE s_vitis."user" ADD CONSTRAINT check_u_vitis CHECK (name::text != 'u_vitis'::text) - ALTER TABLE s_vitis."user" ADD CONSTRAINT check_postgres CHECK (name::text != 'postgres'::text) - -- Armand 06/02/2018 15:31 - ALTER TABLE s_vitis.domain ALTER COLUMN password TYPE character varying(255); - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2018.02.00</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2018.02.01</version> - <code> - <![CDATA[ - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2018.03.00</version> - <code> - <![CDATA[ - --anthony 05/04/2018 10:36 - DROP INDEX IF EXISTS s_vitis.index_vm_translation_lang; - CREATE INDEX index_vm_translation_lang ON s_vitis.vm_translation (lang); - DROP INDEX IF EXISTS s_vitis.index_vm_translation; - CREATE INDEX index_vm_translation ON s_vitis.vm_translation (translation_id); - -- Armand 13/06/2018 17h59 ajout de CREATEROLE à u_vitis pour que l'on puisse modifier les privilèges - ALTER USER u_vitis WITH CREATEROLE - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2018.04.00</version> - <code> - <![CDATA[ - -- Frédéric 15/06/2018 09:15 - ALTER TABLE s_vitis.user ADD COLUMN dataencrypt boolean DEFAULT FALSE; - ALTER TABLE s_vitis.user ADD COLUMN secretkey character varying(100); - CREATE OR REPLACE VIEW s_vitis.v_user AS SELECT "user".user_id, "user".login, "user".name, "user".email, "user".company, "user".department, "user".ip_constraint, domain.domain, "user".domain_id, "user".last_connection, "user".restriction, CASE WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user|vitis_admin'::text OR array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_admin|vitis_user'::text THEN 'admin'::text WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user'::text THEN 'user'::text ELSE ''::text END AS role, dataencrypt, secretkey FROM s_vitis."user" LEFT JOIN s_vitis.domain ON "user".domain_id = domain.domain_id WHERE "user".login::name = "current_user"() OR s_vitis.is_vitis_admin(); - CREATE OR REPLACE RULE insert_v_user AS ON INSERT TO s_vitis.v_user DO INSTEAD INSERT INTO s_vitis."user" (user_id, login, domain_id, name, email, company, department, ip_constraint, restriction, dataencrypt, secretkey) VALUES (new.user_id, new.login, new.domain_id, new.name, new.email, new.company, new.department, new.ip_constraint, new.restriction, new.dataencrypt, new.secretkey); - CREATE OR REPLACE RULE update_v_user AS ON UPDATE TO s_vitis.v_user DO INSTEAD ( UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, last_connection = new.last_connection WHERE NOT s_vitis.is_vitis_admin() AND new.login::name = "current_user"() AND "user".user_id = (( SELECT user_1.user_id FROM s_vitis."user" user_1 WHERE user_1.login::name = "current_user"())); UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, ip_constraint = new.ip_constraint, domain_id = new.domain_id, last_connection = new.last_connection, restriction = new.restriction, dataencrypt = new.dataencrypt, secretkey = new.secretkey WHERE s_vitis.is_vitis_admin() AND "user".user_id = new.user_id;); - -- Frédéric 21/06/2018 15:47 - CREATE TABLE s_vitis.billinggroup (billinggroup_id SERIAL NOT NULL, billinggroup character varying(50) NOT NULL, description text); - ALTER TABLE ONLY s_vitis.billinggroup ADD CONSTRAINT pk_billinggroup_id PRIMARY KEY (billinggroup_id); - ALTER TABLE s_vitis.billinggroup OWNER TO u_vitis; - GRANT ALL ON TABLE s_vitis.billinggroup TO u_vitis; - GRANT ALL ON TABLE s_vitis.billinggroup TO vitis_admin; - ALTER TABLE s_vitis.user ADD COLUMN billinggroup_id integer; - ALTER TABLE s_vitis."user" ALTER COLUMN billinggroup_id SET DEFAULT -1; - ALTER TABLE s_vitis.user ADD CONSTRAINT fk_billinggroup_id FOREIGN KEY (billinggroup_id) REFERENCES s_vitis.billinggroup (billinggroup_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION; - -- Frédéric 21/06/2018 16:15 - CREATE OR REPLACE VIEW s_vitis.v_user AS SELECT "user".user_id, "user".login, "user".name, "user".email, "user".company, "user".department, "user".ip_constraint, domain.domain, "user".domain_id, "user".last_connection, "user".restriction, CASE WHEN array_to_string(ARRAY (SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user|vitis_admin'::text OR array_to_string(ARRAY (SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_admin|vitis_user'::text THEN 'admin'::text WHEN array_to_string(ARRAY (SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user'::text THEN 'user'::text ELSE ''::text END AS ROLE, dataencrypt, secretkey, "user".billinggroup_id, billinggroup.billinggroup FROM s_vitis."user" LEFT JOIN s_vitis.domain ON "user".domain_id = domain.domain_id LEFT JOIN s_vitis.billinggroup ON "user".billinggroup_id = billinggroup.billinggroup_id WHERE "user".login::name = "current_user"() OR s_vitis.is_vitis_admin(); - CREATE OR REPLACE RULE insert_v_user AS ON INSERT TO s_vitis.v_user DO INSTEAD INSERT INTO s_vitis."user" (user_id, login, domain_id, name, email, company, department, ip_constraint, restriction, dataencrypt, secretkey, billinggroup_id) VALUES (new.user_id, new.login, new.domain_id, new.name, new.email, new.company, new.department, new.ip_constraint, new.restriction, new.dataencrypt, new.secretkey, new.billinggroup_id); - CREATE OR REPLACE RULE update_v_user AS ON UPDATE TO s_vitis.v_user DO INSTEAD ( UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, last_connection = new.last_connection WHERE NOT s_vitis.is_vitis_admin() AND new.login::name = "current_user"() AND "user".user_id = (( SELECT user_1.user_id FROM s_vitis."user" user_1 WHERE user_1.login::name = "current_user"())); UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, ip_constraint = new.ip_constraint, domain_id = new.domain_id, last_connection = new.last_connection, restriction = new.restriction, dataencrypt = new.dataencrypt, secretkey = new.secretkey, billinggroup_id = new.billinggroup_id WHERE s_vitis.is_vitis_admin() AND "user".user_id = new.user_id;); - -- Frédéric 22/06/2018 11:32 - CREATE OR REPLACE VIEW s_vitis.v_billinggroup AS SELECT billinggroup.billinggroup_id, billinggroup.billinggroup, billinggroup.description FROM s_vitis."billinggroup"; - ALTER TABLE s_vitis.v_billinggroup OWNER TO u_vitis; - GRANT ALL ON TABLE s_vitis.v_billinggroup TO vitis_admin; - GRANT SELECT ON TABLE s_vitis.v_billinggroup TO vitis_user; - CREATE OR REPLACE RULE delete_v_billinggroup AS ON DELETE TO s_vitis.v_billinggroup DO INSTEAD DELETE FROM s_vitis."billinggroup" WHERE "billinggroup".billinggroup_id = old.billinggroup_id; - CREATE OR REPLACE RULE insert_v_billinggroup AS ON INSERT TO s_vitis.v_billinggroup DO INSTEAD INSERT INTO s_vitis."billinggroup" (billinggroup_id, billinggroup, description) VALUES (new.billinggroup_id, new.billinggroup, new.description); - CREATE OR REPLACE RULE update_v_billinggroup AS ON UPDATE TO s_vitis.v_billinggroup DO INSTEAD UPDATE s_vitis."billinggroup" SET billinggroup = new.billinggroup, description = new.description WHERE "billinggroup".billinggroup_id = new.billinggroup_id; - -- Frédéric 22/06/2018 14:20 - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('onglet 4 du mode utilisateurs (users) utilisé dans la table vm_tab', 'vitis_83'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Titre section general pour billinggroup', 'vitis_84'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Champ billinggroup_id de la table billinggroup', 'vitis_85'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Champ billinggroup de la table billinggroup', 'vitis_86'); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Champ description de la table billinggroup', 'vitis_87'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_83', 'fr', 'Groupes de facturation'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_83', 'en', 'Billing Groups'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_84', 'fr', 'Général'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_84', 'en', 'General'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_85', 'fr', 'ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_85', 'en', 'ID'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_86', 'fr', 'Groupe'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_86', 'en', 'Group'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_87', 'fr', 'Description'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_87', 'en', 'Description'); - INSERT INTO s_vitis.vm_tab (tab_id, event, index, mode_id, label_id, ressource_id, edit_column, show_column, sorted_by, sorted_dir, name) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'loadList()', 4, 'users', 'vitis_83', 'vitis/billinggroups', 'editSectionForm', 'showSectionForm', 'billinggroup_id', 'DESC', 'vitis_billinggroup'); - INSERT INTO s_vitis.vm_section (section_id, label_id, name, index, event, tab_id, template, ressource_id, module) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'vitis_84', 'general', 1, 'javascript:loadSection', (select tab_id from s_vitis.vm_tab where name = 'vitis_billinggroup'), 'workspaceListTpl.html', NULL, 'vitis'); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'billinggroup_id', true, true, 1, 30, 'right', 'vitis_85', NULL, 'vitis/billinggroups', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_billinggroup')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'billinggroup', true, true, 2, 200, 'left', 'vitis_86', 'vitis', 'vitis/billinggroups', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_billinggroup')); - INSERT INTO s_vitis.vm_table_field (table_field_id, name, sortable, resizeable, index, width, align, label_id, module, ressource_id, template, tab_id) VALUES ((select nextval('s_vitis.seq_vm'::regclass)), 'description', true, true, 3, 800, 'left', 'vitis_87', 'vitis', 'vitis/billinggroups', NULL, (select tab_id from s_vitis.vm_tab where name = 'vitis_billinggroup')); - -- Frédéric 22/06/2018 16:39 - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Button d''ajout de la table billing group', 'vitis_88'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_88', 'fr', 'Ajouter un groupe de facturation'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_88', 'en', 'Add a billing group'); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('add_smallFlexigrid', (select nextval('s_vitis.seq_vm'::regclass)), 'AddSectionForm', 'vitis_88', 'vitis/billinggroups', (select tab_id from s_vitis.vm_tab where name = 'vitis_billinggroup')); - INSERT INTO s_vitis.vm_string (string, string_id) VALUES ('Button de suppression de la table billing group', 'vitis_89'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_89', 'fr', 'Supprimer les groupes de facturation'); - INSERT INTO s_vitis.vm_translation (translation_id, lang, translation) VALUES ('vitis_89', 'en', 'Delete billing groups'); - INSERT INTO s_vitis.vm_table_button (button_class, table_button_id, event, label_id, ressource_id, tab_id) VALUES ('deleteFlexigrid', (select nextval('s_vitis.seq_vm'::regclass)), 'DeleteSelection', 'vitis_89', 'vitis/billinggroups', (select tab_id from s_vitis.vm_tab where name = 'vitis_billinggroup')); - -- Frédéric 25/06/2018 09:44 - CREATE OR REPLACE VIEW s_vitis.v_user AS SELECT "user".user_id, "user".login, "user".name, "user".email, "user".company, "user".department, "user".ip_constraint, domain.domain, "user".domain_id, "user".last_connection, "user".restriction, CASE WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user|vitis_admin'::text OR array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_admin|vitis_user'::text THEN 'admin'::text WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user'::text THEN 'user'::text ELSE ''::text END AS role, dataencrypt, secretkey, "user".billinggroup_id,billinggroup.billinggroup FROM s_vitis."user" LEFT JOIN s_vitis.domain ON "user".domain_id = domain.domain_id LEFT JOIN s_vitis.billinggroup ON "user".billinggroup_id = billinggroup.billinggroup_id WHERE "user".login::name = "current_user"() OR s_vitis.is_vitis_admin(); - -- Frédéric 25/06/2018 11:05 - INSERT INTO s_vitis.billinggroup (billinggroup_id, billinggroup, description) VALUES (-1, 'default', ''); - - -- Frédéric le 20/07/2018 15:30 - ALTER TABLE s_vitis."user" ADD COLUMN timezone_id character varying(40) DEFAULT 'Europe/Paris' NOT NULL; - DROP VIEW s_vitis.v_user; - ALTER TABLE s_vitis.user ALTER COLUMN last_connection TYPE timestamp with time zone; - CREATE OR REPLACE VIEW s_vitis.v_user AS SELECT "user".user_id, "user".login, "user".name, "user".email, "user".company, "user".department, "user".ip_constraint, domain.domain, "user".domain_id, "user".last_connection, "user".restriction, CASE WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user|vitis_admin'::text OR array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_admin|vitis_user'::text THEN 'admin'::text WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user'::text THEN 'user'::text ELSE ''::text END AS role, dataencrypt, secretkey, "user".billinggroup_id,billinggroup.billinggroup FROM s_vitis."user" LEFT JOIN s_vitis.domain ON "user".domain_id = domain.domain_id LEFT JOIN s_vitis.billinggroup ON "user".billinggroup_id = billinggroup.billinggroup_id WHERE "user".login::name = "current_user"() OR s_vitis.is_vitis_admin(); - ALTER TABLE s_vitis.v_user OWNER TO u_vitis; - GRANT ALL ON TABLE s_vitis.v_user TO vitis_admin; - GRANT SELECT, UPDATE ON TABLE s_vitis.v_user TO vitis_user; - CREATE OR REPLACE RULE delete_v_user AS ON DELETE TO s_vitis.v_user DO INSTEAD DELETE FROM s_vitis."user" WHERE "user".user_id = old.user_id; - CREATE OR REPLACE RULE insert_v_user AS ON INSERT TO s_vitis.v_user DO INSTEAD INSERT INTO s_vitis."user" (user_id, login, domain_id, name, email, company, department, ip_constraint, restriction, dataencrypt, secretkey, billinggroup_id) VALUES (new.user_id, new.login, new.domain_id, new.name, new.email, new.company, new.department, new.ip_constraint, new.restriction, new.dataencrypt, new.secretkey, new.billinggroup_id); - CREATE OR REPLACE RULE update_v_user AS ON UPDATE TO s_vitis.v_user DO INSTEAD ( UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, last_connection = new.last_connection WHERE NOT s_vitis.is_vitis_admin() AND new.login::name = "current_user"() AND "user".user_id = (( SELECT user_1.user_id FROM s_vitis."user" user_1 WHERE user_1.login::name = "current_user"())); UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, ip_constraint = new.ip_constraint, domain_id = new.domain_id, last_connection = new.last_connection, restriction = new.restriction, dataencrypt = new.dataencrypt, secretkey = new.secretkey, billinggroup_id = new.billinggroup_id WHERE s_vitis.is_vitis_admin() AND "user".user_id = new.user_id;); - - -- Frédéric le 20/07/2018 16:40 - CREATE TABLE s_vitis.rt_formatdate (formatdate_id character varying(11) NOT NULL, formatdate character varying(100)); - ALTER TABLE s_vitis.rt_formatdate OWNER TO u_vitis; - GRANT ALL ON TABLE s_vitis.rt_formatdate TO vitis_admin; - GRANT SELECT ON TABLE s_vitis.rt_formatdate TO vitis_user; - ALTER TABLE ONLY s_vitis.rt_formatdate ADD CONSTRAINT pk_formatdate_id PRIMARY KEY (formatdate_id); - INSERT INTO s_vitis.rt_formatdate (formatdate_id, formatdate) VALUES ('MM-DD-YYYY','Américain'); - INSERT INTO s_vitis.rt_formatdate (formatdate_id, formatdate) VALUES ('YYYY-MM-DDT','ISO 8601'); - INSERT INTO s_vitis.rt_formatdate (formatdate_id, formatdate) VALUES ('DD-MM-YYYY','Européen'); - - ALTER TABLE s_vitis.user ADD COLUMN formatdate_id character varying(11) DEFAULT 'YYYY-MM-DDT'; - ALTER TABLE s_vitis.user ADD CONSTRAINT fk_formatdate_id FOREIGN KEY (formatdate_id) REFERENCES s_vitis.rt_formatdate (formatdate_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION; - - -- Anthony le 23/07/2018 09:20 - ALTER TABLE s_vitis.user ADD COLUMN phone varchar(50); - ALTER TABLE s_vitis.user ADD COLUMN acceptnotification boolean DEFAULT FALSE; - CREATE OR REPLACE VIEW s_vitis.v_user AS SELECT "user".user_id, "user".login, "user".name, "user".email, "user".company, "user".department, "user".ip_constraint, domain.domain, "user".domain_id, "user".last_connection, "user".restriction, CASE WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user|vitis_admin'::text OR array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_admin|vitis_user'::text THEN 'admin'::text WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user'::text THEN 'user'::text ELSE ''::text END AS role, dataencrypt, secretkey, "user".billinggroup_id ,billinggroup.billinggroup, "user".phone, "user".acceptnotification FROM s_vitis."user" LEFT JOIN s_vitis.domain ON "user".domain_id = domain.domain_id LEFT JOIN s_vitis.billinggroup ON "user".billinggroup_id = billinggroup.billinggroup_id WHERE "user".login::name = "current_user"() OR s_vitis.is_vitis_admin(); - CREATE OR REPLACE RULE insert_v_user AS ON INSERT TO s_vitis.v_user DO INSTEAD INSERT INTO s_vitis."user" (user_id, login, domain_id, name, email, company, department, ip_constraint, restriction, dataencrypt, secretkey, billinggroup_id, phone, acceptnotification) VALUES (new.user_id, new.login, new.domain_id, new.name, new.email, new.company, new.department, new.ip_constraint, new.restriction, new.dataencrypt, new.secretkey, new.billinggroup_id, new.phone, new.acceptnotification); - CREATE OR REPLACE RULE update_v_user AS ON UPDATE TO s_vitis.v_user DO INSTEAD ( UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, last_connection = new.last_connection, phone = new.phone, acceptnotification = new.acceptnotification WHERE NOT s_vitis.is_vitis_admin() AND new.login::name = "current_user"() AND "user".user_id = (( SELECT user_1.user_id FROM s_vitis."user" user_1 WHERE user_1.login::name = "current_user"())); UPDATE s_vitis."user" SET name = new.name, email = new.email, phone = new.phone, acceptnotification = new.acceptnotification, company = new.company, department = new.department, ip_constraint = new.ip_constraint, domain_id = new.domain_id, last_connection = new.last_connection, restriction = new.restriction, dataencrypt = new.dataencrypt, secretkey = new.secretkey, billinggroup_id = new.billinggroup_id, phone = new.phone, acceptnotification = new.acceptnotification WHERE s_vitis.is_vitis_admin() AND "user".user_id = new.user_id; ); - - -- Frédéric le 23/07/2018 10:43 - CREATE OR REPLACE VIEW s_vitis.v_user AS SELECT "user".user_id, "user".login, "user".name, "user".email, "user".company, "user".department, "user".ip_constraint, domain.domain, "user".domain_id, "user".last_connection, "user".restriction, CASE WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user|vitis_admin'::text OR array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_admin|vitis_user'::text THEN 'admin'::text WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user'::text THEN 'user'::text ELSE ''::text END AS role, dataencrypt, secretkey, "user".billinggroup_id ,billinggroup.billinggroup, "user".phone, "user".acceptnotification, "user".timezone_id, "user".formatdate_id FROM s_vitis."user" LEFT JOIN s_vitis.domain ON "user".domain_id = domain.domain_id LEFT JOIN s_vitis.billinggroup ON "user".billinggroup_id = billinggroup.billinggroup_id WHERE "user".login::name = "current_user"() OR s_vitis.is_vitis_admin(); - CREATE OR REPLACE RULE insert_v_user AS ON INSERT TO s_vitis.v_user DO INSTEAD INSERT INTO s_vitis."user" (user_id, login, domain_id, name, email, company, department, ip_constraint, restriction, dataencrypt, secretkey, billinggroup_id, phone, acceptnotification, timezone_id, formatdate_id) VALUES (new.user_id, new.login, new.domain_id, new.name, new.email, new.company, new.department, new.ip_constraint, new.restriction, new.dataencrypt, new.secretkey, new.billinggroup_id, new.phone, new.acceptnotification, new.timezone_id, new.formatdate_id); - CREATE OR REPLACE RULE update_v_user AS ON UPDATE TO s_vitis.v_user DO INSTEAD ( UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, last_connection = new.last_connection, phone = new.phone, acceptnotification = new.acceptnotification WHERE NOT s_vitis.is_vitis_admin() AND new.login::name = "current_user"() AND "user".user_id = (( SELECT user_1.user_id FROM s_vitis."user" user_1 WHERE user_1.login::name = "current_user"())); UPDATE s_vitis."user" SET name = new.name, email = new.email, phone = new.phone, acceptnotification = new.acceptnotification, company = new.company, department = new.department, ip_constraint = new.ip_constraint, domain_id = new.domain_id, last_connection = new.last_connection, restriction = new.restriction, dataencrypt = new.dataencrypt, secretkey = new.secretkey, billinggroup_id = new.billinggroup_id, phone = new.phone, acceptnotification = new.acceptnotification, timezone_id = new.timezone_id, formatdate_id = new.formatdate_id WHERE s_vitis.is_vitis_admin() AND "user".user_id = new.user_id; ); - - -- Frédéric le 23/07/2018 16:44 - UPDATE s_vitis.vm_table_field SET template = NULL WHERE tab_id = (select tab_id from s_vitis.vm_tab where name = 'vitis_users') AND name = 'last_connection'; - - -- Frédéric le 26/07/2018 10:25 - CREATE OR REPLACE VIEW s_vitis.v_user AS SELECT "user".user_id, "user".login, "user".name, "user".email, "user".company, "user".department, "user".ip_constraint, domain.domain, "user".domain_id, "user".last_connection, "user".restriction, CASE WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user|vitis_admin'::text OR array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_admin|vitis_user'::text THEN 'admin'::text WHEN array_to_string(ARRAY( SELECT pg_group.groname FROM pg_group JOIN pg_roles ON pg_roles.oid = ANY (pg_group.grolist) WHERE "user".login::name = pg_roles.rolname AND (pg_group.groname = 'vitis_admin'::name OR pg_group.groname = 'vitis_user'::name)), '|'::text) = 'vitis_user'::text THEN 'user'::text ELSE ''::text END AS role, "user".dataencrypt, "user".secretkey, "user".billinggroup_id, billinggroup.billinggroup, "user".phone, "user".acceptnotification, "user".timezone_id, "user".formatdate_id, rt_formatdate.formatdate FROM s_vitis."user" LEFT JOIN s_vitis.domain ON "user".domain_id = domain.domain_id LEFT JOIN s_vitis.billinggroup ON "user".billinggroup_id = billinggroup.billinggroup_id LEFT JOIN s_vitis.rt_formatdate ON "user".formatdate_id = rt_formatdate.formatdate_id WHERE "user".login::name = "current_user"() OR s_vitis.is_vitis_admin(); - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2018.04.01</version> - <code> - <![CDATA[ - -- Sofian le 30/08/2018 à 09:32 - CREATE OR REPLACE RULE update_v_user AS ON UPDATE TO s_vitis.v_user DO INSTEAD ( UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, last_connection = new.last_connection, phone = new.phone, acceptnotification = new.acceptnotification WHERE NOT s_vitis.is_vitis_admin() AND new.login::name = "current_user"() AND "user".user_id = ( (SELECT user_1.user_id FROM s_vitis."user" user_1 WHERE user_1.login::name = "current_user"())); UPDATE s_vitis."user" SET name = new.name, email = new.email, company = new.company, department = new.department, ip_constraint = new.ip_constraint, domain_id = new.domain_id, last_connection = new.last_connection, restriction = new.restriction, dataencrypt = new.dataencrypt, secretkey = new.secretkey, billinggroup_id = new.billinggroup_id, phone = new.phone, acceptnotification = new.acceptnotification, timezone_id = new.timezone_id, formatdate_id = new.formatdate_id WHERE s_vitis.is_vitis_admin() AND "user".user_id = new.user_id; ); - ]]> - </code> - </query> - <query> - <type>update</type> - <version>2018.05.00</version> - <code> - <![CDATA[ - -- Armand le 11/09/2018 à 11:35 création de la fonction s_vitis.format_date pour transformer un timestamp en fonction du format d'affichage des dates lié à l'utilisateur - CREATE OR REPLACE FUNCTION s_vitis.format_date(input_date TIMESTAMP) RETURNS TEXT AS $$ BEGIN RETURN to_char(input_date, (SELECT formatdate_id || ' HH24:MI:SS' as "formatdate" from s_vitis.user WHERE login = "current_user"())); END; $$ LANGUAGE PLPGSQL; - ALTER FUNCTION s_vitis.format_date(TIMESTAMP) OWNER TO u_vitis; - ]]> - </code> - </query> - </queriesCollection> -</sqlQueries> diff --git a/update.bat b/update.bat deleted file mode 100644 index 46ef323f0223fbdc2a151c7c4b1395ee786ca135..0000000000000000000000000000000000000000 --- a/update.bat +++ /dev/null @@ -1,10 +0,0 @@ -@echo off -title Update Vitis App -echo Update Vitis App - -call utils/update_tree.bat - -cd client/conf -call grunt - -pause diff --git a/utils/copy_hooks.sh b/utils/copy_hooks.sh deleted file mode 100755 index f5bed2f2552ef3440e7e9589197c0922a1875927..0000000000000000000000000000000000000000 --- a/utils/copy_hooks.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# -# -# Script de mise à jour des hooks client -# -# -# - - -if [ -d "githooks" ]; then - if [ -d "../.git/hooks" ]; then - cp -f githooks/* ../.git/hooks/ - fi -fi diff --git a/utils/get_deps.sh b/utils/get_deps.sh deleted file mode 100755 index 92b0273980ef5ae8db6eea7268fd3a5c406243b9..0000000000000000000000000000000000000000 --- a/utils/get_deps.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# -# Récupère l'ensemble des dépendances depuis conf/_install/dependency.xml -# Nécessite xmllint : sudo apt install libxml2-utils -# -# -# -# - - -if [ "../conf/_install/dependency.xml" ]; then - - let depsCount=$(xmllint --xpath 'count(//dependenciesCollection/dependency/name)' ../conf/_install/dependency.xml) - declare -A aDeps - vitisVersion=master - - for (( i=1; i <= $depsCount; i++ )); do - - sName="$(xmllint --xpath 'string(//dependenciesCollection/dependency['$i']/name)' ../conf/_install/dependency.xml)" - sVersion="$(xmllint --xpath 'string(//dependenciesCollection/dependency['$i']/version)' ../conf/_install/dependency.xml)" - sNature="$(xmllint --xpath 'string(//dependenciesCollection/dependency['$i']/nature)' ../conf/_install/dependency.xml)" - - if [ $sName == "vitis" ]; then - vitisVersion=$sVersion - fi - if [ $sNature == "modules" ] || [ $sNature == "web_services" ] || [ $sName == "vitis" ]; then - aDeps[$i, name]=$sName - aDeps[$i, version]=$sVersion - aDeps[$i, nature]=$sNature - fi - - done - - echo "[INFO] dependencies:" - echo "vitis : $vitisVersion" - for (( i=1; i <= $depsCount; i++ )); do - - echo "name: ${aDeps[$i, name]}" - echo "version: ${aDeps[$i, version]}" - - done - - export vitisVersion - export depsCount - export aDeps -else - echo "[ERROR] ../conf/_install/dependency.xml not found" -fi diff --git a/utils/githooks/post-merge b/utils/githooks/post-merge deleted file mode 100755 index 548e6ae56f6a55c2d1acab88308e336c06e71616..0000000000000000000000000000000000000000 --- a/utils/githooks/post-merge +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# -# Hook qui permet de pull toutes les dépendances -# quand on fait un pull sur l'application -# -# -# -# -# - -echo "****** Post-merge Hook ******" -echo "****** Pull subtrees ******" -echo "$(pwd)" - -if [ -d "$(pwd)/utils" ]; then - cd utils - ./pull_subtrees.sh -fi diff --git a/utils/githooks/pre-push b/utils/githooks/pre-push deleted file mode 100755 index 50401f9e2df8033763628124e1445afe66e9bad5..0000000000000000000000000000000000000000 --- a/utils/githooks/pre-push +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# -# Hook qui permet de push toutes les dépendances -# quand on fait un push sur l'application -# -# -# -# -# - -remote="$1" -url="$2" -if [ $remote != $url ]; then - - echo "****** Pre-push Hook ******" - echo "****** Push subtrees ******" - if [ -d "$(pwd)/utils" ]; then - cd utils - ./push_subtrees.sh - fi -fi diff --git a/utils/init_subtrees.sh b/utils/init_subtrees.sh deleted file mode 100755 index 7f9c2abf14978552d1ae88ca6b9b119d51c71578..0000000000000000000000000000000000000000 --- a/utils/init_subtrees.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# -# -# Script d'initialisation d'un dépot vMap versionné sous git -# Initislise l'ensemble des dépendances sous forme de subtrees -# -# Nécessite xmllint : sudo apt install libxml2-utils -# - - -APP_NAME="vmap" - -# Récupère la liste des dépendances -. ./get_deps.sh - -cd .. -if [ -d "$(pwd)/client" ]; then - rm client -fi -if [ -d "$(pwd)/vas" ]; then - rm vas -fi -if [ -d "$(pwd)/src" ]; then - git rm -r src - git commit -a -m "Reset sources" -fi -mkdir src - -if [[ $depsCount > 0 ]]; then - - # Vitis - echo "---- Init vitis ----" - git subtree add --squash -m "add subtree" --prefix src/vitis "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" $vitisVersion - - echo "---- Init conf ----" - git subtree add --squash -m "add subtree" --prefix src/closure "git@gitlab.veremes.net:Development/vitis_apps/sources/closure.git" master - - # Modules - for (( i=1; i <= $depsCount; i++ )); do - if [ ${aDeps[$i, nature]} == "modules" ]; then - echo "---- Init ${aDeps[$i, name]} : ${aDeps[$i, version]}----" - - # Ajoute le dépôt - git subtree add --squash -m "add subtree" --prefix src/${aDeps[$i, name]} "git@gitlab.veremes.net:Development/vitis_apps/sources/${aDeps[$i, name]}.git" ${aDeps[$i, version]} - fi - done - -fi diff --git a/utils/init_symlinks.sh b/utils/init_symlinks.sh deleted file mode 100755 index c98ed30e162c2d81c8b90e5b6755bb5602941b5e..0000000000000000000000000000000000000000 --- a/utils/init_symlinks.sh +++ /dev/null @@ -1,129 +0,0 @@ -#!/bin/bash -# -# -# Script d'initialisation d'un dépot vMap versionné sous git -# -# Split repo -# git subtree split -P module/ -b module_split_branch -# -# Add subtree -# git subtree add --prefix vmap "git@gitlab.veremes.net:Development/vitis_apps/sources/Vitis.git" master -# -# - -echo -n "Existing app path (path/empty)? " -read APP_EXISTING_PATH - -# Récupère la liste des dépendances -. ./get_deps.sh - -cd .. - -# Vitis -echo "---- Link vitis ----" -if ! [ -e "$(pwd)/client" ]; then - echo "---- Link vitis 2 ----" - ln -rsf src/vitis/client client -fi -if ! [ -e "$(pwd)/vas" ]; then - ln -rsf src/vitis/vas vas -fi - -# Conf -echo "---- Link conf ----" -if ! [ -e "src/vitis/client/conf" ]; then - ln -rsf conf src/vitis/client/conf -fi -if ! [ -e "conf/closure" ]; then - ln -rsf src/closure/conf conf/closure -fi - -# Modules -if [[ $depsCount > 0 ]]; then - for (( i=1; i <= $depsCount; i++ )); do - if [ ${aDeps[$i, nature]} == "modules" ]; then - if [ ${aDeps[$i, name]:0:7} == "module_" ]; then - module=${aDeps[$i, name]:7} - echo "---- Link module_${module} ----" - if [ -d "$(pwd)/src/module_${module}/module" ]; then - if ! [ -e "src/vitis/client/modules/${module}" ]; then - ln -rsf src/module_${module}/module src/vitis/client/modules/${module} - fi - fi - if [ -d "$(pwd)/src/module_${module}/web_service/ws" ]; then - if ! [ -e "src/vitis/vas/rest/ws/${module}" ]; then - ln -rsf src/module_${module}/web_service/ws src/vitis/vas/rest/ws/${module} - fi - fi - if [ -d "$(pwd)/src/module_${module}/web_service/conf" ]; then - if ! [ -e "src/vitis/vas/rest/conf/${module}" ]; then - ln -rsf src/module_${module}/web_service/conf src/vitis/vas/rest/conf/${module} - fi - fi - if [ -d "$(pwd)/src/module_${module}/web_service/sql" ]; then - if ! [ -e "src/vitis/vas/sql/${module}" ]; then - ln -rsf src/module_${module}/web_service/sql src/vitis/vas/sql/${module} - fi - fi - if [ -d "$(pwd)/src/module_${module}/web_service/class" ]; then - for class_dir in $( ls "$(pwd)/src/module_${module}/web_service/class"); do - if [ -d "$(pwd)/src/module_${module}/web_service/class/${class_dir}" ]; then - echo "---- Link module_${module}/${class_dir} ----" - if ! [ -e "src/vitis/vas/rest/class/${class_dir}" ]; then - ln -rsf src/module_${module}/web_service/class/${class_dir} src/vitis/vas/rest/class/${class_dir} - fi - fi - done - fi - fi - fi - done - - # Utilisation d'une install déjà existante - if [ -d "${APP_EXISTING_PATH}" ]; then - echo "---- Link exixting app ${APP_EXISTING_PATH} ----" - - declare -a existing_folders_path=("vas/server" - "vas/log" - "vas/public" - "vas/shared" - "vas/tmp" - "vas/upload" - "vas/ws_data") - for folder_path in "${existing_folders_path[@]}"; do - if [ -d "${APP_EXISTING_PATH}/$folder_path" ]; then - echo "copy $folder_path" - cp -Rf "${APP_EXISTING_PATH}/$folder_path" "$(pwd)/$folder_path" - chmod 777 -R "$(pwd)/$folder_path" - fi - done - - declare -a existing_files_path=("client/conf/properties.json" - "vas/rest/conf/properties.inc" - "vas/rest/conf/properties_domain.inc" - "vas/rest/conf/properties_post.inc" - "vas/rest/conf/properties_server.inc" - "vas/rest/conf/version.inc" - "vas/rest/.htaccess") - for file_path in "${existing_files_path[@]}"; do - if [ -f "${APP_EXISTING_PATH}/$file_path" ]; then - echo "copy $file_path" - cp -f "${APP_EXISTING_PATH}/$file_path" "$(pwd)/$file_path" - fi - done - - for properties_dir in $( ls "${APP_EXISTING_PATH}/vas/rest/conf"); do - if [ -d "${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}" ]; then - if [ -d "$(pwd)/vas/rest/conf/${properties_dir}" ]; then - for properties_file in $( ls "${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}"); do - # if [ ${properties_file:0:10}=="properties" || ${properties_file}=="version.inc" ]; then - if [[ $properties_file == "properties"* ]] || [[ $properties_file == "version.inc" ]]; then - echo "copy vas/rest/conf/${properties_dir}/${properties_file}" - cp -f "${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}/${properties_file}" "$(pwd)/vas/rest/conf/${properties_dir}/${properties_file}" - fi - done - fi - fi - done - fi -fi diff --git a/utils/pull_subtrees.sh b/utils/pull_subtrees.sh deleted file mode 100755 index c2793f2ee9ad6e0f53da243fb1b6d26dd9baa20b..0000000000000000000000000000000000000000 --- a/utils/pull_subtrees.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash -# -# -# Script d'initialisation d'un dépot vMap versionné sous git -# Initislise l'ensemble des dépendances sous forme de subtrees -# -# -# - - -APP_NAME="vmap" - -# Récupère la liste des dépendances -. ./get_deps.sh - -cd .. - -# Vitis -echo "---- Pull vitis ----" -git subtree pull --prefix src/vitis --squash -m "pull subtree" "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" master - -# fichiers à ignorer -git update-index --assume-unchanged conf/properties.json -git update-index --assume-unchanged conf/package.json -git update-index --assume-unchanged src/vitis/vas/rest/.htaccess -git update-index --assume-unchanged src/vitis/vas/rest/conf/properties.inc -git update-index --assume-unchanged src/vitis/vas/rest/conf/properties_domain.inc -git update-index --assume-unchanged src/vitis/vas/rest/conf/properties_post.inc -git update-index --assume-unchanged src/vitis/vas/rest/conf/properties_server.inc -git update-index --assume-unchanged src/vitis/vas/rest/conf/version.inc - -# Modules -if [[ $depsCount > 0 ]]; then - for (( i=1; i <= $depsCount; i++ )); do - if [ ${aDeps[$i, nature]} == "modules" ]; then - echo "---- Pull ${aDeps[$i, name]} ----" - - # Ajoute le dépôt - git subtree pull --prefix src/${aDeps[$i, name]} --squash -m "pull subtree" "git@gitlab.veremes.net:Development/vitis_apps/sources/${aDeps[$i, name]}.git" master - # fichiers à ignorer - git update-index --assume-unchanged src/${aDeps[$i, name]}/web_service/conf/properties.inc - git update-index --assume-unchanged src/${aDeps[$i, name]}/web_service/conf/properties_server.inc - git update-index --assume-unchanged src/${aDeps[$i, name]}/web_service/conf/version.inc - fi - done -fi diff --git a/utils/push_subtrees.sh b/utils/push_subtrees.sh deleted file mode 100755 index b4949ea2dca1465c2cc0282d59442c158d7138e1..0000000000000000000000000000000000000000 --- a/utils/push_subtrees.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# -# -# Script d'initialisation d'un dépot vMap versionné sous git -# Initislise l'ensemble des dépendances sous forme de subtrees -# -# -# - - -APP_NAME="vmap" - -# Récupère la liste des dépendances -. ./get_deps.sh - -cd .. - -# Vitis -echo "---- Push vitis ----" -git subtree push --prefix src/vitis "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" master - -# Modules -if [[ $depsCount > 0 ]]; then - for (( i=1; i <= $depsCount; i++ )); do - if [ ${aDeps[$i, nature]} == "modules" ]; then - echo "---- Push ${aDeps[$i, name]} ----" - - # Push le dépôt - - { # 'try' block - git subtree push --prefix src/${aDeps[$i, name]} "git@gitlab.veremes.net:Development/vitis_apps/sources/${aDeps[$i, name]}.git" master - } || { # 'catch' block - echo "could not push ${aDeps[$i, name]}" - } - fi - done -fi diff --git a/utils/utils/copy_hooks.bat b/utils/utils/copy_hooks.bat deleted file mode 100644 index a24ac68b0f099047b546b33d77a4fab3d99c0247..0000000000000000000000000000000000000000 --- a/utils/utils/copy_hooks.bat +++ /dev/null @@ -1,3 +0,0 @@ - - -robocopy "githooks" "../.git/hooks" /E /NFL /NDL /NJH /NJS /nc /ns /np diff --git a/utils/utils/copy_hooks.sh b/utils/utils/copy_hooks.sh deleted file mode 100755 index f5bed2f2552ef3440e7e9589197c0922a1875927..0000000000000000000000000000000000000000 --- a/utils/utils/copy_hooks.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# -# -# Script de mise à jour des hooks client -# -# -# - - -if [ -d "githooks" ]; then - if [ -d "../.git/hooks" ]; then - cp -f githooks/* ../.git/hooks/ - fi -fi diff --git a/utils/utils/get_deps.sh b/utils/utils/get_deps.sh deleted file mode 100755 index 0a26177f9d9a4d746b39799eff421477c4d6ebd8..0000000000000000000000000000000000000000 --- a/utils/utils/get_deps.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# -# Récupère l'ensemble des dépendances depuis conf/_install/dependency.xml -# -# -# -# - -if [ "../conf/_install/dependency.xml" ]; then - - declare -A aDeps - vitisVersion=master - depsCount=0 - dependencies=($(cat "../conf/_install/dependency.xml" | tr -d '\040\011\012\015' | grep -oP '<dependency>([\s\S]*?)<\/dependency>')) - - for i in ${!dependencies[*]}; do - - sName=$(grep -oP '(?<=name>)[^<]+' <<< ${dependencies[$i]}) - sVersion=$(grep -oP '(?<=version>)[^<]+' <<< ${dependencies[$i]}) - sNature=$(grep -oP '(?<=nature>)[^<]+' <<< ${dependencies[$i]}) - - if [ $sName == "vitis" ]; then - vitisVersion=$sVersion - fi - if [ $sNature == "modules" ] || [ $sNature == "web_services" ] || [ $sName == "vitis" ]; then - aDeps[$i, name]=$sName - aDeps[$i, version]=$sVersion - aDeps[$i, nature]=$sNature - let depsCount++ - fi - - done - - echo "[INFO] dependencies:" - echo "vitis : $vitisVersion" - for i in ${!dependencies[*]}; do - echo "(${aDeps[$i, nature]}) ${aDeps[$i, name]} : ${aDeps[$i, version]}" - done - echo "depsCount : ${depsCount}" - - export vitisVersion - export depsCount - export aDeps - -else - echo "[ERROR] ../conf/_install/dependency.xml not found" -fi diff --git a/utils/utils/githooks/post-merge b/utils/utils/githooks/post-merge deleted file mode 100755 index 45b38b216aa67e69223d8bea9440665e898168f2..0000000000000000000000000000000000000000 --- a/utils/utils/githooks/post-merge +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# -# Hook qui permet de pull toutes les dépendances -# quand on fait un pull sur l'application -# -# -# -# -# - -echo "****** Post-merge Hook ******" -echo "****** Pull ******" -# echo "****** Pull subtrees ******" -# echo "$(pwd)" -# -# if [ -d "$(pwd)/utils" ]; then -# cd utils -# ./pull_subtrees.sh -# fi diff --git a/utils/utils/githooks/pre-push b/utils/utils/githooks/pre-push deleted file mode 100755 index c5e4e9536803f05a55dce10289d9bd9299350a7d..0000000000000000000000000000000000000000 --- a/utils/utils/githooks/pre-push +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# -# Hook qui permet de push toutes les dépendances -# quand on fait un push sur l'application -# -# -# -# -# - -remote="$1" -url="$2" -if [ $remote != $url ]; then - - echo "****** Pre-push Hook ******" - echo "****** Push ******" - # echo "****** Push subtrees ******" - # if [ -d "$(pwd)/utils" ]; then - # cd utils - # ./push_subtrees.sh - # fi -fi diff --git a/utils/utils/init_subtrees.sh b/utils/utils/init_subtrees.sh deleted file mode 100755 index 7f9c2abf14978552d1ae88ca6b9b119d51c71578..0000000000000000000000000000000000000000 --- a/utils/utils/init_subtrees.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# -# -# Script d'initialisation d'un dépot vMap versionné sous git -# Initislise l'ensemble des dépendances sous forme de subtrees -# -# Nécessite xmllint : sudo apt install libxml2-utils -# - - -APP_NAME="vmap" - -# Récupère la liste des dépendances -. ./get_deps.sh - -cd .. -if [ -d "$(pwd)/client" ]; then - rm client -fi -if [ -d "$(pwd)/vas" ]; then - rm vas -fi -if [ -d "$(pwd)/src" ]; then - git rm -r src - git commit -a -m "Reset sources" -fi -mkdir src - -if [[ $depsCount > 0 ]]; then - - # Vitis - echo "---- Init vitis ----" - git subtree add --squash -m "add subtree" --prefix src/vitis "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" $vitisVersion - - echo "---- Init conf ----" - git subtree add --squash -m "add subtree" --prefix src/closure "git@gitlab.veremes.net:Development/vitis_apps/sources/closure.git" master - - # Modules - for (( i=1; i <= $depsCount; i++ )); do - if [ ${aDeps[$i, nature]} == "modules" ]; then - echo "---- Init ${aDeps[$i, name]} : ${aDeps[$i, version]}----" - - # Ajoute le dépôt - git subtree add --squash -m "add subtree" --prefix src/${aDeps[$i, name]} "git@gitlab.veremes.net:Development/vitis_apps/sources/${aDeps[$i, name]}.git" ${aDeps[$i, version]} - fi - done - -fi diff --git a/utils/utils/init_symlinks.sh b/utils/utils/init_symlinks.sh deleted file mode 100755 index 562c7ddb343ad70e85c86d8300080d6eb2c7f7fa..0000000000000000000000000000000000000000 --- a/utils/utils/init_symlinks.sh +++ /dev/null @@ -1,159 +0,0 @@ -#!/bin/bash -# -# -# Script d'initialisation d'un dépot vMap versionné sous git -# -# Split repo -# git subtree split -P module/ -b module_split_branch -# -# Add subtree -# git subtree add --prefix vmap "git@gitlab.veremes.net:Development/vitis_apps/sources/Vitis.git" master -# -# - -echo -n "Existing app path (path/empty)? " -read APP_EXISTING_PATH - -# Récupère la liste des dépendances -. ./get_deps.sh - -cd .. - -# Supprime les anciens symlinks -if [ -d "client" ]; then - rm -Rf client -fi -if [ -d "vas" ]; then - rm -Rf vas -fi -find src/vitis/client -type l -delete -find src/vitis/vas/sql -type l -delete -find src/vitis/vas/rest -type l -delete - -# Vitis -echo "---- Link vitis ----" -if ! [ -e "$(pwd)/client" ]; then - - mkdir client - mkdir client/javascript - mkdir client/modules - ln -rsf src/vitis/client/css client/css - ln -rsf src/vitis/client/forms client/forms - ln -rsf src/vitis/client/images client/images - ln -rsf src/vitis/client/javascript/app client/javascript/app - ln -rsf src/vitis/client/javascript/externs client/javascript/externs - ln -rsf src/vitis/client/javascript/require client/javascript/require - ln -rsf src/vitis/client/lang client/lang - ln -rsf src/vitis/client/less client/less - ln -rsf src/vitis/client/modules/vitis client/modules/vitis - ln -rsf src/vitis/client/templates client/templates - ln -rsf src/vitis/client/.htaccess client/.htaccess - ln -rsf src/vitis/client/index.html client/index.html -fi -if ! [ -e "$(pwd)/vas" ]; then - - mkdir vas - mkdir vas/rest - mkdir vas/rest/ws - ln -rsf src/vitis/vas/doc vas/doc - ln -rsf src/vitis/vas/rest/class vas/rest/class - ln -rsf src/vitis/vas/rest/inc vas/rest/inc - ln -rsf src/vitis/vas/rest/ws/vitis vas/rest/ws/vitis - ln -rsf src/vitis/vas/rest/index.phtml vas/rest/index.phtml - ln -rsf src/vitis/vas/rest/index.vhtml vas/rest/index.vhtml - ln -rsf src/vitis/vas/sql vas/sql - ln -rsf src/vitis/vas/util vas/util -fi - -# Conf -echo "---- Link conf ----" -if ! [ -e "src/vitis/client/conf" ]; then - # ln -rsf conf client/conf - - mkdir client/conf - for elem in $( ls "conf"); do - if [[ $elem != 'properties.json' ]]; then - if [[ -d "conf/${elem}" || -f "conf/${elem}" ]]; then - echo "---- Link conf/$elem" - ln -rsf conf/$elem client/conf/$elem - fi - fi - done -fi -if ! [ -e "conf/closure" ]; then - ln -rsf src/closure/conf conf/closure -fi - -# Modules -if [[ $depsCount > 0 ]]; then - for (( i=1; i <= $depsCount; i++ )); do - if [ ${aDeps[$i, nature]} == "modules" ]; then - if [ ${aDeps[$i, name]:0:7} == "module_" ]; then - module=${aDeps[$i, name]:7} - echo "---- Link module_${module} ----" - if [ -d "$(pwd)/src/module_${module}/module" ]; then - if ! [ -e "src/vitis/client/modules/${module}" ]; then - ln -rsf src/module_${module}/module client/modules/${module} - fi - fi - if [ -d "$(pwd)/src/module_${module}/web_service/ws" ]; then - if ! [ -e "src/vitis/vas/rest/ws/${module}" ]; then - ln -rsf src/module_${module}/web_service/ws vas/rest/ws/${module} - fi - fi - if [ -d "$(pwd)/src/module_${module}/web_service/sql" ]; then - if ! [ -e "src/vitis/vas/sql/${module}" ]; then - ln -rsf src/module_${module}/web_service/sql vas/sql/${module} - fi - fi - if [ -d "$(pwd)/src/module_${module}/web_service/class" ]; then - for class_dir in $( ls "$(pwd)/src/module_${module}/web_service/class"); do - if [ -d "$(pwd)/src/module_${module}/web_service/class/${class_dir}" ]; then - echo "---- Link module_${module}/${class_dir} ----" - if ! [ -e "src/vitis/vas/rest/class/${class_dir}" ]; then - ln -rsf src/module_${module}/web_service/class/${class_dir} vas/rest/class/${class_dir} - fi - fi - done - fi - fi - fi - done - - # Utilisation d'une install déjà existante - if [ -d "${APP_EXISTING_PATH}" ]; then - echo "---- Link exixting app ${APP_EXISTING_PATH} ----" - - declare -a existing_folders_path=("vas/server" - "vas/rest/conf" - "vas/log" - "vas/public" - "vas/shared" - "vas/tmp" - "vas/upload" - "vas/ws_data") - for folder_path in "${existing_folders_path[@]}"; do - if [ -d "${APP_EXISTING_PATH}/$folder_path" ]; then - echo "copy $folder_path" - cp -Rf "${APP_EXISTING_PATH}/$folder_path" "$(pwd)/$folder_path" - chmod 777 -R "$(pwd)/$folder_path" - fi - done - - declare -a existing_files_path=("client/conf/properties.json" - "vas/rest/.htaccess") - for file_path in "${existing_files_path[@]}"; do - if [ -f "${APP_EXISTING_PATH}/$file_path" ]; then - echo "copy $file_path" - cp -f "${APP_EXISTING_PATH}/$file_path" "$(pwd)/$file_path" - fi - done - - for properties_dir in $( ls "${APP_EXISTING_PATH}/vas/rest/conf"); do - if [ -d "${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}" ]; then - echo "copy ${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}/ > $(pwd)/vas/rest/conf/" - cp -Rf "${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}/" "$(pwd)/vas/rest/conf/" - fi - done - fi -fi diff --git a/utils/utils/init_tree.bat b/utils/utils/init_tree.bat deleted file mode 100644 index d8e6956ca21d8e9e7a4d4d46c77657f1153fb8b9..0000000000000000000000000000000000000000 --- a/utils/utils/init_tree.bat +++ /dev/null @@ -1,99 +0,0 @@ -@echo off -title Install Vitis App -setlocal EnableDelayedExpansion - -cd .. - -set /p existing_path="Existing app path: " - -REM Client Dir -echo Create client directory -if exist "client" ( - rmdir /S /Q "client" -) -echo copy client -robocopy "src/vitis/client" "client" /E /NFL /NDL /NJH /NJS /nc /ns /np -echo copy client/conf -robocopy "conf" "client/conf" /E /NFL /NDL /NJH /NJS /nc /ns /np -echo copy client/conf/closure -robocopy "src/closure/conf" "client/conf/closure" /E /NFL /NDL /NJH /NJS /nc /ns /np - -echo Copy client modules -for /d %%g in ("src/module_*") do ( - set x=%%g - echo !x:~7! - if exist "src/%%g/module" ( - echo copy client/modules/!x:~7! - robocopy "src/%%g/module" "client/modules/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) -) - -REM VAS dir -echo Create vas directory -echo Create client directory -if exist "vas" ( - rmdir /S /Q "vas" -) -echo copy vas -robocopy "src/vitis/vas" "vas" /E /NFL /NDL /NJH /NJS /nc /ns /np - -echo Copy vas web_services -for /d %%g in ("src/module_*") do ( - set x=%%g - echo !x:~7! - if exist "src/%%g/web_service/conf" ( - echo copy vas/rest/conf/!x:~7! - robocopy "src/%%g/web_service/conf" "vas/rest/conf/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "src/%%g/web_service/sql" ( - echo copy vas/sql/!x:~7! - robocopy "src/%%g/web_service/sql" "vas/sql/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "src/%%g/web_service/ws" ( - echo copy vas/rest/ws/!x:~7! - robocopy "src/%%g/web_service/ws" "vas/rest/ws/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "src/%%g/web_service/class" ( - echo copy vas/rest/class - robocopy "src/%%g/web_service/class" "vas/rest/class" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "src/%%g/web_service/ws_data" ( - echo copy vas/ws_data - robocopy "src/%%g/web_service/ws_data" "vas/ws_data" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "src/%%g/web_service/public" ( - echo copy vas/public - robocopy "src/%%g/web_service/public" "vas/public" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "src/%%g/web_service/upload" ( - echo copy vas/upload - robocopy "src/%%g/web_service/upload" "vas/upload" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) -) - -REM Copy from existing path -if exist %existing_path% ( - echo copy properties from %existing_path% - - for %%G in (vas\server,vas\rest\conf,vas\log,vas\public,vas\shared,vas\tmp,vas\upload,vas\ws_data) do ( - echo %%G - if exist %existing_path%\%%G ( - echo copy %%G - robocopy "%existing_path%\%%G" "%%G" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - ) - - if exist %existing_path%\client\conf\properties.json ( - echo copy properties.json - robocopy "%existing_path%\client\conf" "client\conf" "properties.json" /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist %existing_path%\vas\rest\.htaccess ( - echo copy .htaccess - robocopy "%existing_path%\vas\rest" "vas\rest" ".htaccess" /NFL /NDL /NJH /NJS /nc /ns /np - ) - - if exist "%existing_path%\vas\rest\conf" ( - echo copy vas\rest\conf - robocopy "%existing_path%\vas\rest\conf" "vas\rest\conf" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) -) diff --git a/utils/utils/pull_subtrees.sh b/utils/utils/pull_subtrees.sh deleted file mode 100755 index 5cac1ba0c4a626761809103e822793ec694068a4..0000000000000000000000000000000000000000 --- a/utils/utils/pull_subtrees.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -# -# -# Script d'initialisation d'un dépot vMap versionné sous git -# Initislise l'ensemble des dépendances sous forme de subtrees -# -# -# - - -APP_NAME="vmap" - -# Récupère la liste des dépendances -. ./get_deps.sh - -cd .. - -# Vitis -echo "---- Pull vitis ----" -git subtree pull --prefix src/vitis --squash -m "pull subtree" "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" $vitisVersion - -# Modules -if [[ $depsCount > 0 ]]; then - for (( i=1; i <= $depsCount; i++ )); do - if [ ${aDeps[$i, nature]} == "modules" ]; then - echo "---- Pull ${aDeps[$i, name]} ----" - - # Ajoute le dépôt - git subtree pull --prefix src/${aDeps[$i, name]} --squash -m "pull subtree" "git@gitlab.veremes.net:Development/vitis_apps/sources/${aDeps[$i, name]}.git" ${aDeps[$i, version]} - fi - done -fi diff --git a/utils/utils/push_subtrees.sh b/utils/utils/push_subtrees.sh deleted file mode 100755 index 18a9d3bdac1f0d8d3f6af3e16af06d7337ddf9f6..0000000000000000000000000000000000000000 --- a/utils/utils/push_subtrees.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# -# -# Script d'initialisation d'un dépot vMap versionné sous git -# Initislise l'ensemble des dépendances sous forme de subtrees -# -# -# - - -APP_NAME="vmap" - -# Récupère la liste des dépendances -. ./get_deps.sh - -cd .. - -# Vitis -echo "---- Push vitis ----" -{ # 'try' block - git subtree push --prefix src/vitis "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" $vitisVersion -} || { # 'catch' block - echo "could not push vitis" -} - -# Modules -if [[ $depsCount > 0 ]]; then - for (( i=1; i <= $depsCount; i++ )); do - if [ ${aDeps[$i, nature]} == "modules" ]; then - echo "---- Push ${aDeps[$i, name]} ----" - - # Push le dépôt - - { # 'try' block - git subtree push --prefix src/${aDeps[$i, name]} "git@gitlab.veremes.net:Development/vitis_apps/sources/${aDeps[$i, name]}.git" ${aDeps[$i, version]} - } || { # 'catch' block - echo "could not push ${aDeps[$i, name]}" - } - fi - done -fi diff --git a/utils/utils/update_tree.bat b/utils/utils/update_tree.bat deleted file mode 100644 index 3c3c5dc356d7cc5922c046ea95f6787f80faa363..0000000000000000000000000000000000000000 --- a/utils/utils/update_tree.bat +++ /dev/null @@ -1,80 +0,0 @@ -@echo off -title Update Vitis tree -echo Update Vitis tree -setlocal EnableDelayedExpansion - -cd utils - -REM Pull repo -"C:\Program Files\Git\bin\sh.exe" --login -i -c "git pull" - -REM Pull subtrees -"C:\Program Files\Git\bin\sh.exe" --login -i -c "./pull_subtrees.sh" - -REM Save important files -if exist "../vas/rest/sql" ( - robocopy "../vas/rest/sql" "../vas/rest/sql_bak" /E /NFL /NDL /NJH /NJS /nc /ns /np -) -if exist "../vas/rest/conf" ( - robocopy "../vas/rest/conf" "../vas/rest/conf_bak" /E /NFL /NDL /NJH /NJS /nc /ns /np -) - -REM Replace Vitis files -for /d %%g in ("../src/vitis/client/*") do ( - set x=%%g - echo copy client/!x! - rmdir /S /Q "../client/!x!" - robocopy "../src/vitis/client/!x!" "../client/!x!" /E /NFL /NDL /NJH /NJS /nc /ns /np -) -for /d %%g in ("../src/vitis/vas/sql") do ( - echo copy vas/sql - rmdir /S /Q "../vas/sql" - robocopy "../src/vitis/vas/sql" "../vas/sql" /E /NFL /NDL /NJH /NJS /nc /ns /np -) -for /d %%g in ("../src/vitis/vas/rest/class") do ( - echo copy vas/rest/class - rmdir /S /Q "../vas/rest/class" - robocopy "../src/vitis/vas/rest/class" "../vas/rest/class" /E /NFL /NDL /NJH /NJS /nc /ns /np -) -for /d %%g in ("../src/vitis/vas/rest/conf") do ( - echo copy vas/rest/conf - robocopy "../src/vitis/vas/rest/conf" "../vas/rest/conf_veremes" /E /NFL /NDL /NJH /NJS /nc /ns /np -) -for /d %%g in ("../src/vitis/vas/rest/inc") do ( - echo copy vas/rest/inc - rmdir /S /Q "../vas/rest/inc" - robocopy "../src/vitis/vas/rest/inc" "../vas/rest/inc" /E /NFL /NDL /NJH /NJS /nc /ns /np -) -for /d %%g in ("../src/vitis/vas/rest/ws") do ( - echo copy vas/rest/ws - rmdir /S /Q "../vas/rest/ws" - robocopy "../src/vitis/vas/rest/ws" "../vas/rest/ws" /E /NFL /NDL /NJH /NJS /nc /ns /np -) - -REM Replace modules files -for /d %%g in ("../src/module_*") do ( - set x=%%g - if exist "../src/%%g/module" ( - echo copy client/modules/!x:~7! - robocopy "../src/%%g/module" "../client/modules/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "../src/%%g/web_service/conf" ( - echo copy vas/rest/conf_veremes/!x:~7! - robocopy "../src/%%g/web_service/conf" "../vas/rest/conf_veremes/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "../src/%%g/web_service/sql" ( - echo copy vas/sql/!x:~7! - robocopy "../src/%%g/web_service/sql" "../vas/sql/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "../src/%%g/web_service/ws" ( - echo copy vas/rest/ws/!x:~7! - robocopy "../src/%%g/web_service/ws" "../vas/rest/ws/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) - if exist "../src/%%g/web_service/class" ( - echo copy vas/rest/class - robocopy "../src/%%g/web_service/class" "../vas/rest/class" /E /NFL /NDL /NJH /NJS /nc /ns /np - ) -) - - -cd .. diff --git a/src/vitis/vas/doc/composer.json b/vas/doc/composer.json similarity index 100% rename from src/vitis/vas/doc/composer.json rename to vas/doc/composer.json diff --git a/src/vitis/vas/doc/composer.lock b/vas/doc/composer.lock similarity index 100% rename from src/vitis/vas/doc/composer.lock rename to vas/doc/composer.lock diff --git a/src/vitis/vas/doc/css/reset.css b/vas/doc/css/reset.css similarity index 100% rename from src/vitis/vas/doc/css/reset.css rename to vas/doc/css/reset.css diff --git a/src/vitis/vas/doc/css/screen.css b/vas/doc/css/screen.css similarity index 100% rename from src/vitis/vas/doc/css/screen.css rename to vas/doc/css/screen.css diff --git a/src/vitis/vas/doc/css/style.css b/vas/doc/css/style.css similarity index 100% rename from src/vitis/vas/doc/css/style.css rename to vas/doc/css/style.css diff --git a/src/vitis/vas/doc/images/gtf_ws.png b/vas/doc/images/gtf_ws.png similarity index 100% rename from src/vitis/vas/doc/images/gtf_ws.png rename to vas/doc/images/gtf_ws.png diff --git a/src/vitis/vas/doc/images/order.png b/vas/doc/images/order.png similarity index 100% rename from src/vitis/vas/doc/images/order.png rename to vas/doc/images/order.png diff --git a/src/vitis/vas/doc/images/overview.png b/vas/doc/images/overview.png similarity index 100% rename from src/vitis/vas/doc/images/overview.png rename to vas/doc/images/overview.png diff --git a/src/vitis/vas/doc/images/rest.png b/vas/doc/images/rest.png similarity index 100% rename from src/vitis/vas/doc/images/rest.png rename to vas/doc/images/rest.png diff --git a/src/vitis/vas/doc/images/throbber.gif b/vas/doc/images/throbber.gif similarity index 100% rename from src/vitis/vas/doc/images/throbber.gif rename to vas/doc/images/throbber.gif diff --git a/src/vitis/vas/doc/images/token.png b/vas/doc/images/token.png similarity index 100% rename from src/vitis/vas/doc/images/token.png rename to vas/doc/images/token.png diff --git a/src/vitis/vas/doc/images/workspace.png b/vas/doc/images/workspace.png similarity index 100% rename from src/vitis/vas/doc/images/workspace.png rename to vas/doc/images/workspace.png diff --git a/src/vitis/vas/doc/index.phtml b/vas/doc/index.phtml similarity index 100% rename from src/vitis/vas/doc/index.phtml rename to vas/doc/index.phtml diff --git a/src/vitis/vas/doc/javascript/backbone-min.js b/vas/doc/javascript/backbone-min.js similarity index 100% rename from src/vitis/vas/doc/javascript/backbone-min.js rename to vas/doc/javascript/backbone-min.js diff --git a/src/vitis/vas/doc/javascript/handlebars-1.0.0.js b/vas/doc/javascript/handlebars-1.0.0.js similarity index 100% rename from src/vitis/vas/doc/javascript/handlebars-1.0.0.js rename to vas/doc/javascript/handlebars-1.0.0.js diff --git a/src/vitis/vas/doc/javascript/handlebars-2.0.0.js b/vas/doc/javascript/handlebars-2.0.0.js similarity index 100% rename from src/vitis/vas/doc/javascript/handlebars-2.0.0.js rename to vas/doc/javascript/handlebars-2.0.0.js diff --git a/src/vitis/vas/doc/javascript/highlight.7.3.pack.js b/vas/doc/javascript/highlight.7.3.pack.js similarity index 100% rename from src/vitis/vas/doc/javascript/highlight.7.3.pack.js rename to vas/doc/javascript/highlight.7.3.pack.js diff --git a/src/vitis/vas/doc/javascript/jquery-1.8.0.min.js b/vas/doc/javascript/jquery-1.8.0.min.js similarity index 100% rename from src/vitis/vas/doc/javascript/jquery-1.8.0.min.js rename to vas/doc/javascript/jquery-1.8.0.min.js diff --git a/src/vitis/vas/doc/javascript/jquery.ba-bbq.min.js b/vas/doc/javascript/jquery.ba-bbq.min.js similarity index 100% rename from src/vitis/vas/doc/javascript/jquery.ba-bbq.min.js rename to vas/doc/javascript/jquery.ba-bbq.min.js diff --git a/src/vitis/vas/doc/javascript/jquery.slideto.min.js b/vas/doc/javascript/jquery.slideto.min.js similarity index 100% rename from src/vitis/vas/doc/javascript/jquery.slideto.min.js rename to vas/doc/javascript/jquery.slideto.min.js diff --git a/src/vitis/vas/doc/javascript/jquery.wiggle.min.js b/vas/doc/javascript/jquery.wiggle.min.js similarity index 100% rename from src/vitis/vas/doc/javascript/jquery.wiggle.min.js rename to vas/doc/javascript/jquery.wiggle.min.js diff --git a/src/vitis/vas/doc/javascript/marked.js b/vas/doc/javascript/marked.js similarity index 100% rename from src/vitis/vas/doc/javascript/marked.js rename to vas/doc/javascript/marked.js diff --git a/src/vitis/vas/doc/javascript/shred.bundle.js b/vas/doc/javascript/shred.bundle.js similarity index 100% rename from src/vitis/vas/doc/javascript/shred.bundle.js rename to vas/doc/javascript/shred.bundle.js diff --git a/src/vitis/vas/doc/javascript/shred/content.js b/vas/doc/javascript/shred/content.js similarity index 100% rename from src/vitis/vas/doc/javascript/shred/content.js rename to vas/doc/javascript/shred/content.js diff --git a/src/vitis/vas/doc/javascript/swagger-oauth.js b/vas/doc/javascript/swagger-oauth.js similarity index 100% rename from src/vitis/vas/doc/javascript/swagger-oauth.js rename to vas/doc/javascript/swagger-oauth.js diff --git a/src/vitis/vas/doc/javascript/swagger-ui.js b/vas/doc/javascript/swagger-ui.js similarity index 100% rename from src/vitis/vas/doc/javascript/swagger-ui.js rename to vas/doc/javascript/swagger-ui.js diff --git a/src/vitis/vas/doc/javascript/swagger-ui.min.js b/vas/doc/javascript/swagger-ui.min.js similarity index 100% rename from src/vitis/vas/doc/javascript/swagger-ui.min.js rename to vas/doc/javascript/swagger-ui.min.js diff --git a/src/vitis/vas/doc/javascript/underscore-min.js b/vas/doc/javascript/underscore-min.js similarity index 100% rename from src/vitis/vas/doc/javascript/underscore-min.js rename to vas/doc/javascript/underscore-min.js diff --git a/src/vitis/vas/doc/javascript/underscore-min.map b/vas/doc/javascript/underscore-min.map similarity index 100% rename from src/vitis/vas/doc/javascript/underscore-min.map rename to vas/doc/javascript/underscore-min.map diff --git a/src/vitis/vas/doc/swagger.php b/vas/doc/swagger.php similarity index 100% rename from src/vitis/vas/doc/swagger.php rename to vas/doc/swagger.php diff --git a/src/vitis/vas/doc/vendor/autoload.php b/vas/doc/vendor/autoload.php similarity index 100% rename from src/vitis/vas/doc/vendor/autoload.php rename to vas/doc/vendor/autoload.php diff --git a/src/vitis/vas/doc/vendor/bin/swagger b/vas/doc/vendor/bin/swagger similarity index 100% rename from src/vitis/vas/doc/vendor/bin/swagger rename to vas/doc/vendor/bin/swagger diff --git a/src/vitis/vas/doc/vendor/composer/ClassLoader.php b/vas/doc/vendor/composer/ClassLoader.php similarity index 100% rename from src/vitis/vas/doc/vendor/composer/ClassLoader.php rename to vas/doc/vendor/composer/ClassLoader.php diff --git a/src/vitis/vas/doc/vendor/composer/LICENSE b/vas/doc/vendor/composer/LICENSE similarity index 100% rename from src/vitis/vas/doc/vendor/composer/LICENSE rename to vas/doc/vendor/composer/LICENSE diff --git a/src/vitis/vas/doc/vendor/composer/autoload_classmap.php b/vas/doc/vendor/composer/autoload_classmap.php similarity index 100% rename from src/vitis/vas/doc/vendor/composer/autoload_classmap.php rename to vas/doc/vendor/composer/autoload_classmap.php diff --git a/src/vitis/vas/doc/vendor/composer/autoload_files.php b/vas/doc/vendor/composer/autoload_files.php similarity index 100% rename from src/vitis/vas/doc/vendor/composer/autoload_files.php rename to vas/doc/vendor/composer/autoload_files.php diff --git a/src/vitis/vas/doc/vendor/composer/autoload_namespaces.php b/vas/doc/vendor/composer/autoload_namespaces.php similarity index 100% rename from src/vitis/vas/doc/vendor/composer/autoload_namespaces.php rename to vas/doc/vendor/composer/autoload_namespaces.php diff --git a/src/vitis/vas/doc/vendor/composer/autoload_psr4.php b/vas/doc/vendor/composer/autoload_psr4.php similarity index 100% rename from src/vitis/vas/doc/vendor/composer/autoload_psr4.php rename to vas/doc/vendor/composer/autoload_psr4.php diff --git a/src/vitis/vas/doc/vendor/composer/autoload_real.php b/vas/doc/vendor/composer/autoload_real.php similarity index 100% rename from src/vitis/vas/doc/vendor/composer/autoload_real.php rename to vas/doc/vendor/composer/autoload_real.php diff --git a/src/vitis/vas/doc/vendor/composer/autoload_static.php b/vas/doc/vendor/composer/autoload_static.php similarity index 100% rename from src/vitis/vas/doc/vendor/composer/autoload_static.php rename to vas/doc/vendor/composer/autoload_static.php diff --git a/src/vitis/vas/doc/vendor/composer/installed.json b/vas/doc/vendor/composer/installed.json similarity index 100% rename from src/vitis/vas/doc/vendor/composer/installed.json rename to vas/doc/vendor/composer/installed.json diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/LICENSE b/vas/doc/vendor/doctrine/annotations/LICENSE similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/LICENSE rename to vas/doc/vendor/doctrine/annotations/LICENSE diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/README.md b/vas/doc/vendor/doctrine/annotations/README.md similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/README.md rename to vas/doc/vendor/doctrine/annotations/README.md diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/composer.json b/vas/doc/vendor/doctrine/annotations/composer.json similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/composer.json rename to vas/doc/vendor/doctrine/annotations/composer.json diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php diff --git a/src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php b/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php rename to vas/doc/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php diff --git a/src/vitis/vas/doc/vendor/doctrine/lexer/LICENSE b/vas/doc/vendor/doctrine/lexer/LICENSE similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/lexer/LICENSE rename to vas/doc/vendor/doctrine/lexer/LICENSE diff --git a/src/vitis/vas/doc/vendor/doctrine/lexer/README.md b/vas/doc/vendor/doctrine/lexer/README.md similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/lexer/README.md rename to vas/doc/vendor/doctrine/lexer/README.md diff --git a/src/vitis/vas/doc/vendor/doctrine/lexer/composer.json b/vas/doc/vendor/doctrine/lexer/composer.json similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/lexer/composer.json rename to vas/doc/vendor/doctrine/lexer/composer.json diff --git a/src/vitis/vas/doc/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php b/vas/doc/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php similarity index 100% rename from src/vitis/vas/doc/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php rename to vas/doc/vendor/doctrine/lexer/lib/Doctrine/Common/Lexer/AbstractLexer.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/.gitignore b/vas/doc/vendor/symfony/finder/.gitignore similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/.gitignore rename to vas/doc/vendor/symfony/finder/.gitignore diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Adapter/AbstractAdapter.php b/vas/doc/vendor/symfony/finder/Adapter/AbstractAdapter.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Adapter/AbstractAdapter.php rename to vas/doc/vendor/symfony/finder/Adapter/AbstractAdapter.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Adapter/AbstractFindAdapter.php b/vas/doc/vendor/symfony/finder/Adapter/AbstractFindAdapter.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Adapter/AbstractFindAdapter.php rename to vas/doc/vendor/symfony/finder/Adapter/AbstractFindAdapter.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Adapter/AdapterInterface.php b/vas/doc/vendor/symfony/finder/Adapter/AdapterInterface.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Adapter/AdapterInterface.php rename to vas/doc/vendor/symfony/finder/Adapter/AdapterInterface.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Adapter/BsdFindAdapter.php b/vas/doc/vendor/symfony/finder/Adapter/BsdFindAdapter.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Adapter/BsdFindAdapter.php rename to vas/doc/vendor/symfony/finder/Adapter/BsdFindAdapter.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Adapter/GnuFindAdapter.php b/vas/doc/vendor/symfony/finder/Adapter/GnuFindAdapter.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Adapter/GnuFindAdapter.php rename to vas/doc/vendor/symfony/finder/Adapter/GnuFindAdapter.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Adapter/PhpAdapter.php b/vas/doc/vendor/symfony/finder/Adapter/PhpAdapter.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Adapter/PhpAdapter.php rename to vas/doc/vendor/symfony/finder/Adapter/PhpAdapter.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/CHANGELOG.md b/vas/doc/vendor/symfony/finder/CHANGELOG.md similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/CHANGELOG.md rename to vas/doc/vendor/symfony/finder/CHANGELOG.md diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Comparator/Comparator.php b/vas/doc/vendor/symfony/finder/Comparator/Comparator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Comparator/Comparator.php rename to vas/doc/vendor/symfony/finder/Comparator/Comparator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Comparator/DateComparator.php b/vas/doc/vendor/symfony/finder/Comparator/DateComparator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Comparator/DateComparator.php rename to vas/doc/vendor/symfony/finder/Comparator/DateComparator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Comparator/NumberComparator.php b/vas/doc/vendor/symfony/finder/Comparator/NumberComparator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Comparator/NumberComparator.php rename to vas/doc/vendor/symfony/finder/Comparator/NumberComparator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Exception/AccessDeniedException.php b/vas/doc/vendor/symfony/finder/Exception/AccessDeniedException.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Exception/AccessDeniedException.php rename to vas/doc/vendor/symfony/finder/Exception/AccessDeniedException.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Exception/AdapterFailureException.php b/vas/doc/vendor/symfony/finder/Exception/AdapterFailureException.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Exception/AdapterFailureException.php rename to vas/doc/vendor/symfony/finder/Exception/AdapterFailureException.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Exception/ExceptionInterface.php b/vas/doc/vendor/symfony/finder/Exception/ExceptionInterface.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Exception/ExceptionInterface.php rename to vas/doc/vendor/symfony/finder/Exception/ExceptionInterface.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Exception/OperationNotPermitedException.php b/vas/doc/vendor/symfony/finder/Exception/OperationNotPermitedException.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Exception/OperationNotPermitedException.php rename to vas/doc/vendor/symfony/finder/Exception/OperationNotPermitedException.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Exception/ShellCommandFailureException.php b/vas/doc/vendor/symfony/finder/Exception/ShellCommandFailureException.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Exception/ShellCommandFailureException.php rename to vas/doc/vendor/symfony/finder/Exception/ShellCommandFailureException.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Expression/Expression.php b/vas/doc/vendor/symfony/finder/Expression/Expression.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Expression/Expression.php rename to vas/doc/vendor/symfony/finder/Expression/Expression.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Expression/Glob.php b/vas/doc/vendor/symfony/finder/Expression/Glob.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Expression/Glob.php rename to vas/doc/vendor/symfony/finder/Expression/Glob.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Expression/Regex.php b/vas/doc/vendor/symfony/finder/Expression/Regex.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Expression/Regex.php rename to vas/doc/vendor/symfony/finder/Expression/Regex.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Expression/ValueInterface.php b/vas/doc/vendor/symfony/finder/Expression/ValueInterface.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Expression/ValueInterface.php rename to vas/doc/vendor/symfony/finder/Expression/ValueInterface.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Finder.php b/vas/doc/vendor/symfony/finder/Finder.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Finder.php rename to vas/doc/vendor/symfony/finder/Finder.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Glob.php b/vas/doc/vendor/symfony/finder/Glob.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Glob.php rename to vas/doc/vendor/symfony/finder/Glob.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/CustomFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/CustomFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/CustomFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/CustomFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/FilePathsIterator.php b/vas/doc/vendor/symfony/finder/Iterator/FilePathsIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/FilePathsIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/FilePathsIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/FilenameFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/FilenameFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/FilenameFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/FilenameFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/FilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/FilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/FilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/FilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/PathFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/PathFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/PathFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/PathFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php b/vas/doc/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php b/vas/doc/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Iterator/SortableIterator.php b/vas/doc/vendor/symfony/finder/Iterator/SortableIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Iterator/SortableIterator.php rename to vas/doc/vendor/symfony/finder/Iterator/SortableIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/LICENSE b/vas/doc/vendor/symfony/finder/LICENSE similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/LICENSE rename to vas/doc/vendor/symfony/finder/LICENSE diff --git a/src/vitis/vas/doc/vendor/symfony/finder/README.md b/vas/doc/vendor/symfony/finder/README.md similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/README.md rename to vas/doc/vendor/symfony/finder/README.md diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Shell/Command.php b/vas/doc/vendor/symfony/finder/Shell/Command.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Shell/Command.php rename to vas/doc/vendor/symfony/finder/Shell/Command.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Shell/Shell.php b/vas/doc/vendor/symfony/finder/Shell/Shell.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Shell/Shell.php rename to vas/doc/vendor/symfony/finder/Shell/Shell.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/SplFileInfo.php b/vas/doc/vendor/symfony/finder/SplFileInfo.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/SplFileInfo.php rename to vas/doc/vendor/symfony/finder/SplFileInfo.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/BsdFinderTest.php b/vas/doc/vendor/symfony/finder/Tests/BsdFinderTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/BsdFinderTest.php rename to vas/doc/vendor/symfony/finder/Tests/BsdFinderTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php b/vas/doc/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php b/vas/doc/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php b/vas/doc/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Expression/ExpressionTest.php b/vas/doc/vendor/symfony/finder/Tests/Expression/ExpressionTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Expression/ExpressionTest.php rename to vas/doc/vendor/symfony/finder/Tests/Expression/ExpressionTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Expression/GlobTest.php b/vas/doc/vendor/symfony/finder/Tests/Expression/GlobTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Expression/GlobTest.php rename to vas/doc/vendor/symfony/finder/Tests/Expression/GlobTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Expression/RegexTest.php b/vas/doc/vendor/symfony/finder/Tests/Expression/RegexTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Expression/RegexTest.php rename to vas/doc/vendor/symfony/finder/Tests/Expression/RegexTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/DummyAdapter.php b/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/DummyAdapter.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/DummyAdapter.php rename to vas/doc/vendor/symfony/finder/Tests/FakeAdapter/DummyAdapter.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/FailingAdapter.php b/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/FailingAdapter.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/FailingAdapter.php rename to vas/doc/vendor/symfony/finder/Tests/FakeAdapter/FailingAdapter.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/NamedAdapter.php b/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/NamedAdapter.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/NamedAdapter.php rename to vas/doc/vendor/symfony/finder/Tests/FakeAdapter/NamedAdapter.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/UnsupportedAdapter.php b/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/UnsupportedAdapter.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/FakeAdapter/UnsupportedAdapter.php rename to vas/doc/vendor/symfony/finder/Tests/FakeAdapter/UnsupportedAdapter.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/FinderTest.php b/vas/doc/vendor/symfony/finder/Tests/FinderTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/FinderTest.php rename to vas/doc/vendor/symfony/finder/Tests/FinderTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/A/B/C/abc.dat b/vas/doc/vendor/symfony/finder/Tests/Fixtures/A/B/C/abc.dat similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/A/B/C/abc.dat rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/A/B/C/abc.dat diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/A/B/ab.dat b/vas/doc/vendor/symfony/finder/Tests/Fixtures/A/B/ab.dat similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/A/B/ab.dat rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/A/B/ab.dat diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/A/a.dat b/vas/doc/vendor/symfony/finder/Tests/Fixtures/A/a.dat similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/A/a.dat rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/A/a.dat diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/B/C/abc.dat.copy b/vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/B/C/abc.dat.copy similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/B/C/abc.dat.copy rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/B/C/abc.dat.copy diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/B/ab.dat.copy b/vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/B/ab.dat.copy similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/B/ab.dat.copy rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/B/ab.dat.copy diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/a.dat.copy b/vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/a.dat.copy similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/a.dat.copy rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/copy/A/a.dat.copy diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/dolor.txt b/vas/doc/vendor/symfony/finder/Tests/Fixtures/dolor.txt similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/dolor.txt rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/dolor.txt diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/ipsum.txt b/vas/doc/vendor/symfony/finder/Tests/Fixtures/ipsum.txt similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/ipsum.txt rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/ipsum.txt diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/lorem.txt b/vas/doc/vendor/symfony/finder/Tests/Fixtures/lorem.txt similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/lorem.txt rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/lorem.txt diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/one/a b/vas/doc/vendor/symfony/finder/Tests/Fixtures/one/a similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/one/a rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/one/a diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/one/b/c.neon b/vas/doc/vendor/symfony/finder/Tests/Fixtures/one/b/c.neon similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/one/b/c.neon rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/one/b/c.neon diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/one/b/d.neon b/vas/doc/vendor/symfony/finder/Tests/Fixtures/one/b/d.neon similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/one/b/d.neon rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/one/b/d.neon diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/r+e.gex[c]a(r)s/dir/bar.dat b/vas/doc/vendor/symfony/finder/Tests/Fixtures/r+e.gex[c]a(r)s/dir/bar.dat similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/r+e.gex[c]a(r)s/dir/bar.dat rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/r+e.gex[c]a(r)s/dir/bar.dat diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/with space/foo.txt b/vas/doc/vendor/symfony/finder/Tests/Fixtures/with space/foo.txt similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Fixtures/with space/foo.txt rename to vas/doc/vendor/symfony/finder/Tests/Fixtures/with space/foo.txt diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/GlobTest.php b/vas/doc/vendor/symfony/finder/Tests/GlobTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/GlobTest.php rename to vas/doc/vendor/symfony/finder/Tests/GlobTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/GnuFinderTest.php b/vas/doc/vendor/symfony/finder/Tests/GnuFinderTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/GnuFinderTest.php rename to vas/doc/vendor/symfony/finder/Tests/GnuFinderTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FilePathsIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/FilePathsIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FilePathsIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/FilePathsIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/FilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/Iterator.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/Iterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/Iterator.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/Iterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php b/vas/doc/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php rename to vas/doc/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/Tests/Shell/CommandTest.php b/vas/doc/vendor/symfony/finder/Tests/Shell/CommandTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/Tests/Shell/CommandTest.php rename to vas/doc/vendor/symfony/finder/Tests/Shell/CommandTest.php diff --git a/src/vitis/vas/doc/vendor/symfony/finder/composer.json b/vas/doc/vendor/symfony/finder/composer.json similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/composer.json rename to vas/doc/vendor/symfony/finder/composer.json diff --git a/src/vitis/vas/doc/vendor/symfony/finder/phpunit.xml.dist b/vas/doc/vendor/symfony/finder/phpunit.xml.dist similarity index 100% rename from src/vitis/vas/doc/vendor/symfony/finder/phpunit.xml.dist rename to vas/doc/vendor/symfony/finder/phpunit.xml.dist diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/.gitignore b/vas/doc/vendor/zircote/swagger-php/.gitignore similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/.gitignore rename to vas/doc/vendor/zircote/swagger-php/.gitignore diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/.travis.yml b/vas/doc/vendor/zircote/swagger-php/.travis.yml similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/.travis.yml rename to vas/doc/vendor/zircote/swagger-php/.travis.yml diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Changelog.md b/vas/doc/vendor/zircote/swagger-php/Changelog.md similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Changelog.md rename to vas/doc/vendor/zircote/swagger-php/Changelog.md diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/Examples.md b/vas/doc/vendor/zircote/swagger-php/Examples/Examples.md similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/Examples.md rename to vas/doc/vendor/zircote/swagger-php/Examples/Examples.md diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/ApiResponse.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/ApiResponse.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/ApiResponse.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/ApiResponse.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/PetController.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/PetController.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/PetController.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/PetController.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/StoreController.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/StoreController.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/StoreController.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/StoreController.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/UserController.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/UserController.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/UserController.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/controllers/UserController.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Category.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Category.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Category.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Category.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Order.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Order.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Order.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Order.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Pet.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Pet.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Pet.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Pet.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Tag.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Tag.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Tag.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/Tag.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/User.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/User.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/User.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/models/User.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/security.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/security.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/security.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/security.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/swagger-v2.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/swagger-v2.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/swagger-v2.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/swagger-v2.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/tags.php b/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/tags.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/tags.php rename to vas/doc/vendor/zircote/swagger-php/Examples/petstore.swagger.io/tags.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/SimplePet.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/SimplePet.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/SimplePet.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/SimplePet.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/SimplePetsController.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/SimplePetsController.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/SimplePetsController.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/SimplePetsController.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/api.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/api.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/api.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-simple/api.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/controllers/PetWithDocsController.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/controllers/PetWithDocsController.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/controllers/PetWithDocsController.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/controllers/PetWithDocsController.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/docs.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/docs.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/docs.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/docs.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/models/ErrorModel.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/models/ErrorModel.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/models/ErrorModel.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/models/ErrorModel.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/models/Pet.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/models/Pet.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/models/Pet.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore-with-external-docs/models/Pet.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/Pet.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/Pet.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/Pet.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/Pet.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/PetsController.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/PetsController.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/PetsController.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/PetsController.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/api.php b/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/api.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/api.php rename to vas/doc/vendor/zircote/swagger-php/Examples/swagger-spec/petstore/api.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/LICENSE-2.0.txt b/vas/doc/vendor/zircote/swagger-php/LICENSE-2.0.txt similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/LICENSE-2.0.txt rename to vas/doc/vendor/zircote/swagger-php/LICENSE-2.0.txt diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/README.md b/vas/doc/vendor/zircote/swagger-php/README.md similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/README.md rename to vas/doc/vendor/zircote/swagger-php/README.md diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/VERSION b/vas/doc/vendor/zircote/swagger-php/VERSION similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/VERSION rename to vas/doc/vendor/zircote/swagger-php/VERSION diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/bin/swagger b/vas/doc/vendor/zircote/swagger-php/bin/swagger similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/bin/swagger rename to vas/doc/vendor/zircote/swagger-php/bin/swagger diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/composer.json b/vas/doc/vendor/zircote/swagger-php/composer.json similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/composer.json rename to vas/doc/vendor/zircote/swagger-php/composer.json diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/docs/Advanced.md b/vas/doc/vendor/zircote/swagger-php/docs/Advanced.md similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/docs/Advanced.md rename to vas/doc/vendor/zircote/swagger-php/docs/Advanced.md diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/docs/Getting-started.md b/vas/doc/vendor/zircote/swagger-php/docs/Getting-started.md similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/docs/Getting-started.md rename to vas/doc/vendor/zircote/swagger-php/docs/Getting-started.md diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/docs/Migrating-to-v2.md b/vas/doc/vendor/zircote/swagger-php/docs/Migrating-to-v2.md similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/docs/Migrating-to-v2.md rename to vas/doc/vendor/zircote/swagger-php/docs/Migrating-to-v2.md diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/docs/Related-projects.md b/vas/doc/vendor/zircote/swagger-php/docs/Related-projects.md similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/docs/Related-projects.md rename to vas/doc/vendor/zircote/swagger-php/docs/Related-projects.md diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/phpunit.xml.dist b/vas/doc/vendor/zircote/swagger-php/phpunit.xml.dist similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/phpunit.xml.dist rename to vas/doc/vendor/zircote/swagger-php/phpunit.xml.dist diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Analyser.php b/vas/doc/vendor/zircote/swagger-php/src/Analyser.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Analyser.php rename to vas/doc/vendor/zircote/swagger-php/src/Analyser.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Analysis.php b/vas/doc/vendor/zircote/swagger-php/src/Analysis.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Analysis.php rename to vas/doc/vendor/zircote/swagger-php/src/Analysis.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/AbstractAnnotation.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/AbstractAnnotation.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/AbstractAnnotation.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/AbstractAnnotation.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Contact.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Contact.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Contact.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Contact.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Definition.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Definition.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Definition.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Definition.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Delete.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Delete.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Delete.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Delete.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/ExternalDocumentation.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/ExternalDocumentation.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/ExternalDocumentation.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/ExternalDocumentation.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Get.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Get.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Get.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Get.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Head.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Head.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Head.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Head.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Header.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Header.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Header.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Header.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Info.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Info.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Info.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Info.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Items.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Items.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Items.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Items.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/License.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/License.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/License.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/License.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Operation.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Operation.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Operation.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Operation.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Options.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Options.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Options.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Options.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Parameter.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Parameter.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Parameter.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Parameter.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Patch.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Patch.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Patch.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Patch.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Path.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Path.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Path.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Path.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Post.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Post.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Post.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Post.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Property.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Property.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Property.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Property.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Put.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Put.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Put.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Put.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Response.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Response.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Response.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Response.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Schema.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Schema.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Schema.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Schema.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/SecurityScheme.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/SecurityScheme.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/SecurityScheme.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/SecurityScheme.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Swagger.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Swagger.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Swagger.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Swagger.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Tag.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Tag.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Tag.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Tag.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Xml.php b/vas/doc/vendor/zircote/swagger-php/src/Annotations/Xml.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Annotations/Xml.php rename to vas/doc/vendor/zircote/swagger-php/src/Annotations/Xml.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Context.php b/vas/doc/vendor/zircote/swagger-php/src/Context.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Context.php rename to vas/doc/vendor/zircote/swagger-php/src/Context.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Logger.php b/vas/doc/vendor/zircote/swagger-php/src/Logger.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Logger.php rename to vas/doc/vendor/zircote/swagger-php/src/Logger.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentDefinitions.php b/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentDefinitions.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentDefinitions.php rename to vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentDefinitions.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentOperations.php b/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentOperations.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentOperations.php rename to vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentOperations.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentParameters.php b/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentParameters.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentParameters.php rename to vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentParameters.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentProperties.php b/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentProperties.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentProperties.php rename to vas/doc/vendor/zircote/swagger-php/src/Processors/AugmentProperties.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/BuildPaths.php b/vas/doc/vendor/zircote/swagger-php/src/Processors/BuildPaths.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/BuildPaths.php rename to vas/doc/vendor/zircote/swagger-php/src/Processors/BuildPaths.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/CleanUnmerged.php b/vas/doc/vendor/zircote/swagger-php/src/Processors/CleanUnmerged.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/CleanUnmerged.php rename to vas/doc/vendor/zircote/swagger-php/src/Processors/CleanUnmerged.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/HandleReferences.php b/vas/doc/vendor/zircote/swagger-php/src/Processors/HandleReferences.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/HandleReferences.php rename to vas/doc/vendor/zircote/swagger-php/src/Processors/HandleReferences.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/InheritProperties.php b/vas/doc/vendor/zircote/swagger-php/src/Processors/InheritProperties.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/InheritProperties.php rename to vas/doc/vendor/zircote/swagger-php/src/Processors/InheritProperties.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/MergeIntoSwagger.php b/vas/doc/vendor/zircote/swagger-php/src/Processors/MergeIntoSwagger.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Processors/MergeIntoSwagger.php rename to vas/doc/vendor/zircote/swagger-php/src/Processors/MergeIntoSwagger.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Serializer.php b/vas/doc/vendor/zircote/swagger-php/src/Serializer.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Serializer.php rename to vas/doc/vendor/zircote/swagger-php/src/Serializer.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/StaticAnalyser.php b/vas/doc/vendor/zircote/swagger-php/src/StaticAnalyser.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/StaticAnalyser.php rename to vas/doc/vendor/zircote/swagger-php/src/StaticAnalyser.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/Util.php b/vas/doc/vendor/zircote/swagger-php/src/Util.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/Util.php rename to vas/doc/vendor/zircote/swagger-php/src/Util.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/src/functions.php b/vas/doc/vendor/zircote/swagger-php/src/functions.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/src/functions.php rename to vas/doc/vendor/zircote/swagger-php/src/functions.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AbstractAnnotationTest.php b/vas/doc/vendor/zircote/swagger-php/tests/AbstractAnnotationTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AbstractAnnotationTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/AbstractAnnotationTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AnalyserTest.php b/vas/doc/vendor/zircote/swagger-php/tests/AnalyserTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AnalyserTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/AnalyserTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AnalysisTest.php b/vas/doc/vendor/zircote/swagger-php/tests/AnalysisTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AnalysisTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/AnalysisTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AugmentDefinitionsTest.php b/vas/doc/vendor/zircote/swagger-php/tests/AugmentDefinitionsTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AugmentDefinitionsTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/AugmentDefinitionsTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AugmentOperationTest.php b/vas/doc/vendor/zircote/swagger-php/tests/AugmentOperationTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AugmentOperationTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/AugmentOperationTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AugmentParameterTest.php b/vas/doc/vendor/zircote/swagger-php/tests/AugmentParameterTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AugmentParameterTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/AugmentParameterTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AugmentPropertiesTest.php b/vas/doc/vendor/zircote/swagger-php/tests/AugmentPropertiesTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/AugmentPropertiesTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/AugmentPropertiesTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/BuildPathsTest.php b/vas/doc/vendor/zircote/swagger-php/tests/BuildPathsTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/BuildPathsTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/BuildPathsTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/CleanUnmergedTest.php b/vas/doc/vendor/zircote/swagger-php/tests/CleanUnmergedTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/CleanUnmergedTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/CleanUnmergedTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/CommandlineInterfaceTest.php b/vas/doc/vendor/zircote/swagger-php/tests/CommandlineInterfaceTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/CommandlineInterfaceTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/CommandlineInterfaceTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ConstantsTest.php b/vas/doc/vendor/zircote/swagger-php/tests/ConstantsTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ConstantsTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/ConstantsTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ContextTest.php b/vas/doc/vendor/zircote/swagger-php/tests/ContextTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ContextTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/ContextTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore-simple.json b/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore-simple.json similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore-simple.json rename to vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore-simple.json diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore-with-external-docs.json b/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore-with-external-docs.json similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore-with-external-docs.json rename to vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore-with-external-docs.json diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore.json b/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore.json similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore.json rename to vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore.json diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore.swagger.io.json b/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore.swagger.io.json similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore.swagger.io.json rename to vas/doc/vendor/zircote/swagger-php/tests/ExamplesOutput/petstore.swagger.io.json diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesTest.php b/vas/doc/vendor/zircote/swagger-php/tests/ExamplesTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ExamplesTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/ExamplesTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Ancestor.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Ancestor.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Ancestor.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Ancestor.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/AncestorWithoutDocBlocks.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/AncestorWithoutDocBlocks.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/AncestorWithoutDocBlocks.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/AncestorWithoutDocBlocks.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Child.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Child.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Child.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Child.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/ChildWithDocBlocks.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/ChildWithDocBlocks.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/ChildWithDocBlocks.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/ChildWithDocBlocks.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Customer.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Customer.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Customer.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/Customer.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/GrandAncestor.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/GrandAncestor.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/GrandAncestor.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/GrandAncestor.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/HelloTrait.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/HelloTrait.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/HelloTrait.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/HelloTrait.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/NestedProperty.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/NestedProperty.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/NestedProperty.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/NestedProperty.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/ThirdPartyAnnotations.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/ThirdPartyAnnotations.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/ThirdPartyAnnotations.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/ThirdPartyAnnotations.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/UsingPhpDoc.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/UsingPhpDoc.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/UsingPhpDoc.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/UsingPhpDoc.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/UsingRefs.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/UsingRefs.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/UsingRefs.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/UsingRefs.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/routes.php b/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/routes.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/Fixtures/routes.php rename to vas/doc/vendor/zircote/swagger-php/tests/Fixtures/routes.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/InheritPropertiesTest.php b/vas/doc/vendor/zircote/swagger-php/tests/InheritPropertiesTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/InheritPropertiesTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/InheritPropertiesTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ItemsTest.php b/vas/doc/vendor/zircote/swagger-php/tests/ItemsTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ItemsTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/ItemsTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/MergeIntoSwaggerTest.php b/vas/doc/vendor/zircote/swagger-php/tests/MergeIntoSwaggerTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/MergeIntoSwaggerTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/MergeIntoSwaggerTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/NestedPropertyTest.php b/vas/doc/vendor/zircote/swagger-php/tests/NestedPropertyTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/NestedPropertyTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/NestedPropertyTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ResponseTest.php b/vas/doc/vendor/zircote/swagger-php/tests/ResponseTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ResponseTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/ResponseTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/SerializerTest.php b/vas/doc/vendor/zircote/swagger-php/tests/SerializerTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/SerializerTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/SerializerTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/StaticAnalyserTest.php b/vas/doc/vendor/zircote/swagger-php/tests/StaticAnalyserTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/StaticAnalyserTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/StaticAnalyserTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/SwaggerTestCase.php b/vas/doc/vendor/zircote/swagger-php/tests/SwaggerTestCase.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/SwaggerTestCase.php rename to vas/doc/vendor/zircote/swagger-php/tests/SwaggerTestCase.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/UtilTest.php b/vas/doc/vendor/zircote/swagger-php/tests/UtilTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/UtilTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/UtilTest.php diff --git a/src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ValidateRelationsTest.php b/vas/doc/vendor/zircote/swagger-php/tests/ValidateRelationsTest.php similarity index 100% rename from src/vitis/vas/doc/vendor/zircote/swagger-php/tests/ValidateRelationsTest.php rename to vas/doc/vendor/zircote/swagger-php/tests/ValidateRelationsTest.php diff --git a/src/vitis/vas/public/studio/default.js b/vas/public/studio/default.js similarity index 100% rename from src/vitis/vas/public/studio/default.js rename to vas/public/studio/default.js diff --git a/src/vitis/vas/rest/.htaccess b/vas/rest/.htaccess similarity index 100% rename from src/vitis/vas/rest/.htaccess rename to vas/rest/.htaccess diff --git a/src/vitis/vas/rest/conf/constants.inc b/vas/rest/conf/constants.inc similarity index 100% rename from src/vitis/vas/rest/conf/constants.inc rename to vas/rest/conf/constants.inc diff --git a/src/vitis/vas/rest/conf/php_conf.inc b/vas/rest/conf/php_conf.inc similarity index 100% rename from src/vitis/vas/rest/conf/php_conf.inc rename to vas/rest/conf/php_conf.inc diff --git a/src/vitis/vas/rest/conf/properties.inc b/vas/rest/conf/properties.inc similarity index 100% rename from src/vitis/vas/rest/conf/properties.inc rename to vas/rest/conf/properties.inc diff --git a/src/vitis/vas/rest/conf/properties_domain.inc b/vas/rest/conf/properties_domain.inc similarity index 100% rename from src/vitis/vas/rest/conf/properties_domain.inc rename to vas/rest/conf/properties_domain.inc diff --git a/src/vitis/vas/rest/conf/properties_post.inc b/vas/rest/conf/properties_post.inc similarity index 100% rename from src/vitis/vas/rest/conf/properties_post.inc rename to vas/rest/conf/properties_post.inc diff --git a/src/vitis/vas/rest/conf/properties_server.inc b/vas/rest/conf/properties_server.inc similarity index 100% rename from src/vitis/vas/rest/conf/properties_server.inc rename to vas/rest/conf/properties_server.inc diff --git a/src/vitis/vas/rest/conf/selected_properties.inc b/vas/rest/conf/selected_properties.inc similarity index 100% rename from src/vitis/vas/rest/conf/selected_properties.inc rename to vas/rest/conf/selected_properties.inc diff --git a/src/vitis/vas/rest/conf/version.inc b/vas/rest/conf/version.inc similarity index 100% rename from src/vitis/vas/rest/conf/version.inc rename to vas/rest/conf/version.inc diff --git a/src/vitis/vas/rest/inc/MetadataAccess.class.inc b/vas/rest/inc/MetadataAccess.class.inc similarity index 100% rename from src/vitis/vas/rest/inc/MetadataAccess.class.inc rename to vas/rest/inc/MetadataAccess.class.inc diff --git a/src/vitis/vas/rest/inc/MetadataAccess.sql.inc b/vas/rest/inc/MetadataAccess.sql.inc similarity index 100% rename from src/vitis/vas/rest/inc/MetadataAccess.sql.inc rename to vas/rest/inc/MetadataAccess.sql.inc diff --git a/src/vitis/vas/rest/index.phtml b/vas/rest/index.phtml similarity index 100% rename from src/vitis/vas/rest/index.phtml rename to vas/rest/index.phtml diff --git a/src/vitis/vas/rest/index.vhtml b/vas/rest/index.vhtml similarity index 100% rename from src/vitis/vas/rest/index.vhtml rename to vas/rest/index.vhtml diff --git a/src/vitis/vas/rest/ws/vitis/Accounts.class.inc b/vas/rest/ws/vitis/Accounts.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Accounts.class.inc rename to vas/rest/ws/vitis/Accounts.class.inc diff --git a/src/module_extraction/storage/Accounts.class.mail.inc b/vas/rest/ws/vitis/Accounts.class.mail.inc old mode 100644 new mode 100755 similarity index 98% rename from src/module_extraction/storage/Accounts.class.mail.inc rename to vas/rest/ws/vitis/Accounts.class.mail.inc index bb977fddef9f8177b50895b88e5973253b4ce0b0..ff03a0740fddd474e82aa2dadb8999e13c8ba028 --- a/src/module_extraction/storage/Accounts.class.mail.inc +++ b/vas/rest/ws/vitis/Accounts.class.mail.inc @@ -1,622 +1,617 @@ -<?php - -$aMail["newUserTitle"] = "Un nouvel utilisateur vient juste de s'inscrire"; -$aMail["newUserTitleAutomated"] = "Vérification de votre adresse mail"; -$aMail["newUserBody"] = '<!-- 1 Column Text + Button : BEGIN --> - <tr> - <td bgcolor="#ffffff" style="padding: 0px; text-align: center;background-color:#8c8c8c; height:50px; margin-bottom:10px;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #FFFFFF; font-weight: normal;">[TITLE]</h1> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #000000; text-align: center;"> - <p style="width:100%; font-weight:bold; text-align: justify; font-size: 20px;">Bonjour [FULLNAME],</p> - <p style="width:100%; text-align: left;font-size: 18px;">Nous vous remercions d\'avoir créé votre compte sur <b>[HOSTNAME]</b>.</p> - <p style="width:100%; text-align: left;font-size: 18px;"><b>Informations sur votre compte :</b></p> - <p style="width:100%; text-align: left;font-size: 18px;">Identifiant : [USERNAME]</p> - <p style="width:100%; text-align: left;font-size: 18px;">Organisme : [COMPANY] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Mail : [MAIL]</p> - <p style="width:100%; text-align: left;font-size: 18px;">Téléphone : [PHONE] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Ip publique fixe : [PUBLIC_IP] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Nom du demandeur : [DEMANDEUR] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Adresse mail du demandeur : [MAIL_DEMANDEUR] </p> - <p style="width:100%; text-align: left;font-size: 18px;">Objet de l\'étude : [STUDY_OBJECT] </p> - <p style="width:100%; text-align: left;font-size: 18px;margin-top: 20px;">Cliquez sur le bouton ci-dessous pour finaliser votre inscription :</p> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 20px; line-height: 20px; color: #555555;"> - <table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" style="margin: auto"> - <tr> - <td style="border-radius: 3px; background: #5cb85c; text-align: center;" class="button-td"> - <a href="[URL]" style="background: #5cb85c; border: 15px solid #5cb85c; font-family: sans-serif; font-size: 18px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 0px; font-weight: bold;" class="button-a"> - <span style="color:#ffffff;">Je confirme mon adresse mail</span> - </a> - </td> - </tr> - </table> - <!-- Button : END --> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; line-height: 20px; color: #000000; text-align: center;"> - <p style="width:100%; text-align: justify;font-size: 18px;">Si vous ne vous êtes pas inscrit(e) sur notre application <b>[HOSTNAME]</b>, ignorez simplement ce message.</p> - </td> - </tr> - <!-- 1 Column Text + Button : END -->'; - -$aMail["confirmationSignUpTitle"] = "Confirmation d'inscription"; -$aMail["genericBody"] = ' - <tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">[MESSAGE]</h1> - </td> - </tr>'; - -$aMail["SignUpOk"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">L\'utilisateur a été ajouté, connectez vous sur la base de données pour lui donner des droits (Defaut: [ROLES])</h1> - </td> - </tr>'; -$aMail["SignUpError"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">L\'utilisateur n\'a pas pu être ajouté consultez les fichiers de log pour plus d\'informations</h1> - </td> - </tr>'; - -$aMail["signUpConfirmation"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal; margin-bottom: 15px;">Votre compte est maintenant activé, vous pouvez vous connecter. Pour avoir accès à plus de fonctionnalités contactez l\'administrateur</h1> - <a style="margin: 0; font-family: sans-serif; font-size: 22px; font-weight: normal;" href="[REDIRECTION]"> Retourner vers l\'application </a> - </td> - </tr>'; -$aMail["fpwdTitle"] = "Changez votre mot de passe"; -$aMail["fpwdUpdateOk"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">Le mot de passe a été mis à jour</h1> - </td> - </tr>'; -$aMail["fpwdUpdateError"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">Le mot de passe n\'a pas pu être mis à jour</h1> - </td> - </tr>'; -$aMail["alreadyUpdate"] = '<tr> - <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">Le mot de passe à déjà été changé</h1> - </td> - </tr>'; - -$aMail["fpwdBody"] = '<!-- 1 Column Text + Button : BEGIN --> - <tr> - <td bgcolor="#ffffff" style="padding: 0px; text-align: center;background-color:#8c8c8c; height:50px; margin-bottom:10px;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #FFFFFF; font-weight: normal;">Changez votre mot de passe</h1> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #000000; text-align: center;"> - <p style="width:100%; font-weight:bold; text-align: left; font-size: 20px;">Bonjour [LOGIN],</p> - <p style="width:100%; text-align: left;font-size: 18px;">Une tentative de récupération de votre compte à été effectué sur le site <b>[HOSTNAME]</b>.</p> - <p style="width:100%; text-align: left;font-size: 18px;margin-top: 10px;">Cliquez sur le bouton ci-dessous pour changer votre mot de passe :</p> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555;"> - <table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" style="margin: auto"> - <tr> - <td style="border-radius: 3px; background: #5cb85c; text-align: center;" class="button-td"> - <a href="[URL]" style="background: #5cb85c; border: 15px solid #5cb85c; font-family: sans-serif; font-size: 18px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 0px; font-weight: bold;" class="button-a"> - <span style="color:#ffffff;">Changer mon mot de passe</span> - </a> - </td> - </tr> - </table> - <!-- Button : END --> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; line-height: 20px; color: #000000; text-align: center;"> - <p style="width:100%; text-align: justify;font-size: 18px;">Si vous n\'avez pas perdu votre mot de passe pour vous connecter à notre application <b>[HOSTNAME]</b>, ignorez simplement ce message.</p> - </td> - </tr> - <!-- 1 Column Text + Button : END -->'; - -$aMail["fpwdForm"] = '<!-- 1 Column Text + Button : BEGIN --> - <tr> - <td bgcolor="#ffffff" style="padding: 0px; text-align: center;background-color:#8c8c8c; height:50px; margin-bottom:10px;"> - <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #FFFFFF; font-weight: normal;">Saisissez votre nouveau mot de passe</h1> - </td> - </tr> - <tr> - <td bgcolor="#ffffff" style="padding: 20px 40px 40px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555; text-align: center;"> - <form style="text-align:-webkit-right;"> - <div style="text-align:left;"> - <label for="password" style="font-weight: bold;">Nouveau mot de passe</label> - <input type="password" id="password" name="password" class="input-text-control" required/> - </div> - <div style="text-align:left;margin-top:10px;"> - <label for="password_confirm" style="font-weight: bold;">Confirmer votre nouveau mot de passe</label> - <input type="password" id="password_confirm" name="password_confirm" class="input-text-control" required/> - </div> - <div style="margin-top:20px;"> - <input type="hidden" name="token" value="[TOKEN]"/> - <input type="hidden" name="output" value="text/html"/> - <button style="background: #5cb85c; border: 15px solid #5cb85c; font-family: sans-serif; font-size: 15px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 0px; font-weight: bold;" class="button-a" type="button" onclick="sendRequest(\'[URL]\')"><span style="color:#ffffff;">Envoi</span></button> - </div> - </form> - </td> - </tr>'; - -$aMail["passwordScript"] = '<script> - var password = document.getElementById("password"), confirm_password = document.getElementById("password_confirm"); - - function validatePassword(){ - if(password.value != confirm_password.value) { - confirm_password.setCustomValidity("Les deux mots de passe doivent être identique"); - } else { - confirm_password.setCustomValidity(\'\'); - } - } - - password.onchange = validatePassword; - confirm_password.onkeyup = validatePassword; - - function sendRequest (sUrl){ - if(typeof(password.value)!== "undefined"){ - if(password.value != ""){ - var xhr = new XMLHttpRequest(); - xhr.open("PUT", sUrl); - sParams = JSON.stringify({"password": password.value}); - xhr.onreadystatechange = function (aEvt) { - if (xhr.readyState == 4) { - if (xhr.status == 200) { - var oJson = JSON.parse(xhr.responseText); - window.location.replace(oJson.sUrl); - } else { - //xhr.responseText; - } - } - } - xhr.send(sParams); - }else{console.log("saisissez un mot de passe2")} - }else{console.log("saisissez un mot de passe")} - } - </script>'; - -$aMail["mainBody"] = '<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="utf-8"> <!-- utf-8 works for most cases --> - <meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn\'t be necessary --> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine --> - <meta name="x-apple-disable-message-reformatting"> <!-- Disable auto-scale in iOS 10 Mail entirely --> - <title>VAM</title> <!-- The title tag shows in email notifications, like Android 4.4. --> - <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> - <!-- Web Font / @font-face : BEGIN --> - <!-- NOTE: If web fonts are not required, lines 10 - 27 can be safely removed. --> - - <!-- Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. --> - <!--[if mso]> - <style> - * { - font-family: sans-serif !important; - } - </style> - <![endif]--> - - <!-- All other clients get the webfont reference; some will render the font and others will silently fail to the fallbacks. More on that here: http://stylecampaign.com/blog/2015/02/webfont-support-in-email/ --> - <!--[if !mso]><!--> - <!-- insert web font reference, eg: <link href="https://fonts.googleapis.com/css?family=Roboto:400,700" rel="stylesheet" type="text/css"> --> - <!--<![endif]--> - - <!-- Web Font / @font-face : END --> - - <!-- CSS Reset --> - <style> - - /* What it does: Remove spaces around the email design added by some email clients. */ - /* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */ - html, - body { - margin: 0 auto !important; - padding: 0 !important; - height: 100% !important; - width: 100% !important; - /*min-width: 600px;*/ - } - - /* What it does: Stops email clients resizing small text. */ - * { - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} - -/* What it does: Centers email on Android 4.4 */ -div[style*="margin: 16px 0"] { - margin:0 !important; -} - -/* What it does: Stops Outlook from adding extra spacing to tables. */ -table, -td { - mso-table-lspace: 0pt !important; - mso-table-rspace: 0pt !important; -} - -/* What it does: Fixes webkit padding issue. Fix for Yahoo mail table alignment bug. Applies table-layout to the first 2 tables then removes for anything nested deeper. */ -table { - border-spacing: 0 !important; - border-collapse: collapse !important; - table-layout: fixed !important; - margin: 0 auto !important; -} -table table table { - table-layout: auto; -} - -/* What it does: Uses a better rendering method when resizing images in IE. */ -img { - -ms-interpolation-mode:bicubic; -} - -/* What it does: A work-around for iOS meddling in triggered links. */ -*[x-apple-data-detectors] { - color: inherit !important; - text-decoration: none !important; -} - -/* What it does: A work-around for Gmail meddling in triggered links. */ -.x-gmail-data-detectors, -.x-gmail-data-detectors *, -.aBn { - border-bottom: 0 !important; - //cursor: default !important; -} - -/* What it does: Prevents Gmail from displaying an download button on large, non-linked images. */ -.a6S { - display: none !important; - opacity: 0.01 !important; -} -/* If the above doesn\'t work, add a .g-img class to any image in question. */ -img.g-img + div { - display:none !important; -} - -/* What it does: Prevents underlining the button text in Windows 10 */ -.button-link { - text-decoration: none !important; -} - -blockquote { - font-style:normal; - text-align:left; - //margin-left: 32px!important; - margin: 5px 5px 0px 32px!important; - //padding-top:10px; - //font-family:"Segoe Print","Times New Roman", Verdana; - padding-left: 7px; - min-height: 30px; - //background-color: #EFEFEF; - border-left: 2px solid #8c8c8c; -} - -blockquote > p { - margin:4.5px; -} - -.input-text-control{ - display: block; - width: 100%; - height: 14px; - padding: 4px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; -} - -/* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89 */ -/* Create one of these media queries for each additional viewport size you\'d like to fix */ -/* Thanks to Eric Lepetit (@ericlepetitsf) for help troubleshooting */ -@media only screen and (min-device-width: 375px) and (max-device-width: 413px) { /* iPhone 6 and 6+ */ - .email-container { - min-width: 375px !important; - } -} - -</style> - -<!-- What it does: Makes background images in 72ppi Outlook render at correct size. --> - <!--[if gte mso 9]> - <xml> - <o:OfficeDocumentSettings> - <o:AllowPNG/> - <o:PixelsPerInch>96</o:PixelsPerInch> - </o:OfficeDocumentSettings> - </xml> -<![endif]--> - -<!-- Progressive Enhancements --> -<style> - -/* What it does: Hover styles for buttons */ -.button-td, -.button-a { - transition: all 100ms ease-in; -} -.button-td:hover, -.button-a:hover { - background: #449D44 !important; - border-color: #449D44 !important; -} - -.bottom-strip{ - width: 120px !important; - height: 10px !important; - float: left !important; -} - -.square-logo-layout{ - width: 40px; - float: left !important; - background-color: #FFF;//#24292E; - border-radius: 50%; - font-size: 30px; - padding: 7.5px; - margin-right: 0px; - //color: #FFF; - cursor:pointer !important; -} - -.square-logo-layout > svg{ - cursor:pointer!important; -} - - -/* Media Queries */ -@media screen and (max-width: 600px) { - - .email-container { - width: 100% !important; - margin: auto !important; - } - - /* What it does: Forces elements to resize to the full width of their container. Useful for resizing images beyond their max-width. */ - .fluid { - max-width: 100% !important; - height: auto !important; - margin-left: auto !important; - margin-right: auto !important; - } - - /* What it does: Forces table cells into full-width rows. */ - .stack-column, - .stack-column-center { - display: block !important; - width: 100% !important; - max-width: 100% !important; - direction: ltr !important; - } - /* And center justify these ones. */ - .stack-column-center { - text-align: center !important; - } - - /* What it does: Generic utility class for centering. Useful for images, buttons, and nested tables. */ - .center-on-narrow { - text-align: center !important; - display: block !important; - margin-left: auto !important; - margin-right: auto !important; - float: none !important; - } - table.center-on-narrow { - display: inline-block !important; - } - - .input-text-control{ - display: block; - width: 100%; - height: 14px; - padding: 4px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; - color: #555; - background-color: #fff; - background-image: none; - border: 1px solid #ccc; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; - } - - /* What it does: Adjust typography on small screens to improve readability */ - .email-container p { - font-size: 17px !important; - line-height: 22px !important; - } - -} - -</style> - -</head> -<body width="100%" bgcolor="#E5E5E5" style="margin: 0px; mso-line-height-rule: exactly;"> - <center style="width: 600px; margin: auto; background: #FFFFFF; text-align: left;"> - <!-- Email Header : BEGIN --> - <table role="presentation" aria-hidden="true" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> - <tr> - <td style="padding: 20px 0px; text-align: center"> - <a href="http://www.veremes.com/" target="_blank"> - <svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="335px" height="100px" viewBox="0 0 335 100" enable-background="new 0 0 335 100" xml:space="preserve"> - <g> - <rect fill="#FFFFFF" width="335" height="100"/> - <g> - <path fill="#1A171B" d="M308.774,60.788c-0.99-1.493-2.537-2.688-4.64-3.589c-0.533-0.224-1.577-0.57-3.142-1.042 - c-1.563-0.47-2.75-0.959-3.567-1.472c-0.893-0.547-1.532-1.161-1.916-1.841c-0.386-0.682-0.577-1.517-0.577-2.511 - c0-1.4,0.466-2.572,1.398-3.516c0.933-0.944,2.098-1.417,3.498-1.417c1.561,0,2.793,0.437,3.695,1.308 - c0.901,0.873,1.402,2.1,1.505,3.681h4.622c-0.12-2.909-1.026-5.178-2.72-6.806c-1.69-1.626-3.972-2.439-6.845-2.439 - c-2.71,0-5.016,0.916-6.921,2.744c-1.904,1.831-2.856,4.057-2.856,6.678c0,2.319,0.569,4.168,1.714,5.551 - c1.143,1.383,3.582,2.734,7.318,4.056c2.334,0.858,3.947,1.775,4.838,2.754c0.891,0.98,1.336,2.274,1.336,3.884 - c0,1.612-0.561,2.947-1.682,4.007c-1.121,1.063-2.526,1.592-4.219,1.592c-1.772,0-3.262-0.69-4.463-2.071 - c-1.202-1.379-1.802-3.12-1.802-5.228v-0.122h-4.502c0.103,3.535,1.114,6.344,3.039,8.431c1.922,2.085,4.466,3.127,7.637,3.127 - c3.108,0,5.674-0.952,7.698-2.853c2.025-1.899,3.038-4.301,3.038-7.205C310.261,64.182,309.764,62.279,308.774,60.788z - M118.462,41.021c-5.17,0-9.417,1.679-12.739,5.035c-3.32,3.357-4.979,7.607-4.979,12.742c0,4.912,1.693,9.118,5.084,12.617 - c3.389,3.502,7.535,5.252,12.438,5.252c3.694,0,6.947-0.998,9.756-2.988c2.808-1.994,4.988-4.849,6.542-8.569h-4.866 - c-1.103,2.332-2.666,4.151-4.688,5.459c-2.023,1.308-4.302,1.962-6.834,1.962c-3.575,0-6.558-1.131-8.947-3.394 - c-2.391-2.263-3.718-5.226-3.983-8.894h30.413v-0.318c0-5.604-1.601-10.154-4.797-13.655 - C127.662,42.771,123.529,41.021,118.462,41.021z M105.366,56.472c0.509-3.468,1.901-6.219,4.17-8.258 - c2.27-2.037,5.04-3.056,8.313-3.056c3.517,0,6.368,0.948,8.556,2.844c2.188,1.897,3.692,4.719,4.509,8.47H105.366z M99.054,31.046 - L84.898,69.101L72.402,35.38l0.007-0.047l-0.079-0.217c-0.401-1.095-0.841-2.3-1.34-3.546l-0.194-0.523h-0.021 - c-2.108-5.143-5.249-10.879-10.817-12.957c-5.541-2.069-12.762-0.675-17.169,3.314c-3.422,3.096-5.471,7.843-6.089,14.111 - c0-0.002-0.117,1.154-0.117,1.154c-0.239,2.31-0.481,4.665-0.354,7.034l0.047,0.874l0.875-0.048l2.31-0.124l0.876-0.046 - l-0.049-0.876c-0.113-2.069,0.115-4.268,0.335-6.396c0-0.001,0.12-1.172,0.12-1.172c0.517-5.235,2.121-9.103,4.771-11.499 - c3.349-3.03,8.825-4.09,13.024-2.522c4.294,1.604,6.994,6.964,8.88,11.717l1.387,3.688l0.208,0.57l0.005-0.004L83.24,75.692h3.407 - l16.788-44.646H99.054z M268.755,41.021c-5.171,0-9.418,1.679-12.738,5.035c-3.32,3.357-4.979,7.607-4.979,12.742 - c0,4.912,1.692,9.118,5.084,12.617c3.389,3.502,7.535,5.252,12.438,5.252c3.695,0,6.947-0.998,9.758-2.988 - c2.807-1.994,4.986-4.849,6.54-8.569h-4.866c-1.102,2.332-2.666,4.151-4.688,5.459c-2.022,1.308-4.302,1.962-6.835,1.962 - c-3.574,0-6.557-1.131-8.945-3.394c-2.392-2.263-3.72-5.226-3.984-8.894h30.415v-0.318c0-5.604-1.603-10.154-4.8-13.655 - C277.955,42.771,273.821,41.021,268.755,41.021z M255.658,56.472c0.51-3.468,1.901-6.219,4.171-8.258 - c2.27-2.037,5.039-3.056,8.314-3.056c3.516,0,6.367,0.948,8.555,2.844c2.187,1.897,3.692,4.719,4.509,8.47H255.658z - M148.164,42.625c-1.253,0.705-2.409,1.808-3.465,3.315v-3.946h-4.074v33.698h4.379V55.395c0-3.099,0.583-5.334,1.754-6.711 - c1.17-1.376,3.11-2.187,5.821-2.431l-0.032-4.744C150.878,41.549,149.417,41.922,148.164,42.625z M172.22,41.021 - c-5.171,0-9.418,1.679-12.738,5.035c-3.321,3.357-4.981,7.607-4.981,12.742c0,4.912,1.694,9.118,5.085,12.617 - c3.389,3.502,7.535,5.252,12.438,5.252c3.695,0,6.947-0.998,9.757-2.988c2.808-1.994,4.988-4.849,6.541-8.569h-4.866 - c-1.102,2.332-2.665,4.151-4.688,5.459c-2.023,1.308-4.303,1.962-6.834,1.962c-3.574,0-6.557-1.131-8.947-3.394 - c-2.391-2.263-3.718-5.226-3.984-8.894h30.414v-0.318c0-5.604-1.6-10.154-4.799-13.655 - C181.419,42.771,177.286,41.021,172.22,41.021z M159.124,56.472c0.51-3.468,1.901-6.219,4.17-8.258 - c2.271-2.037,5.04-3.056,8.313-3.056c3.517,0,6.369,0.948,8.556,2.844c2.188,1.897,3.692,4.719,4.51,8.47H159.124z - M232.864,41.264c-2.51,0-4.779,0.509-6.809,1.518c-2.03,1.012-3.73,2.49-5.097,4.43c-1.106-1.818-2.712-3.264-4.82-4.338 - c-2.108-1.072-4.441-1.61-7-1.61c-2.212,0-4.191,0.379-5.941,1.134c-1.748,0.756-3.27,1.88-4.558,3.372v-3.776h-4.258v33.698 - h4.258V59.274c0-2.927,0.105-4.978,0.321-6.154c0.215-1.177,0.586-2.227,1.119-3.147c0.856-1.473,2.026-2.604,3.509-3.391 - c1.481-0.787,3.203-1.182,5.165-1.182c3.248,0,5.66,0.926,7.233,2.777c1.573,1.852,2.36,4.722,2.36,8.61v18.905h4.136V59.274 - c0-2.927,0.112-4.978,0.338-6.154c0.223-1.177,0.59-2.227,1.1-3.147c0.854-1.473,2.012-2.604,3.467-3.391 - c1.457-0.787,3.143-1.182,5.06-1.182c3.318,0,5.711,0.947,7.178,2.84c1.469,1.894,2.202,5.07,2.202,9.529v17.923h4.137V58.658 - c0-6.093-1.043-10.516-3.122-13.268C240.76,42.64,237.436,41.264,232.864,41.264z"/> - <g> - <path fill="#1A171B" d="M36.791,43.727c4.5,3.508,3.856-8.518,5.095-10.445c-0.251,0.39,1.045-0.227,1.359-0.68 - c0.714-1.033,0.78-1.304,1.783-0.467c0.685,0.57,4.073-2.156,5.011-2.76c-0.206-0.223,0.68,1.338,0.68,0.764 - c0,4.354-0.253,0.671,2.42,1.401c1.206,0.329,2.179-0.847,3.269,0.893c-0.283,0.31-0.566,0.621-0.849,0.933 - c4.111,1.071,3.139,4.072,7.134,6.029c-1.239,0.545-2.304,1.363-2.463,2.803c1.169,0.267,2.366,0.422,3.566,0.424 - c-0.34,0.311-0.679,0.622-1.02,0.934c2.158,0.346,2.307,2.235,4.671,1.699c-0.891,1.669-4.83,4.51-1.274,5.094 - c-0.198,0.085-0.396,0.171-0.594,0.255c0.745,0.477,1.172,1.362,1.868,1.868c-0.946,0.11-1.794,0.679-2.802,0.68 - c0.04,1.611,1.581,1.87,2.717,2.124c-2.577,1.72,0.311,0.894,0.722,2.122c-0.165-0.493,1.154,1.254,0.807,0.977 - c-0.173-0.139-1.318,0.596-0.807,1.062c0.174,0.158,4.875,0.583,1.98,1.482c-1.714,0.534-4.447,0.456-3.679,2.763 - c-1.174-0.126-1.886,0.235-2.845-0.083c0.154,0.687-0.067,0.846,0.213,1.442c-1.335,0.382-2.595-0.269-3.695-1.061 - c-0.042,0.268-0.084,0.537-0.127,0.806c-0.368-0.325-0.736-0.649-1.104-0.976c0.016,0.536-0.255,1.096-0.212,1.656 - c-0.877-0.677-5.258-4.209-2.972-1.189c0.905,1.195,1.842,1.439,2.93,2.463c-1.363,0.366-0.2,5.027,1.91,4.627 - c-1.045,1.709-3.151-0.414-4.289,1.828c1.419,0.304,0.683,0.515,1.826,1.146c-0.596-0.139-1.35,0.109-1.996-0.043 - c0.058,0.606,1.302,2.911,1.104,3.185c-0.761,1.05-2.778-1.146-3.949-1.146c-0.209,0.18-0.252,0.392-0.126,0.636 - c1.264,0.254,0.742,0.52,0.976,1.698c-2.448-0.878-0.467,0.231-0.467,1.104c0,3.686-2.677-0.092-2.548,2.505 - c-0.269-0.014-0.537-0.027-0.806-0.041c0.263,2.893-2.243-0.257-2.845,3.056c0.048,0.018-3.298-0.522-3.333-0.488 - c-1.136,1.135-1.402-0.027-2.174,0.598c-1.87,1.514-1.024-1.807-1.552-1.998c-0.694-0.253-2.246,1.984-2.455,0.573 - c-0.207-1.396-0.55-3.131-1.463-1.656c-0.954-0.37-3.546,0.314-3.842-0.572c-0.223-0.67-2.252-3.619-0.871-4.078 - c-0.407,0.137-1.347,0.543-1.719,0.765c0.857-2.833-1.515-2.188-3.185-1.146c0.104-1.69,0.899-3.521-1.083-3.247 - c0.293-0.662,0.337-1.645,0.828-2.356c-0.382,0.084-0.764,0.17-1.146,0.254c0.059-0.477,4.984-10.382,5.223-10.382 - c-0.199-0.062-0.369-0.169-0.51-0.318c-1.236,3.129-3.048,5.804-5.095,8.534c0.046-0.52-0.061-1.008-0.318-1.464 - c-0.23,0-1.983,2.339-2.548,2.61c0-0.253,0-0.509,0-0.763c-0.231,0.366-1.444,2.675-1.783,2.675c-0.329,0,0.481-1.796-0.51-1.467 - c-0.944,0.315-1.458,0.54-2.292,0.701c0.99-1.181,1.719-2.432-0.446-1.783c0.204-0.955-0.191-1.231-0.191-1.974 - c-0.159,0.41-0.393,0.771-0.7,1.084c-0.23-1.254-0.242-6.138-0.383-6.138c-1.46,0,0.123-2.937,0.341-3.312 - c-0.17-0.142-0.341-0.282-0.51-0.425c0.05,1.16-0.433,1.305-0.764,2.293c-1.08-1.767,1.521-3.314-0.764-3.99 - c0.311-0.256,0.623-0.51,0.934-0.765c-0.199-0.198-0.396-0.396-0.595-0.595c-0.269,0.61-0.729,1.216-1.02,1.783 - c-0.154-0.479,0.034-2.888,0.51-2.888c-0.313-0.017-0.624-0.044-0.935-0.084c0.723-0.973,0.495-1.264,1.444-1.699 - c-0.17-0.51-0.339-1.019-0.509-1.529c0.17,0.058,0.339,0.114,0.509,0.171c0.149,0.083-0.41-0.829-0.68-0.424 - c0.503-0.754,1.123-1.223,1.868-1.614c-0.283-0.17-0.566-0.34-0.849-0.51c0.664-0.432,1.176-1.357,2.038-1.698 - c-0.566-1.104-0.674-1.464-1.868-1.784c-0.033-2.104,1.163-9.234,2.717-8.407c-0.049-0.578-0.062-0.699,0.509-0.765 - c-0.087-1.145-0.637-0.797,0.595-1.104c-0.979-4.102,1.847-2.083,3.651-1.104c0-0.341,0-0.68,0-1.02 - c0.534,0.116,1.853,0.641,2.177,0.085c0.109-0.188-0.92-0.513-1.073-0.594c1.126-0.569,0.975-1.844,0.17-3.143 - c1.503,0.075,3.008,0.738,3.482-0.594c0.613,0.591,1.188,0.584,1.697,1.358c0.284-0.481,0.566-0.963,0.85-1.443 - c0.53,0.646,1.549,2.504,2.59,1.983c0.223-0.111,1.486,0.661,1.486,0.394c0-1.159,0.588-2.121,1.529-2.717 - C35.584,34.716,35.005,38.027,36.791,43.727"/> - </g> - </g> - </g> - </svg> - </a> - </td> - </tr> -</table> -<!-- Email Header : END --> - -<!-- Email Body : BEGIN --> -<table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> - - [CONTENT] - -</table> -<!-- Email Body : END --> - -<!-- Email Footer : BEGIN --> -<table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> - <tr> - <td style="padding: 0px;width: 100%;" class="x-gmail-data-detectors"> - <div class="bottom-strip" style="background-color: #39468A;"></div> - <div class="bottom-strip" style="background-color: #E74F23;"></div> - <div class="bottom-strip" style="background-color: #923288;"></div> - <div class="bottom-strip" style="background-color: #1C9DB2;"></div> - <div class="bottom-strip" style="background-color: #E10759;"></div> - </td> - </tr> -</table> -<table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> - <tr> - <td style="padding: 10px;width: 50%;font-size: 12px; font-family: sans-serif; line-height:18px; text-align: center; color: #888888; cursor:pointer;" class="x-gmail-data-detectors"> - <a class="square-logo-layout" href="https://twitter.com/Veremes_Info" target="_blank" style="color: #24292E; cursor:pointer;"> - <!--<i class="fa fa-twitter" style=""></i>--> - <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> - <title>Twitter</title> - <path d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM75.28,37c0,.56,0,1.12,0,1.68C75.32,56,62.2,75.83,38.21,75.83h0a37,37,0,0,1-20-5.86,24.62,24.62,0,0,0,3.11.18,26.13,26.13,0,0,0,16.2-5.58,13,13,0,0,1-12.18-9.06,12.34,12.34,0,0,0,2.45.24,13,13,0,0,0,3.44-.46A13,13,0,0,1,20.77,42.5v-.16A13.11,13.11,0,0,0,26.68,44a13.05,13.05,0,0,1-4-17.42A37,37,0,0,0,49.52,40.18a13.19,13.19,0,0,1-.34-3,13.05,13.05,0,0,1,22.57-8.92A26.11,26.11,0,0,0,80,25.12a13.08,13.08,0,0,1-5.73,7.22,26.23,26.23,0,0,0,7.49-2.06A26.49,26.49,0,0,1,75.28,37Z"/> - </svg> - </a> - <a class="square-logo-layout" href="https://www.linkedin.com/company/veremes/" target="_blank" style="color: #24292E; cursor:pointer;"> - <!--<i class="fa fa-linkedin" style=""></i>--> - <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> - <title>LinkedIn</title> - <path d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM60.71,51a6.48,6.48,0,0,0-6.33,6.32V79.68H41.74V41.74H54.38v5a13.63,13.63,0,0,1,10.54-5.9A15,15,0,0,1,79.68,55.65v24H67V57.33A6.48,6.48,0,0,0,60.71,51ZM27,34.57A7.59,7.59,0,1,1,34.57,27,7.55,7.55,0,0,1,27,34.57Zm6.32,7.17V79.68H20.66V41.74Z"/> - </svg> - </a> - <a class="square-logo-layout" href="http://vm09.veremes.net/" target="_blank" style="color: #24292E; cursor:pointer;"> - <!--<i class="fa fa-github" style=""></i>--> - <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> - <title>GitLab</title> - <path d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM75.18,15.1a1,1,0,0,1,2,0l9,27.81h-20Zm-52.34,0a1,1,0,0,1,2,0l9,27.81h-20ZM9.85,61A2.63,2.63,0,0,1,8.9,58l4.35-13.4L47.16,88.07Zm4.33-17h20l14.3,44Zm21.19,0H64.63L50,89Zm30.42,0h20L51.49,88ZM90.15,61,52.84,88.07,86.75,44.62,91.1,58A2.63,2.63,0,0,1,90.15,61Z"/> - </svg> - </a> - <a class="square-logo-layout" href="http://www.veremes.com/" target="_blank" style="color: #24292E; cursor:pointer;"> - <!--<i class="fa fa-globe" style=""></i>--> - <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> - <defs> - <style>.cls-1{fill:none;}</style> - </defs> - <title>Veremes</title> - <path class="cls-1" d="M60.17,18.09h0S60.15,18.05,60.17,18.09Z"/> - <path class="cls-1" d="M48.39,26.38c.66-6.65,2.7-11.56,6.06-14.6a11.45,11.45,0,0,1,1.82-1.29A40.5,40.5,0,0,0,50,10l-1,0c-3.18,3.87-5.13,9.17-5.79,15.85l-.15,1.47c-.21,2.06-.42,4.16-.47,6.28-1.35-5.7-.83-9.69-1.1-15.87A4,4,0,0,0,39.6,21.2c0,.34-1.6-.64-1.88-.5-1.33.67-2.62-1.69-3.29-2.51L33.35,20c-.65-1-1.38-1-2.16-1.73-.6,1.69-2.51.85-4.42.76,1,1.65,1.21,3.26-.21,4,.19.1,1.5.51,1.36.75-.41.71-2.09,0-2.77-.11V25c-2.29-1.25-5.88-3.81-4.63,1.4-1.57.39-.87-.05-.76,1.4-.72.09-.71.24-.64,1-2-1.05-3.5,8-3.45,10.68,1.51.4,1.65.86,2.37,2.26-1.1.43-1.75,1.61-2.59,2.16l1.08.64a6,6,0,0,0-2.37,2c.34-.51,1.05.65.86.54l-.65-.22c.22.65.43,1.3.65,2-1.21.55-.92.92-1.83,2.15.39,0,.78.09,1.18.11-.6,0-.84,3.06-.65,3.67.37-.72,1-1.49,1.3-2.27l.75.76-1.18,1c2.9.86-.4,2.82,1,5.06.42-1.25,1-1.43,1-2.91l.65.54c-.28.48-2.29,4.21-.44,4.21.18,0,.2,6.2.49,7.79a4,4,0,0,0,.89-1.38c0,.95.5,1.3.24,2.51,2.75-.82,1.82.76.57,2.26a20.92,20.92,0,0,0,2.91-.89c1.26-.41.23,1.86.64,1.86s2-2.93,2.27-3.39v1c.72-.35,2.94-3.32,3.23-3.32a3.11,3.11,0,0,1,.41,1.86,46.51,46.51,0,0,0,6.47-10.83,1.46,1.46,0,0,0,.65.4c-.31,0-6.56,12.58-6.64,13.18l1.46-.32c-.63.9-.68,2.15-1,3,2.51-.35,1.5,2,1.37,4.13,2.12-1.33,5.14-2.15,4.05,1.45a15.73,15.73,0,0,1,2.18-1c-1.76.58.82,4.33,1.11,5.17.37,1.13,3.66.26,4.87.73,1.16-1.87,1.6.33,1.86,2.11s2.24-1,3.12-.73c.67.24-.4,4.46,2,2.53,1-.79,1.32.68,2.76-.75,0,0,4.29.64,4.23.62.77-4.21,3.94-.21,3.61-3.88l1,0c-.16-3.3,3.24,1.5,3.24-3.18,0-1.11-2.52-2.52.59-1.4-.29-1.5.37-1.84-1.24-2.16a.62.62,0,0,1,.16-.81c1.49,0,4,2.79,5,1.46.25-.35-1.33-3.28-1.4-4,.82.2,1.77-.12,2.53.06-1.45-.8-.52-1.07-2.32-1.46,1.45-2.84,4.12-.15,5.45-2.32C70.78,71.9,69.3,66,71,65.52c-1.38-1.3-2.57-1.61-3.72-3.13-2.9-3.83,2.66.65,3.78,1.51-.06-.71.28-1.42.27-2.1L72.76,63c0-.34.11-.69.16-1,1.4,1,3,1.83,4.69,1.35-.35-.76-.08-1-.27-1.83,1.22.4,2.12-.06,3.61.11-1-2.93,2.5-2.84,4.67-3.51,3.68-1.15-2.29-1.68-2.51-1.88-.65-.6.8-1.53,1-1.35.44.35-1.23-1.87-1-1.24-.52-1.56-4.19-.51-.92-2.7-1.44-.32-3.4-.65-3.45-2.69,1.28,0,2.36-.73,3.56-.87-.89-.64-1.43-1.76-2.37-2.37l.75-.32c-4.51-.74.49-4.35,1.62-6.47-3,.68-3.19-1.72-5.93-2.16l1.29-1.18a20.84,20.84,0,0,1-4.52-.54c.19-1.83,1.55-2.87,3.12-3.56-5.07-2.49-3.84-6.3-9.06-7.66L68.28,22c-1.38-2.21-2.62-.72-4.15-1.13-3.39-.93-3.07,3.75-3.07-1.78,0,.62-.81-.72-.89-1-1.22.8-5.47,4.21-6.34,3.49-1.27-1.06-1.35-.72-2.26.59-.4.58-2,1.36-1.73.87-.9,1.41-1,7.1-2.05,10.79,0-2,.25-4,.45-6Z"/> - <path d="M99.94,47.71l0-.64c0-.61-.08-1.23-.14-1.84,0-.16,0-.31,0-.46-.08-.74-.17-1.47-.28-2.2,0-.19-.06-.38-.1-.57q-.13-.86-.3-1.68l-.12-.64c-.15-.7-.31-1.39-.48-2.08,0-.15-.09-.3-.13-.45-.14-.56-.3-1.11-.46-1.65-.08-.24-.15-.49-.23-.73-.16-.51-.34-1-.52-1.54-.06-.17-.12-.35-.19-.53-.23-.62-.47-1.24-.73-1.85-.11-.27-.22-.53-.34-.8s-.35-.78-.53-1.17l-.38-.81c-.27-.56-.56-1.11-.85-1.66-.16-.3-.33-.59-.49-.88s-.35-.61-.53-.92-.37-.63-.57-.94L92,22.86q-.55-.86-1.14-1.68l-.45-.62c-.25-.35-.51-.69-.77-1-.13-.18-.27-.35-.41-.52q-1.36-1.74-2.9-3.35L86,15.35q-1.66-1.72-3.48-3.29L82.46,12a51.79,51.79,0,0,0-5.4-4h0a49.56,49.56,0,0,0-4.42-2.54h0A49.59,49.59,0,0,0,63.94,2h0c-1.56-.45-3.16-.83-4.78-1.13L58.49.73,57.21.52C56.59.43,56,.35,55.33.29L54.54.21,53,.1l-.73,0C51.51,0,50.76,0,50,0a50,50,0,1,0,50,50C100,49.23,100,48.47,99.94,47.71ZM49.84,23c-.31.49,1.33-.29,1.73-.87.91-1.31,1-1.65,2.26-.59.87.72,5.12-2.69,6.34-3.49,0,0,0-.06,0,0h0c.08.24.89,1.58.89,1,0,5.53-.32.85,3.07,1.78,1.53.41,2.77-1.08,4.15,1.13L67.2,23.14c5.22,1.36,4,5.17,9.06,7.66-1.57.69-2.93,1.73-3.12,3.56a20.84,20.84,0,0,0,4.52.54l-1.29,1.18c2.74.44,2.92,2.84,5.93,2.16-1.13,2.12-6.13,5.73-1.62,6.47l-.75.32c.94.61,1.48,1.73,2.37,2.37-1.2.14-2.28.86-3.56.87.05,2,2,2.37,3.45,2.69-3.27,2.19.4,1.14.92,2.7-.21-.63,1.46,1.59,1,1.24-.22-.18-1.67.75-1,1.35.22.2,6.19.73,2.51,1.88-2.17.67-5.64.58-4.67,3.51-1.49-.17-2.39.29-3.61-.11.19.87-.08,1.07.27,1.83-1.7.48-3.29-.34-4.69-1.35,0,.34-.11.69-.16,1l-1.4-1.24c0,.68-.33,1.39-.27,2.1C70,63,64.41,58.56,67.31,62.39c1.15,1.52,2.34,1.83,3.72,3.13-1.73.46-.25,6.38,2.43,5.87-1.33,2.17-4-.52-5.45,2.32,1.8.39.87.66,2.32,1.46-.76-.18-1.71.14-2.53-.06.07.77,1.65,3.7,1.4,4-1,1.33-3.53-1.46-5-1.46a.62.62,0,0,0-.16.81c1.61.32,1,.66,1.24,2.16-3.11-1.12-.59.29-.59,1.4,0,4.68-3.4-.12-3.24,3.18l-1,0c.33,3.67-2.84-.33-3.61,3.88.06,0-4.19-.67-4.23-.62-1.44,1.43-1.78,0-2.76.75-2.37,1.93-1.3-2.29-2-2.53-.88-.32-2.86,2.52-3.12.73s-.7-4-1.86-2.11c-1.21-.47-4.5.4-4.87-.73-.29-.84-2.87-4.59-1.11-5.17a15.73,15.73,0,0,0-2.18,1c1.09-3.6-1.93-2.78-4.05-1.45.13-2.15,1.14-4.48-1.37-4.13.37-.84.42-2.09,1-3l-1.46.32c.08-.6,6.33-13.18,6.64-13.18a1.46,1.46,0,0,1-.65-.4,46.51,46.51,0,0,1-6.47,10.83A3.11,3.11,0,0,0,28,67.51c-.29,0-2.51,3-3.23,3.32v-1c-.3.46-1.83,3.39-2.27,3.39s.62-2.27-.64-1.86a20.92,20.92,0,0,1-2.91.89c1.25-1.5,2.18-3.08-.57-2.26.26-1.21-.24-1.56-.24-2.51a4,4,0,0,1-.89,1.38c-.29-1.59-.31-7.79-.49-7.79-1.85,0,.16-3.73.44-4.21l-.65-.54c.06,1.48-.55,1.66-1,2.91-1.37-2.24,1.93-4.2-1-5.06l1.18-1L15,52.47c-.34.78-.93,1.55-1.3,2.27-.19-.61,0-3.67.65-3.67-.4,0-.79-.06-1.18-.11.91-1.23.62-1.6,1.83-2.15-.22-.65-.43-1.3-.65-2l.65.22c.19.11-.52-1-.86-.54a6,6,0,0,1,2.37-2l-1.08-.64c.84-.55,1.49-1.73,2.59-2.16-.72-1.4-.86-1.86-2.37-2.26-.05-2.68,1.47-11.73,3.45-10.68-.07-.73-.08-.88.64-1-.11-1.45-.81-1,.76-1.4-1.25-5.21,2.34-2.65,4.63-1.4v-1.3c.68.15,2.36.82,2.77.11.14-.24-1.17-.65-1.36-.75,1.42-.73,1.23-2.34.21-4,1.91.09,3.82.93,4.42-.76C32,19,32.7,19,33.35,20l1.08-1.83c.67.82,2,3.18,3.29,2.51.28-.14,1.88.84,1.88.5a4,4,0,0,1,1.94-3.45c.27,6.18-.25,10.17,1.1,15.87,0-2.12.26-4.22.47-6.28l.15-1.47c.66-6.68,2.61-12,5.79-15.85l1,0a40.5,40.5,0,0,1,6.27.49,11.45,11.45,0,0,0-1.82,1.29c-3.36,3-5.4,8-6.06,14.6l-.15,1.49c-.2,2-.41,4-.45,6C48.82,30.14,48.94,24.45,49.84,23Z"/> - </svg> - </a> - </td> - <td style="padding: 10px;width: 50%;font-size: 20px; font-family: sans-serif; line-height:18px; text-align: center; color: #000000;" class="x-gmail-data-detectors"> - <div style="margin-bottom:10px;">Pour toute question :</div> - <div>support@veremes.com</div> - </td> - </tr> -</table> -<!-- Email Footer : END --> - -</center> -[SCRIPT] -</body> -</html>'; +<?php + +$aMail["newUserTitle"] = "Un nouvel utilisateur vient juste de s'inscrire"; +$aMail["newUserTitleAutomated"] = "Vérification de votre adresse mail"; +$aMail["newUserBody"] = '<!-- 1 Column Text + Button : BEGIN --> + <tr> + <td bgcolor="#ffffff" style="padding: 0px; text-align: center;background-color:#8c8c8c; height:50px; margin-bottom:10px;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #FFFFFF; font-weight: normal;">[TITLE]</h1> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #000000; text-align: center;"> + <p style="width:100%; font-weight:bold; text-align: justify; font-size: 20px;">Bonjour [FULLNAME],</p> + <p style="width:100%; text-align: left;font-size: 18px;">Nous vous remercions d\'avoir créé votre compte sur <b>[HOSTNAME]</b>.</p> + <p style="width:100%; text-align: left;font-size: 18px;"><b>Informations sur votre compte :</b></p> + <p style="width:100%; text-align: left;font-size: 18px;">Identifiant : [USERNAME]</p> + <p style="width:100%; text-align: left;font-size: 18px;">Mail : [MAIL]</p> + <p style="width:100%; text-align: left;font-size: 18px;">Organisme : [COMPANY] </p> + <p style="width:100%; text-align: left;font-size: 18px;margin-top: 20px;">Cliquez sur le bouton ci-dessous pour finaliser votre inscription :</p> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 20px; line-height: 20px; color: #555555;"> + <table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" style="margin: auto"> + <tr> + <td style="border-radius: 3px; background: #5cb85c; text-align: center;" class="button-td"> + <a href="[URL]" style="background: #5cb85c; border: 15px solid #5cb85c; font-family: sans-serif; font-size: 18px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 0px; font-weight: bold;" class="button-a"> + <span style="color:#ffffff;">Je confirme mon adresse mail</span> + </a> + </td> + </tr> + </table> + <!-- Button : END --> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; line-height: 20px; color: #000000; text-align: center;"> + <p style="width:100%; text-align: justify;font-size: 18px;">Si vous ne vous êtes pas inscrit(e) sur notre application <b>[HOSTNAME]</b>, ignorez simplement ce message.</p> + </td> + </tr> + <!-- 1 Column Text + Button : END -->'; + +$aMail["confirmationSignUpTitle"] = "Confirmation d'inscription"; +$aMail["genericBody"] = ' + <tr> + <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">[MESSAGE]</h1> + </td> + </tr>'; + +$aMail["SignUpOk"] = '<tr> + <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">L\'utilisateur a été ajouté, connectez vous sur la base de données pour lui donner des droits (Defaut: [ROLES])</h1> + </td> + </tr>'; +$aMail["SignUpError"] = '<tr> + <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">L\'utilisateur n\'a pas pu être ajouté consultez les fichiers de log pour plus d\'informations</h1> + </td> + </tr>'; + +$aMail["signUpConfirmation"] = '<tr> + <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal; margin-bottom: 15px;">Votre compte est maintenant activé, vous pouvez vous connecter. Pour avoir accès à plus de fonctionnalités contactez l\'administrateur</h1> + <a style="margin: 0; font-family: sans-serif; font-size: 22px; font-weight: normal;" href="[REDIRECTION]"> Retourner vers l\'application </a> + </td> + </tr>'; +$aMail["fpwdTitle"] = "Changez votre mot de passe"; +$aMail["fpwdUpdateOk"] = '<tr> + <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">Le mot de passe a été mis à jour</h1> + </td> + </tr>'; +$aMail["fpwdUpdateError"] = '<tr> + <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">Le mot de passe n\'a pas pu être mis à jour</h1> + </td> + </tr>'; +$aMail["alreadyUpdate"] = '<tr> + <td bgcolor="#ffffff" style="padding: 40px 40px 20px; text-align: center;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #333333; font-weight: normal;">Le mot de passe à déjà été changé</h1> + </td> + </tr>'; + +$aMail["fpwdBody"] = '<!-- 1 Column Text + Button : BEGIN --> + <tr> + <td bgcolor="#ffffff" style="padding: 0px; text-align: center;background-color:#8c8c8c; height:50px; margin-bottom:10px;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #FFFFFF; font-weight: normal;">Changez votre mot de passe</h1> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #000000; text-align: center;"> + <p style="width:100%; font-weight:bold; text-align: left; font-size: 20px;">Bonjour [LOGIN],</p> + <p style="width:100%; text-align: left;font-size: 18px;">Une tentative de récupération de votre compte à été effectué sur le site <b>[HOSTNAME]</b>.</p> + <p style="width:100%; text-align: left;font-size: 18px;margin-top: 10px;">Cliquez sur le bouton ci-dessous pour changer votre mot de passe :</p> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555;"> + <table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" style="margin: auto"> + <tr> + <td style="border-radius: 3px; background: #5cb85c; text-align: center;" class="button-td"> + <a href="[URL]" style="background: #5cb85c; border: 15px solid #5cb85c; font-family: sans-serif; font-size: 18px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 0px; font-weight: bold;" class="button-a"> + <span style="color:#ffffff;">Changer mon mot de passe</span> + </a> + </td> + </tr> + </table> + <!-- Button : END --> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" style="padding: 10px 20px; font-family: sans-serif; line-height: 20px; color: #000000; text-align: center;"> + <p style="width:100%; text-align: justify;font-size: 18px;">Si vous n\'avez pas perdu votre mot de passe pour vous connecter à notre application <b>[HOSTNAME]</b>, ignorez simplement ce message.</p> + </td> + </tr> + <!-- 1 Column Text + Button : END -->'; + +$aMail["fpwdForm"] = '<!-- 1 Column Text + Button : BEGIN --> + <tr> + <td bgcolor="#ffffff" style="padding: 0px; text-align: center;background-color:#8c8c8c; height:50px; margin-bottom:10px;"> + <h1 style="margin: 0; font-family: sans-serif; font-size: 24px; line-height: 27px; color: #FFFFFF; font-weight: normal;">Saisissez votre nouveau mot de passe</h1> + </td> + </tr> + <tr> + <td bgcolor="#ffffff" style="padding: 20px 40px 40px; font-family: sans-serif; font-size: 15px; line-height: 20px; color: #555555; text-align: center;"> + <form style="text-align:-webkit-right;"> + <div style="text-align:left;"> + <label for="password" style="font-weight: bold;">Nouveau mot de passe</label> + <input type="password" id="password" name="password" class="input-text-control" required/> + </div> + <div style="text-align:left;margin-top:10px;"> + <label for="password_confirm" style="font-weight: bold;">Confirmer votre nouveau mot de passe</label> + <input type="password" id="password_confirm" name="password_confirm" class="input-text-control" required/> + </div> + <div style="margin-top:20px;"> + <input type="hidden" name="token" value="[TOKEN]"/> + <input type="hidden" name="output" value="text/html"/> + <button style="background: #5cb85c; border: 15px solid #5cb85c; font-family: sans-serif; font-size: 15px; line-height: 1.1; text-align: center; text-decoration: none; display: block; border-radius: 0px; font-weight: bold;" class="button-a" type="button" onclick="sendRequest(\'[URL]\')"><span style="color:#ffffff;">Envoi</span></button> + </div> + </form> + </td> + </tr>'; + +$aMail["passwordScript"] = '<script> + var password = document.getElementById("password"), confirm_password = document.getElementById("password_confirm"); + + function validatePassword(){ + if(password.value != confirm_password.value) { + confirm_password.setCustomValidity("Les deux mots de passe doivent être identique"); + } else { + confirm_password.setCustomValidity(\'\'); + } + } + + password.onchange = validatePassword; + confirm_password.onkeyup = validatePassword; + + function sendRequest (sUrl){ + if(typeof(password.value)!== "undefined"){ + if(password.value != ""){ + var xhr = new XMLHttpRequest(); + xhr.open("PUT", sUrl); + sParams = JSON.stringify({"password": password.value}); + xhr.onreadystatechange = function (aEvt) { + if (xhr.readyState == 4) { + if (xhr.status == 200) { + var oJson = JSON.parse(xhr.responseText); + window.location.replace(oJson.sUrl); + } else { + //xhr.responseText; + } + } + } + xhr.send(sParams); + }else{console.log("saisissez un mot de passe2")} + }else{console.log("saisissez un mot de passe")} + } + </script>'; + +$aMail["mainBody"] = '<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> <!-- utf-8 works for most cases --> + <meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn\'t be necessary --> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine --> + <meta name="x-apple-disable-message-reformatting"> <!-- Disable auto-scale in iOS 10 Mail entirely --> + <title>VAM</title> <!-- The title tag shows in email notifications, like Android 4.4. --> + <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> + <!-- Web Font / @font-face : BEGIN --> + <!-- NOTE: If web fonts are not required, lines 10 - 27 can be safely removed. --> + + <!-- Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. --> + <!--[if mso]> + <style> + * { + font-family: sans-serif !important; + } + </style> + <![endif]--> + + <!-- All other clients get the webfont reference; some will render the font and others will silently fail to the fallbacks. More on that here: http://stylecampaign.com/blog/2015/02/webfont-support-in-email/ --> + <!--[if !mso]><!--> + <!-- insert web font reference, eg: <link href="https://fonts.googleapis.com/css?family=Roboto:400,700" rel="stylesheet" type="text/css"> --> + <!--<![endif]--> + + <!-- Web Font / @font-face : END --> + + <!-- CSS Reset --> + <style> + + /* What it does: Remove spaces around the email design added by some email clients. */ + /* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */ + html, + body { + margin: 0 auto !important; + padding: 0 !important; + height: 100% !important; + width: 100% !important; + /*min-width: 600px;*/ + } + + /* What it does: Stops email clients resizing small text. */ + * { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} + +/* What it does: Centers email on Android 4.4 */ +div[style*="margin: 16px 0"] { + margin:0 !important; +} + +/* What it does: Stops Outlook from adding extra spacing to tables. */ +table, +td { + mso-table-lspace: 0pt !important; + mso-table-rspace: 0pt !important; +} + +/* What it does: Fixes webkit padding issue. Fix for Yahoo mail table alignment bug. Applies table-layout to the first 2 tables then removes for anything nested deeper. */ +table { + border-spacing: 0 !important; + border-collapse: collapse !important; + table-layout: fixed !important; + margin: 0 auto !important; +} +table table table { + table-layout: auto; +} + +/* What it does: Uses a better rendering method when resizing images in IE. */ +img { + -ms-interpolation-mode:bicubic; +} + +/* What it does: A work-around for iOS meddling in triggered links. */ +*[x-apple-data-detectors] { + color: inherit !important; + text-decoration: none !important; +} + +/* What it does: A work-around for Gmail meddling in triggered links. */ +.x-gmail-data-detectors, +.x-gmail-data-detectors *, +.aBn { + border-bottom: 0 !important; + //cursor: default !important; +} + +/* What it does: Prevents Gmail from displaying an download button on large, non-linked images. */ +.a6S { + display: none !important; + opacity: 0.01 !important; +} +/* If the above doesn\'t work, add a .g-img class to any image in question. */ +img.g-img + div { + display:none !important; +} + +/* What it does: Prevents underlining the button text in Windows 10 */ +.button-link { + text-decoration: none !important; +} + +blockquote { + font-style:normal; + text-align:left; + //margin-left: 32px!important; + margin: 5px 5px 0px 32px!important; + //padding-top:10px; + //font-family:"Segoe Print","Times New Roman", Verdana; + padding-left: 7px; + min-height: 30px; + //background-color: #EFEFEF; + border-left: 2px solid #8c8c8c; +} + +blockquote > p { + margin:4.5px; +} + +.input-text-control{ + display: block; + width: 100%; + height: 14px; + padding: 4px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; +} + +/* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89 */ +/* Create one of these media queries for each additional viewport size you\'d like to fix */ +/* Thanks to Eric Lepetit (@ericlepetitsf) for help troubleshooting */ +@media only screen and (min-device-width: 375px) and (max-device-width: 413px) { /* iPhone 6 and 6+ */ + .email-container { + min-width: 375px !important; + } +} + +</style> + +<!-- What it does: Makes background images in 72ppi Outlook render at correct size. --> + <!--[if gte mso 9]> + <xml> + <o:OfficeDocumentSettings> + <o:AllowPNG/> + <o:PixelsPerInch>96</o:PixelsPerInch> + </o:OfficeDocumentSettings> + </xml> +<![endif]--> + +<!-- Progressive Enhancements --> +<style> + +/* What it does: Hover styles for buttons */ +.button-td, +.button-a { + transition: all 100ms ease-in; +} +.button-td:hover, +.button-a:hover { + background: #449D44 !important; + border-color: #449D44 !important; +} + +.bottom-strip{ + width: 120px !important; + height: 10px !important; + float: left !important; +} + +.square-logo-layout{ + width: 40px; + float: left !important; + background-color: #FFF;//#24292E; + border-radius: 50%; + font-size: 30px; + padding: 7.5px; + margin-right: 0px; + //color: #FFF; + cursor:pointer !important; +} + +.square-logo-layout > svg{ + cursor:pointer!important; +} + + +/* Media Queries */ +@media screen and (max-width: 600px) { + + .email-container { + width: 100% !important; + margin: auto !important; + } + + /* What it does: Forces elements to resize to the full width of their container. Useful for resizing images beyond their max-width. */ + .fluid { + max-width: 100% !important; + height: auto !important; + margin-left: auto !important; + margin-right: auto !important; + } + + /* What it does: Forces table cells into full-width rows. */ + .stack-column, + .stack-column-center { + display: block !important; + width: 100% !important; + max-width: 100% !important; + direction: ltr !important; + } + /* And center justify these ones. */ + .stack-column-center { + text-align: center !important; + } + + /* What it does: Generic utility class for centering. Useful for images, buttons, and nested tables. */ + .center-on-narrow { + text-align: center !important; + display: block !important; + margin-left: auto !important; + margin-right: auto !important; + float: none !important; + } + table.center-on-narrow { + display: inline-block !important; + } + + .input-text-control{ + display: block; + width: 100%; + height: 14px; + padding: 4px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s; + } + + /* What it does: Adjust typography on small screens to improve readability */ + .email-container p { + font-size: 17px !important; + line-height: 22px !important; + } + +} + +</style> + +</head> +<body width="100%" bgcolor="#E5E5E5" style="margin: 0px; mso-line-height-rule: exactly;"> + <center style="width: 600px; margin: auto; background: #FFFFFF; text-align: left;"> + <!-- Email Header : BEGIN --> + <table role="presentation" aria-hidden="true" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> + <tr> + <td style="padding: 20px 0px; text-align: center"> + <a href="http://www.veremes.com/" target="_blank"> + <svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="335px" height="100px" viewBox="0 0 335 100" enable-background="new 0 0 335 100" xml:space="preserve"> + <g> + <rect fill="#FFFFFF" width="335" height="100"/> + <g> + <path fill="#1A171B" d="M308.774,60.788c-0.99-1.493-2.537-2.688-4.64-3.589c-0.533-0.224-1.577-0.57-3.142-1.042 + c-1.563-0.47-2.75-0.959-3.567-1.472c-0.893-0.547-1.532-1.161-1.916-1.841c-0.386-0.682-0.577-1.517-0.577-2.511 + c0-1.4,0.466-2.572,1.398-3.516c0.933-0.944,2.098-1.417,3.498-1.417c1.561,0,2.793,0.437,3.695,1.308 + c0.901,0.873,1.402,2.1,1.505,3.681h4.622c-0.12-2.909-1.026-5.178-2.72-6.806c-1.69-1.626-3.972-2.439-6.845-2.439 + c-2.71,0-5.016,0.916-6.921,2.744c-1.904,1.831-2.856,4.057-2.856,6.678c0,2.319,0.569,4.168,1.714,5.551 + c1.143,1.383,3.582,2.734,7.318,4.056c2.334,0.858,3.947,1.775,4.838,2.754c0.891,0.98,1.336,2.274,1.336,3.884 + c0,1.612-0.561,2.947-1.682,4.007c-1.121,1.063-2.526,1.592-4.219,1.592c-1.772,0-3.262-0.69-4.463-2.071 + c-1.202-1.379-1.802-3.12-1.802-5.228v-0.122h-4.502c0.103,3.535,1.114,6.344,3.039,8.431c1.922,2.085,4.466,3.127,7.637,3.127 + c3.108,0,5.674-0.952,7.698-2.853c2.025-1.899,3.038-4.301,3.038-7.205C310.261,64.182,309.764,62.279,308.774,60.788z + M118.462,41.021c-5.17,0-9.417,1.679-12.739,5.035c-3.32,3.357-4.979,7.607-4.979,12.742c0,4.912,1.693,9.118,5.084,12.617 + c3.389,3.502,7.535,5.252,12.438,5.252c3.694,0,6.947-0.998,9.756-2.988c2.808-1.994,4.988-4.849,6.542-8.569h-4.866 + c-1.103,2.332-2.666,4.151-4.688,5.459c-2.023,1.308-4.302,1.962-6.834,1.962c-3.575,0-6.558-1.131-8.947-3.394 + c-2.391-2.263-3.718-5.226-3.983-8.894h30.413v-0.318c0-5.604-1.601-10.154-4.797-13.655 + C127.662,42.771,123.529,41.021,118.462,41.021z M105.366,56.472c0.509-3.468,1.901-6.219,4.17-8.258 + c2.27-2.037,5.04-3.056,8.313-3.056c3.517,0,6.368,0.948,8.556,2.844c2.188,1.897,3.692,4.719,4.509,8.47H105.366z M99.054,31.046 + L84.898,69.101L72.402,35.38l0.007-0.047l-0.079-0.217c-0.401-1.095-0.841-2.3-1.34-3.546l-0.194-0.523h-0.021 + c-2.108-5.143-5.249-10.879-10.817-12.957c-5.541-2.069-12.762-0.675-17.169,3.314c-3.422,3.096-5.471,7.843-6.089,14.111 + c0-0.002-0.117,1.154-0.117,1.154c-0.239,2.31-0.481,4.665-0.354,7.034l0.047,0.874l0.875-0.048l2.31-0.124l0.876-0.046 + l-0.049-0.876c-0.113-2.069,0.115-4.268,0.335-6.396c0-0.001,0.12-1.172,0.12-1.172c0.517-5.235,2.121-9.103,4.771-11.499 + c3.349-3.03,8.825-4.09,13.024-2.522c4.294,1.604,6.994,6.964,8.88,11.717l1.387,3.688l0.208,0.57l0.005-0.004L83.24,75.692h3.407 + l16.788-44.646H99.054z M268.755,41.021c-5.171,0-9.418,1.679-12.738,5.035c-3.32,3.357-4.979,7.607-4.979,12.742 + c0,4.912,1.692,9.118,5.084,12.617c3.389,3.502,7.535,5.252,12.438,5.252c3.695,0,6.947-0.998,9.758-2.988 + c2.807-1.994,4.986-4.849,6.54-8.569h-4.866c-1.102,2.332-2.666,4.151-4.688,5.459c-2.022,1.308-4.302,1.962-6.835,1.962 + c-3.574,0-6.557-1.131-8.945-3.394c-2.392-2.263-3.72-5.226-3.984-8.894h30.415v-0.318c0-5.604-1.603-10.154-4.8-13.655 + C277.955,42.771,273.821,41.021,268.755,41.021z M255.658,56.472c0.51-3.468,1.901-6.219,4.171-8.258 + c2.27-2.037,5.039-3.056,8.314-3.056c3.516,0,6.367,0.948,8.555,2.844c2.187,1.897,3.692,4.719,4.509,8.47H255.658z + M148.164,42.625c-1.253,0.705-2.409,1.808-3.465,3.315v-3.946h-4.074v33.698h4.379V55.395c0-3.099,0.583-5.334,1.754-6.711 + c1.17-1.376,3.11-2.187,5.821-2.431l-0.032-4.744C150.878,41.549,149.417,41.922,148.164,42.625z M172.22,41.021 + c-5.171,0-9.418,1.679-12.738,5.035c-3.321,3.357-4.981,7.607-4.981,12.742c0,4.912,1.694,9.118,5.085,12.617 + c3.389,3.502,7.535,5.252,12.438,5.252c3.695,0,6.947-0.998,9.757-2.988c2.808-1.994,4.988-4.849,6.541-8.569h-4.866 + c-1.102,2.332-2.665,4.151-4.688,5.459c-2.023,1.308-4.303,1.962-6.834,1.962c-3.574,0-6.557-1.131-8.947-3.394 + c-2.391-2.263-3.718-5.226-3.984-8.894h30.414v-0.318c0-5.604-1.6-10.154-4.799-13.655 + C181.419,42.771,177.286,41.021,172.22,41.021z M159.124,56.472c0.51-3.468,1.901-6.219,4.17-8.258 + c2.271-2.037,5.04-3.056,8.313-3.056c3.517,0,6.369,0.948,8.556,2.844c2.188,1.897,3.692,4.719,4.51,8.47H159.124z + M232.864,41.264c-2.51,0-4.779,0.509-6.809,1.518c-2.03,1.012-3.73,2.49-5.097,4.43c-1.106-1.818-2.712-3.264-4.82-4.338 + c-2.108-1.072-4.441-1.61-7-1.61c-2.212,0-4.191,0.379-5.941,1.134c-1.748,0.756-3.27,1.88-4.558,3.372v-3.776h-4.258v33.698 + h4.258V59.274c0-2.927,0.105-4.978,0.321-6.154c0.215-1.177,0.586-2.227,1.119-3.147c0.856-1.473,2.026-2.604,3.509-3.391 + c1.481-0.787,3.203-1.182,5.165-1.182c3.248,0,5.66,0.926,7.233,2.777c1.573,1.852,2.36,4.722,2.36,8.61v18.905h4.136V59.274 + c0-2.927,0.112-4.978,0.338-6.154c0.223-1.177,0.59-2.227,1.1-3.147c0.854-1.473,2.012-2.604,3.467-3.391 + c1.457-0.787,3.143-1.182,5.06-1.182c3.318,0,5.711,0.947,7.178,2.84c1.469,1.894,2.202,5.07,2.202,9.529v17.923h4.137V58.658 + c0-6.093-1.043-10.516-3.122-13.268C240.76,42.64,237.436,41.264,232.864,41.264z"/> + <g> + <path fill="#1A171B" d="M36.791,43.727c4.5,3.508,3.856-8.518,5.095-10.445c-0.251,0.39,1.045-0.227,1.359-0.68 + c0.714-1.033,0.78-1.304,1.783-0.467c0.685,0.57,4.073-2.156,5.011-2.76c-0.206-0.223,0.68,1.338,0.68,0.764 + c0,4.354-0.253,0.671,2.42,1.401c1.206,0.329,2.179-0.847,3.269,0.893c-0.283,0.31-0.566,0.621-0.849,0.933 + c4.111,1.071,3.139,4.072,7.134,6.029c-1.239,0.545-2.304,1.363-2.463,2.803c1.169,0.267,2.366,0.422,3.566,0.424 + c-0.34,0.311-0.679,0.622-1.02,0.934c2.158,0.346,2.307,2.235,4.671,1.699c-0.891,1.669-4.83,4.51-1.274,5.094 + c-0.198,0.085-0.396,0.171-0.594,0.255c0.745,0.477,1.172,1.362,1.868,1.868c-0.946,0.11-1.794,0.679-2.802,0.68 + c0.04,1.611,1.581,1.87,2.717,2.124c-2.577,1.72,0.311,0.894,0.722,2.122c-0.165-0.493,1.154,1.254,0.807,0.977 + c-0.173-0.139-1.318,0.596-0.807,1.062c0.174,0.158,4.875,0.583,1.98,1.482c-1.714,0.534-4.447,0.456-3.679,2.763 + c-1.174-0.126-1.886,0.235-2.845-0.083c0.154,0.687-0.067,0.846,0.213,1.442c-1.335,0.382-2.595-0.269-3.695-1.061 + c-0.042,0.268-0.084,0.537-0.127,0.806c-0.368-0.325-0.736-0.649-1.104-0.976c0.016,0.536-0.255,1.096-0.212,1.656 + c-0.877-0.677-5.258-4.209-2.972-1.189c0.905,1.195,1.842,1.439,2.93,2.463c-1.363,0.366-0.2,5.027,1.91,4.627 + c-1.045,1.709-3.151-0.414-4.289,1.828c1.419,0.304,0.683,0.515,1.826,1.146c-0.596-0.139-1.35,0.109-1.996-0.043 + c0.058,0.606,1.302,2.911,1.104,3.185c-0.761,1.05-2.778-1.146-3.949-1.146c-0.209,0.18-0.252,0.392-0.126,0.636 + c1.264,0.254,0.742,0.52,0.976,1.698c-2.448-0.878-0.467,0.231-0.467,1.104c0,3.686-2.677-0.092-2.548,2.505 + c-0.269-0.014-0.537-0.027-0.806-0.041c0.263,2.893-2.243-0.257-2.845,3.056c0.048,0.018-3.298-0.522-3.333-0.488 + c-1.136,1.135-1.402-0.027-2.174,0.598c-1.87,1.514-1.024-1.807-1.552-1.998c-0.694-0.253-2.246,1.984-2.455,0.573 + c-0.207-1.396-0.55-3.131-1.463-1.656c-0.954-0.37-3.546,0.314-3.842-0.572c-0.223-0.67-2.252-3.619-0.871-4.078 + c-0.407,0.137-1.347,0.543-1.719,0.765c0.857-2.833-1.515-2.188-3.185-1.146c0.104-1.69,0.899-3.521-1.083-3.247 + c0.293-0.662,0.337-1.645,0.828-2.356c-0.382,0.084-0.764,0.17-1.146,0.254c0.059-0.477,4.984-10.382,5.223-10.382 + c-0.199-0.062-0.369-0.169-0.51-0.318c-1.236,3.129-3.048,5.804-5.095,8.534c0.046-0.52-0.061-1.008-0.318-1.464 + c-0.23,0-1.983,2.339-2.548,2.61c0-0.253,0-0.509,0-0.763c-0.231,0.366-1.444,2.675-1.783,2.675c-0.329,0,0.481-1.796-0.51-1.467 + c-0.944,0.315-1.458,0.54-2.292,0.701c0.99-1.181,1.719-2.432-0.446-1.783c0.204-0.955-0.191-1.231-0.191-1.974 + c-0.159,0.41-0.393,0.771-0.7,1.084c-0.23-1.254-0.242-6.138-0.383-6.138c-1.46,0,0.123-2.937,0.341-3.312 + c-0.17-0.142-0.341-0.282-0.51-0.425c0.05,1.16-0.433,1.305-0.764,2.293c-1.08-1.767,1.521-3.314-0.764-3.99 + c0.311-0.256,0.623-0.51,0.934-0.765c-0.199-0.198-0.396-0.396-0.595-0.595c-0.269,0.61-0.729,1.216-1.02,1.783 + c-0.154-0.479,0.034-2.888,0.51-2.888c-0.313-0.017-0.624-0.044-0.935-0.084c0.723-0.973,0.495-1.264,1.444-1.699 + c-0.17-0.51-0.339-1.019-0.509-1.529c0.17,0.058,0.339,0.114,0.509,0.171c0.149,0.083-0.41-0.829-0.68-0.424 + c0.503-0.754,1.123-1.223,1.868-1.614c-0.283-0.17-0.566-0.34-0.849-0.51c0.664-0.432,1.176-1.357,2.038-1.698 + c-0.566-1.104-0.674-1.464-1.868-1.784c-0.033-2.104,1.163-9.234,2.717-8.407c-0.049-0.578-0.062-0.699,0.509-0.765 + c-0.087-1.145-0.637-0.797,0.595-1.104c-0.979-4.102,1.847-2.083,3.651-1.104c0-0.341,0-0.68,0-1.02 + c0.534,0.116,1.853,0.641,2.177,0.085c0.109-0.188-0.92-0.513-1.073-0.594c1.126-0.569,0.975-1.844,0.17-3.143 + c1.503,0.075,3.008,0.738,3.482-0.594c0.613,0.591,1.188,0.584,1.697,1.358c0.284-0.481,0.566-0.963,0.85-1.443 + c0.53,0.646,1.549,2.504,2.59,1.983c0.223-0.111,1.486,0.661,1.486,0.394c0-1.159,0.588-2.121,1.529-2.717 + C35.584,34.716,35.005,38.027,36.791,43.727"/> + </g> + </g> + </g> + </svg> + </a> + </td> + </tr> +</table> +<!-- Email Header : END --> + +<!-- Email Body : BEGIN --> +<table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> + + [CONTENT] + +</table> +<!-- Email Body : END --> + +<!-- Email Footer : BEGIN --> +<table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> + <tr> + <td style="padding: 0px;width: 100%;" class="x-gmail-data-detectors"> + <div class="bottom-strip" style="background-color: #39468A;"></div> + <div class="bottom-strip" style="background-color: #E74F23;"></div> + <div class="bottom-strip" style="background-color: #923288;"></div> + <div class="bottom-strip" style="background-color: #1C9DB2;"></div> + <div class="bottom-strip" style="background-color: #E10759;"></div> + </td> + </tr> +</table> +<table role="presentation" aria-hidden="true" cellspacing="0" cellpadding="0" border="0" align="center" width="600" style="margin: auto;" class="email-container"> + <tr> + <td style="padding: 10px;width: 50%;font-size: 12px; font-family: sans-serif; line-height:18px; text-align: center; color: #888888; cursor:pointer;" class="x-gmail-data-detectors"> + <a class="square-logo-layout" href="https://twitter.com/Veremes_Info" target="_blank" style="color: #24292E; cursor:pointer;"> + <!--<i class="fa fa-twitter" style=""></i>--> + <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> + <title>Twitter</title> + <path d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM75.28,37c0,.56,0,1.12,0,1.68C75.32,56,62.2,75.83,38.21,75.83h0a37,37,0,0,1-20-5.86,24.62,24.62,0,0,0,3.11.18,26.13,26.13,0,0,0,16.2-5.58,13,13,0,0,1-12.18-9.06,12.34,12.34,0,0,0,2.45.24,13,13,0,0,0,3.44-.46A13,13,0,0,1,20.77,42.5v-.16A13.11,13.11,0,0,0,26.68,44a13.05,13.05,0,0,1-4-17.42A37,37,0,0,0,49.52,40.18a13.19,13.19,0,0,1-.34-3,13.05,13.05,0,0,1,22.57-8.92A26.11,26.11,0,0,0,80,25.12a13.08,13.08,0,0,1-5.73,7.22,26.23,26.23,0,0,0,7.49-2.06A26.49,26.49,0,0,1,75.28,37Z"/> + </svg> + </a> + <a class="square-logo-layout" href="https://www.linkedin.com/company/veremes/" target="_blank" style="color: #24292E; cursor:pointer;"> + <!--<i class="fa fa-linkedin" style=""></i>--> + <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> + <title>LinkedIn</title> + <path d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM60.71,51a6.48,6.48,0,0,0-6.33,6.32V79.68H41.74V41.74H54.38v5a13.63,13.63,0,0,1,10.54-5.9A15,15,0,0,1,79.68,55.65v24H67V57.33A6.48,6.48,0,0,0,60.71,51ZM27,34.57A7.59,7.59,0,1,1,34.57,27,7.55,7.55,0,0,1,27,34.57Zm6.32,7.17V79.68H20.66V41.74Z"/> + </svg> + </a> + <a class="square-logo-layout" href="http://vm09.veremes.net/" target="_blank" style="color: #24292E; cursor:pointer;"> + <!--<i class="fa fa-github" style=""></i>--> + <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> + <title>GitLab</title> + <path d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM75.18,15.1a1,1,0,0,1,2,0l9,27.81h-20Zm-52.34,0a1,1,0,0,1,2,0l9,27.81h-20ZM9.85,61A2.63,2.63,0,0,1,8.9,58l4.35-13.4L47.16,88.07Zm4.33-17h20l14.3,44Zm21.19,0H64.63L50,89Zm30.42,0h20L51.49,88ZM90.15,61,52.84,88.07,86.75,44.62,91.1,58A2.63,2.63,0,0,1,90.15,61Z"/> + </svg> + </a> + <a class="square-logo-layout" href="http://www.veremes.com/" target="_blank" style="color: #24292E; cursor:pointer;"> + <!--<i class="fa fa-globe" style=""></i>--> + <svg id="Calque_1" data-name="Calque 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" style="fill: currentColor; cursor:pointer;"> + <defs> + <style>.cls-1{fill:none;}</style> + </defs> + <title>Veremes</title> + <path class="cls-1" d="M60.17,18.09h0S60.15,18.05,60.17,18.09Z"/> + <path class="cls-1" d="M48.39,26.38c.66-6.65,2.7-11.56,6.06-14.6a11.45,11.45,0,0,1,1.82-1.29A40.5,40.5,0,0,0,50,10l-1,0c-3.18,3.87-5.13,9.17-5.79,15.85l-.15,1.47c-.21,2.06-.42,4.16-.47,6.28-1.35-5.7-.83-9.69-1.1-15.87A4,4,0,0,0,39.6,21.2c0,.34-1.6-.64-1.88-.5-1.33.67-2.62-1.69-3.29-2.51L33.35,20c-.65-1-1.38-1-2.16-1.73-.6,1.69-2.51.85-4.42.76,1,1.65,1.21,3.26-.21,4,.19.1,1.5.51,1.36.75-.41.71-2.09,0-2.77-.11V25c-2.29-1.25-5.88-3.81-4.63,1.4-1.57.39-.87-.05-.76,1.4-.72.09-.71.24-.64,1-2-1.05-3.5,8-3.45,10.68,1.51.4,1.65.86,2.37,2.26-1.1.43-1.75,1.61-2.59,2.16l1.08.64a6,6,0,0,0-2.37,2c.34-.51,1.05.65.86.54l-.65-.22c.22.65.43,1.3.65,2-1.21.55-.92.92-1.83,2.15.39,0,.78.09,1.18.11-.6,0-.84,3.06-.65,3.67.37-.72,1-1.49,1.3-2.27l.75.76-1.18,1c2.9.86-.4,2.82,1,5.06.42-1.25,1-1.43,1-2.91l.65.54c-.28.48-2.29,4.21-.44,4.21.18,0,.2,6.2.49,7.79a4,4,0,0,0,.89-1.38c0,.95.5,1.3.24,2.51,2.75-.82,1.82.76.57,2.26a20.92,20.92,0,0,0,2.91-.89c1.26-.41.23,1.86.64,1.86s2-2.93,2.27-3.39v1c.72-.35,2.94-3.32,3.23-3.32a3.11,3.11,0,0,1,.41,1.86,46.51,46.51,0,0,0,6.47-10.83,1.46,1.46,0,0,0,.65.4c-.31,0-6.56,12.58-6.64,13.18l1.46-.32c-.63.9-.68,2.15-1,3,2.51-.35,1.5,2,1.37,4.13,2.12-1.33,5.14-2.15,4.05,1.45a15.73,15.73,0,0,1,2.18-1c-1.76.58.82,4.33,1.11,5.17.37,1.13,3.66.26,4.87.73,1.16-1.87,1.6.33,1.86,2.11s2.24-1,3.12-.73c.67.24-.4,4.46,2,2.53,1-.79,1.32.68,2.76-.75,0,0,4.29.64,4.23.62.77-4.21,3.94-.21,3.61-3.88l1,0c-.16-3.3,3.24,1.5,3.24-3.18,0-1.11-2.52-2.52.59-1.4-.29-1.5.37-1.84-1.24-2.16a.62.62,0,0,1,.16-.81c1.49,0,4,2.79,5,1.46.25-.35-1.33-3.28-1.4-4,.82.2,1.77-.12,2.53.06-1.45-.8-.52-1.07-2.32-1.46,1.45-2.84,4.12-.15,5.45-2.32C70.78,71.9,69.3,66,71,65.52c-1.38-1.3-2.57-1.61-3.72-3.13-2.9-3.83,2.66.65,3.78,1.51-.06-.71.28-1.42.27-2.1L72.76,63c0-.34.11-.69.16-1,1.4,1,3,1.83,4.69,1.35-.35-.76-.08-1-.27-1.83,1.22.4,2.12-.06,3.61.11-1-2.93,2.5-2.84,4.67-3.51,3.68-1.15-2.29-1.68-2.51-1.88-.65-.6.8-1.53,1-1.35.44.35-1.23-1.87-1-1.24-.52-1.56-4.19-.51-.92-2.7-1.44-.32-3.4-.65-3.45-2.69,1.28,0,2.36-.73,3.56-.87-.89-.64-1.43-1.76-2.37-2.37l.75-.32c-4.51-.74.49-4.35,1.62-6.47-3,.68-3.19-1.72-5.93-2.16l1.29-1.18a20.84,20.84,0,0,1-4.52-.54c.19-1.83,1.55-2.87,3.12-3.56-5.07-2.49-3.84-6.3-9.06-7.66L68.28,22c-1.38-2.21-2.62-.72-4.15-1.13-3.39-.93-3.07,3.75-3.07-1.78,0,.62-.81-.72-.89-1-1.22.8-5.47,4.21-6.34,3.49-1.27-1.06-1.35-.72-2.26.59-.4.58-2,1.36-1.73.87-.9,1.41-1,7.1-2.05,10.79,0-2,.25-4,.45-6Z"/> + <path d="M99.94,47.71l0-.64c0-.61-.08-1.23-.14-1.84,0-.16,0-.31,0-.46-.08-.74-.17-1.47-.28-2.2,0-.19-.06-.38-.1-.57q-.13-.86-.3-1.68l-.12-.64c-.15-.7-.31-1.39-.48-2.08,0-.15-.09-.3-.13-.45-.14-.56-.3-1.11-.46-1.65-.08-.24-.15-.49-.23-.73-.16-.51-.34-1-.52-1.54-.06-.17-.12-.35-.19-.53-.23-.62-.47-1.24-.73-1.85-.11-.27-.22-.53-.34-.8s-.35-.78-.53-1.17l-.38-.81c-.27-.56-.56-1.11-.85-1.66-.16-.3-.33-.59-.49-.88s-.35-.61-.53-.92-.37-.63-.57-.94L92,22.86q-.55-.86-1.14-1.68l-.45-.62c-.25-.35-.51-.69-.77-1-.13-.18-.27-.35-.41-.52q-1.36-1.74-2.9-3.35L86,15.35q-1.66-1.72-3.48-3.29L82.46,12a51.79,51.79,0,0,0-5.4-4h0a49.56,49.56,0,0,0-4.42-2.54h0A49.59,49.59,0,0,0,63.94,2h0c-1.56-.45-3.16-.83-4.78-1.13L58.49.73,57.21.52C56.59.43,56,.35,55.33.29L54.54.21,53,.1l-.73,0C51.51,0,50.76,0,50,0a50,50,0,1,0,50,50C100,49.23,100,48.47,99.94,47.71ZM49.84,23c-.31.49,1.33-.29,1.73-.87.91-1.31,1-1.65,2.26-.59.87.72,5.12-2.69,6.34-3.49,0,0,0-.06,0,0h0c.08.24.89,1.58.89,1,0,5.53-.32.85,3.07,1.78,1.53.41,2.77-1.08,4.15,1.13L67.2,23.14c5.22,1.36,4,5.17,9.06,7.66-1.57.69-2.93,1.73-3.12,3.56a20.84,20.84,0,0,0,4.52.54l-1.29,1.18c2.74.44,2.92,2.84,5.93,2.16-1.13,2.12-6.13,5.73-1.62,6.47l-.75.32c.94.61,1.48,1.73,2.37,2.37-1.2.14-2.28.86-3.56.87.05,2,2,2.37,3.45,2.69-3.27,2.19.4,1.14.92,2.7-.21-.63,1.46,1.59,1,1.24-.22-.18-1.67.75-1,1.35.22.2,6.19.73,2.51,1.88-2.17.67-5.64.58-4.67,3.51-1.49-.17-2.39.29-3.61-.11.19.87-.08,1.07.27,1.83-1.7.48-3.29-.34-4.69-1.35,0,.34-.11.69-.16,1l-1.4-1.24c0,.68-.33,1.39-.27,2.1C70,63,64.41,58.56,67.31,62.39c1.15,1.52,2.34,1.83,3.72,3.13-1.73.46-.25,6.38,2.43,5.87-1.33,2.17-4-.52-5.45,2.32,1.8.39.87.66,2.32,1.46-.76-.18-1.71.14-2.53-.06.07.77,1.65,3.7,1.4,4-1,1.33-3.53-1.46-5-1.46a.62.62,0,0,0-.16.81c1.61.32,1,.66,1.24,2.16-3.11-1.12-.59.29-.59,1.4,0,4.68-3.4-.12-3.24,3.18l-1,0c.33,3.67-2.84-.33-3.61,3.88.06,0-4.19-.67-4.23-.62-1.44,1.43-1.78,0-2.76.75-2.37,1.93-1.3-2.29-2-2.53-.88-.32-2.86,2.52-3.12.73s-.7-4-1.86-2.11c-1.21-.47-4.5.4-4.87-.73-.29-.84-2.87-4.59-1.11-5.17a15.73,15.73,0,0,0-2.18,1c1.09-3.6-1.93-2.78-4.05-1.45.13-2.15,1.14-4.48-1.37-4.13.37-.84.42-2.09,1-3l-1.46.32c.08-.6,6.33-13.18,6.64-13.18a1.46,1.46,0,0,1-.65-.4,46.51,46.51,0,0,1-6.47,10.83A3.11,3.11,0,0,0,28,67.51c-.29,0-2.51,3-3.23,3.32v-1c-.3.46-1.83,3.39-2.27,3.39s.62-2.27-.64-1.86a20.92,20.92,0,0,1-2.91.89c1.25-1.5,2.18-3.08-.57-2.26.26-1.21-.24-1.56-.24-2.51a4,4,0,0,1-.89,1.38c-.29-1.59-.31-7.79-.49-7.79-1.85,0,.16-3.73.44-4.21l-.65-.54c.06,1.48-.55,1.66-1,2.91-1.37-2.24,1.93-4.2-1-5.06l1.18-1L15,52.47c-.34.78-.93,1.55-1.3,2.27-.19-.61,0-3.67.65-3.67-.4,0-.79-.06-1.18-.11.91-1.23.62-1.6,1.83-2.15-.22-.65-.43-1.3-.65-2l.65.22c.19.11-.52-1-.86-.54a6,6,0,0,1,2.37-2l-1.08-.64c.84-.55,1.49-1.73,2.59-2.16-.72-1.4-.86-1.86-2.37-2.26-.05-2.68,1.47-11.73,3.45-10.68-.07-.73-.08-.88.64-1-.11-1.45-.81-1,.76-1.4-1.25-5.21,2.34-2.65,4.63-1.4v-1.3c.68.15,2.36.82,2.77.11.14-.24-1.17-.65-1.36-.75,1.42-.73,1.23-2.34.21-4,1.91.09,3.82.93,4.42-.76C32,19,32.7,19,33.35,20l1.08-1.83c.67.82,2,3.18,3.29,2.51.28-.14,1.88.84,1.88.5a4,4,0,0,1,1.94-3.45c.27,6.18-.25,10.17,1.1,15.87,0-2.12.26-4.22.47-6.28l.15-1.47c.66-6.68,2.61-12,5.79-15.85l1,0a40.5,40.5,0,0,1,6.27.49,11.45,11.45,0,0,0-1.82,1.29c-3.36,3-5.4,8-6.06,14.6l-.15,1.49c-.2,2-.41,4-.45,6C48.82,30.14,48.94,24.45,49.84,23Z"/> + </svg> + </a> + </td> + <td style="padding: 10px;width: 50%;font-size: 20px; font-family: sans-serif; line-height:18px; text-align: center; color: #000000;" class="x-gmail-data-detectors"> + <div style="margin-bottom:10px;">Pour toute question :</div> + <div>support@veremes.com</div> + </td> + </tr> +</table> +<!-- Email Footer : END --> + +</center> +[SCRIPT] +</body> +</html>'; ?> \ No newline at end of file diff --git a/src/vitis/vas/rest/ws/vitis/Accounts.class.sql.inc b/vas/rest/ws/vitis/Accounts.class.sql.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Accounts.class.sql.inc rename to vas/rest/ws/vitis/Accounts.class.sql.inc diff --git a/src/vitis/vas/rest/ws/vitis/Action.class.inc b/vas/rest/ws/vitis/Action.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Action.class.inc rename to vas/rest/ws/vitis/Action.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Actions.class.inc b/vas/rest/ws/vitis/Actions.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Actions.class.inc rename to vas/rest/ws/vitis/Actions.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/ActiveDirectory.class.inc b/vas/rest/ws/vitis/ActiveDirectory.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/ActiveDirectory.class.inc rename to vas/rest/ws/vitis/ActiveDirectory.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/BillingGroup.class.inc b/vas/rest/ws/vitis/BillingGroup.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/BillingGroup.class.inc rename to vas/rest/ws/vitis/BillingGroup.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/BillingGroups.class.inc b/vas/rest/ws/vitis/BillingGroups.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/BillingGroups.class.inc rename to vas/rest/ws/vitis/BillingGroups.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Column.class.inc b/vas/rest/ws/vitis/Column.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Column.class.inc rename to vas/rest/ws/vitis/Column.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Columns.class.inc b/vas/rest/ws/vitis/Columns.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Columns.class.inc rename to vas/rest/ws/vitis/Columns.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Database.class.inc b/vas/rest/ws/vitis/Database.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Database.class.inc rename to vas/rest/ws/vitis/Database.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Domain.class.inc b/vas/rest/ws/vitis/Domain.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Domain.class.inc rename to vas/rest/ws/vitis/Domain.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Domains.class.inc b/vas/rest/ws/vitis/Domains.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Domains.class.inc rename to vas/rest/ws/vitis/Domains.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Exploitations.class.inc b/vas/rest/ws/vitis/Exploitations.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Exploitations.class.inc rename to vas/rest/ws/vitis/Exploitations.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/FormatDate.class.inc b/vas/rest/ws/vitis/FormatDate.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/FormatDate.class.inc rename to vas/rest/ws/vitis/FormatDate.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/FormatDates.class.inc b/vas/rest/ws/vitis/FormatDates.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/FormatDates.class.inc rename to vas/rest/ws/vitis/FormatDates.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/GenericQuery.class.inc b/vas/rest/ws/vitis/GenericQuery.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/GenericQuery.class.inc rename to vas/rest/ws/vitis/GenericQuery.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/GenericQuerys.class.inc b/vas/rest/ws/vitis/GenericQuerys.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/GenericQuerys.class.inc rename to vas/rest/ws/vitis/GenericQuerys.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/GenericQuerys.class.sql.inc b/vas/rest/ws/vitis/GenericQuerys.class.sql.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/GenericQuerys.class.sql.inc rename to vas/rest/ws/vitis/GenericQuerys.class.sql.inc diff --git a/src/vitis/vas/rest/ws/vitis/Group.class.inc b/vas/rest/ws/vitis/Group.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Group.class.inc rename to vas/rest/ws/vitis/Group.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Groups.class.inc b/vas/rest/ws/vitis/Groups.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Groups.class.inc rename to vas/rest/ws/vitis/Groups.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Logs.class.inc b/vas/rest/ws/vitis/Logs.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Logs.class.inc rename to vas/rest/ws/vitis/Logs.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Mode.class.inc b/vas/rest/ws/vitis/Mode.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Mode.class.inc rename to vas/rest/ws/vitis/Mode.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Modes.class.inc b/vas/rest/ws/vitis/Modes.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Modes.class.inc rename to vas/rest/ws/vitis/Modes.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/PhpInfo.class.inc b/vas/rest/ws/vitis/PhpInfo.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/PhpInfo.class.inc rename to vas/rest/ws/vitis/PhpInfo.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/PrivateToken.class.inc b/vas/rest/ws/vitis/PrivateToken.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/PrivateToken.class.inc rename to vas/rest/ws/vitis/PrivateToken.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Privilege.class.inc b/vas/rest/ws/vitis/Privilege.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Privilege.class.inc rename to vas/rest/ws/vitis/Privilege.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Privileges.class.inc b/vas/rest/ws/vitis/Privileges.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Privileges.class.inc rename to vas/rest/ws/vitis/Privileges.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Properties.class.inc b/vas/rest/ws/vitis/Properties.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Properties.class.inc rename to vas/rest/ws/vitis/Properties.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/PublicToken.class.inc b/vas/rest/ws/vitis/PublicToken.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/PublicToken.class.inc rename to vas/rest/ws/vitis/PublicToken.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Ressources.class.inc b/vas/rest/ws/vitis/Ressources.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Ressources.class.inc rename to vas/rest/ws/vitis/Ressources.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Schema.class.inc b/vas/rest/ws/vitis/Schema.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Schema.class.inc rename to vas/rest/ws/vitis/Schema.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/SmtpServer.class.inc b/vas/rest/ws/vitis/SmtpServer.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/SmtpServer.class.inc rename to vas/rest/ws/vitis/SmtpServer.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Tab.class.inc b/vas/rest/ws/vitis/Tab.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Tab.class.inc rename to vas/rest/ws/vitis/Tab.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Table.class.inc b/vas/rest/ws/vitis/Table.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Table.class.inc rename to vas/rest/ws/vitis/Table.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Tabs.class.inc b/vas/rest/ws/vitis/Tabs.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Tabs.class.inc rename to vas/rest/ws/vitis/Tabs.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/TimeZone.class.inc b/vas/rest/ws/vitis/TimeZone.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/TimeZone.class.inc rename to vas/rest/ws/vitis/TimeZone.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/TimeZones.class.inc b/vas/rest/ws/vitis/TimeZones.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/TimeZones.class.inc rename to vas/rest/ws/vitis/TimeZones.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/User.class.inc b/vas/rest/ws/vitis/User.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/User.class.inc rename to vas/rest/ws/vitis/User.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Users.class.inc b/vas/rest/ws/vitis/Users.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Users.class.inc rename to vas/rest/ws/vitis/Users.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Versions.class.inc b/vas/rest/ws/vitis/Versions.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Versions.class.inc rename to vas/rest/ws/vitis/Versions.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Vitis.class.inc b/vas/rest/ws/vitis/Vitis.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Vitis.class.inc rename to vas/rest/ws/vitis/Vitis.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/Vitis.class.sql.inc b/vas/rest/ws/vitis/Vitis.class.sql.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/Vitis.class.sql.inc rename to vas/rest/ws/vitis/Vitis.class.sql.inc diff --git a/src/vitis/vas/rest/ws/vitis/VitisSection.class.inc b/vas/rest/ws/vitis/VitisSection.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/VitisSection.class.inc rename to vas/rest/ws/vitis/VitisSection.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/VitisSections.class.inc b/vas/rest/ws/vitis/VitisSections.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/VitisSections.class.inc rename to vas/rest/ws/vitis/VitisSections.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/WebServices.class.inc b/vas/rest/ws/vitis/WebServices.class.inc similarity index 100% rename from src/vitis/vas/rest/ws/vitis/WebServices.class.inc rename to vas/rest/ws/vitis/WebServices.class.inc diff --git a/src/vitis/vas/rest/ws/vitis/overview.phtml b/vas/rest/ws/vitis/overview.phtml similarity index 100% rename from src/vitis/vas/rest/ws/vitis/overview.phtml rename to vas/rest/ws/vitis/overview.phtml diff --git a/src/vitis/vas/tmp/file_to_delete.txt b/vas/tmp/file_to_delete.txt similarity index 100% rename from src/vitis/vas/tmp/file_to_delete.txt rename to vas/tmp/file_to_delete.txt diff --git a/src/vitis/vas/util/coordsys.txt b/vas/util/coordsys.txt similarity index 100% rename from src/vitis/vas/util/coordsys.txt rename to vas/util/coordsys.txt diff --git a/src/vitis/vas/util/migration/anc/SplitAddress.fmx b/vas/util/migration/anc/SplitAddress.fmx similarity index 100% rename from src/vitis/vas/util/migration/anc/SplitAddress.fmx rename to vas/util/migration/anc/SplitAddress.fmx diff --git a/src/vitis/vas/util/migration/anc/lisez-moi.txt b/vas/util/migration/anc/lisez-moi.txt similarity index 100% rename from src/vitis/vas/util/migration/anc/lisez-moi.txt rename to vas/util/migration/anc/lisez-moi.txt diff --git a/src/vitis/vas/util/migration/anc/migration_anc_veremap__vmap.fmw b/vas/util/migration/anc/migration_anc_veremap__vmap.fmw similarity index 100% rename from src/vitis/vas/util/migration/anc/migration_anc_veremap__vmap.fmw rename to vas/util/migration/anc/migration_anc_veremap__vmap.fmw diff --git a/src/vitis/vas/util/migration/migration_user_and_group.fmw b/vas/util/migration/migration_user_and_group.fmw similarity index 100% rename from src/vitis/vas/util/migration/migration_user_and_group.fmw rename to vas/util/migration/migration_user_and_group.fmw diff --git a/src/vitis/vas/util/migration/migration_veremap_layer.fmw b/vas/util/migration/migration_veremap_layer.fmw similarity index 100% rename from src/vitis/vas/util/migration/migration_veremap_layer.fmw rename to vas/util/migration/migration_veremap_layer.fmw diff --git a/src/vitis/vas/util/printserver/client/lib/angular/LICENSE b/vas/util/printserver/client/lib/angular/LICENSE similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/LICENSE rename to vas/util/printserver/client/lib/angular/LICENSE diff --git a/src/vitis/vas/util/printserver/client/lib/angular/angular.js b/vas/util/printserver/client/lib/angular/angular.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/angular.js rename to vas/util/printserver/client/lib/angular/angular.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/angular.min.js b/vas/util/printserver/client/lib/angular/angular.min.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/angular.min.js rename to vas/util/printserver/client/lib/angular/angular.min.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/angular.min.js.map b/vas/util/printserver/client/lib/angular/angular.min.js.map similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/angular.min.js.map rename to vas/util/printserver/client/lib/angular/angular.min.js.map diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/angular-route/angular-route.js b/vas/util/printserver/client/lib/angular/modules/angular-route/angular-route.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/angular-route/angular-route.js rename to vas/util/printserver/client/lib/angular/modules/angular-route/angular-route.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/LICENSE b/vas/util/printserver/client/lib/angular/modules/angular-translate/LICENSE similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/LICENSE rename to vas/util/printserver/client/lib/angular/modules/angular-translate/LICENSE diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-partial.js b/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-partial.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-partial.js rename to vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-partial.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-partial.min.js b/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-partial.min.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-partial.min.js rename to vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-partial.min.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-static-files.js b/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-static-files.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-static-files.js rename to vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-static-files.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-static-files.min.js b/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-static-files.min.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-static-files.min.js rename to vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate-loader-static-files.min.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate.js b/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate.js rename to vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate.min.js b/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate.min.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate.min.js rename to vas/util/printserver/client/lib/angular/modules/angular-translate/angular-translate.min.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.js b/vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.js rename to vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.min.js b/vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.min.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.min.js rename to vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.min.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.min.js.map b/vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.min.js.map similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.min.js.map rename to vas/util/printserver/client/lib/angular/modules/sanitize/angular-sanitize.min.js.map diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/ui-codemirror/LICENSE b/vas/util/printserver/client/lib/angular/modules/ui-codemirror/LICENSE similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/ui-codemirror/LICENSE rename to vas/util/printserver/client/lib/angular/modules/ui-codemirror/LICENSE diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/ui-codemirror/ui-codemirror.min.js b/vas/util/printserver/client/lib/angular/modules/ui-codemirror/ui-codemirror.min.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/ui-codemirror/ui-codemirror.min.js rename to vas/util/printserver/client/lib/angular/modules/ui-codemirror/ui-codemirror.min.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/ui-grid/LICENSE.md b/vas/util/printserver/client/lib/angular/modules/ui-grid/LICENSE.md similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/ui-grid/LICENSE.md rename to vas/util/printserver/client/lib/angular/modules/ui-grid/LICENSE.md diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/ui-grid/plugins/draggable-rows.js b/vas/util/printserver/client/lib/angular/modules/ui-grid/plugins/draggable-rows.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/ui-grid/plugins/draggable-rows.js rename to vas/util/printserver/client/lib/angular/modules/ui-grid/plugins/draggable-rows.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/ui-grid/ui-grid.js b/vas/util/printserver/client/lib/angular/modules/ui-grid/ui-grid.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/ui-grid/ui-grid.js rename to vas/util/printserver/client/lib/angular/modules/ui-grid/ui-grid.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/ui-grid/ui-grid.min.js b/vas/util/printserver/client/lib/angular/modules/ui-grid/ui-grid.min.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/ui-grid/ui-grid.min.js rename to vas/util/printserver/client/lib/angular/modules/ui-grid/ui-grid.min.js diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/ui-tinymce/LICENSE b/vas/util/printserver/client/lib/angular/modules/ui-tinymce/LICENSE similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/ui-tinymce/LICENSE rename to vas/util/printserver/client/lib/angular/modules/ui-tinymce/LICENSE diff --git a/src/vitis/vas/util/printserver/client/lib/angular/modules/ui-tinymce/tinymce.js b/vas/util/printserver/client/lib/angular/modules/ui-tinymce/tinymce.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/angular/modules/ui-tinymce/tinymce.js rename to vas/util/printserver/client/lib/angular/modules/ui-tinymce/tinymce.js diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/LICENSE b/vas/util/printserver/client/lib/bootstrap/LICENSE similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/LICENSE rename to vas/util/printserver/client/lib/bootstrap/LICENSE diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.css b/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.css similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.css rename to vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.css diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.css.map b/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.css.map similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.css.map rename to vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.css.map diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.min.css b/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.min.css similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.min.css rename to vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.min.css diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.min.css.map b/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.min.css.map similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.min.css.map rename to vas/util/printserver/client/lib/bootstrap/css/bootstrap-theme.min.css.map diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap.css b/vas/util/printserver/client/lib/bootstrap/css/bootstrap.css similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap.css rename to vas/util/printserver/client/lib/bootstrap/css/bootstrap.css diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap.css.map b/vas/util/printserver/client/lib/bootstrap/css/bootstrap.css.map similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap.css.map rename to vas/util/printserver/client/lib/bootstrap/css/bootstrap.css.map diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap.min.css b/vas/util/printserver/client/lib/bootstrap/css/bootstrap.min.css similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap.min.css rename to vas/util/printserver/client/lib/bootstrap/css/bootstrap.min.css diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap.min.css.map b/vas/util/printserver/client/lib/bootstrap/css/bootstrap.min.css.map similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/css/bootstrap.min.css.map rename to vas/util/printserver/client/lib/bootstrap/css/bootstrap.min.css.map diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.eot b/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.eot rename to vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.eot diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.svg b/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.svg rename to vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.svg diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf b/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf rename to vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.woff b/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.woff rename to vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 rename to vas/util/printserver/client/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/js/bootstrap.js b/vas/util/printserver/client/lib/bootstrap/js/bootstrap.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/js/bootstrap.js rename to vas/util/printserver/client/lib/bootstrap/js/bootstrap.js diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/js/bootstrap.min.js b/vas/util/printserver/client/lib/bootstrap/js/bootstrap.min.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/js/bootstrap.min.js rename to vas/util/printserver/client/lib/bootstrap/js/bootstrap.min.js diff --git a/src/vitis/vas/util/printserver/client/lib/bootstrap/js/npm.js b/vas/util/printserver/client/lib/bootstrap/js/npm.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/bootstrap/js/npm.js rename to vas/util/printserver/client/lib/bootstrap/js/npm.js diff --git a/src/vitis/vas/util/printserver/client/lib/closure/goog/base.js b/vas/util/printserver/client/lib/closure/goog/base.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/closure/goog/base.js rename to vas/util/printserver/client/lib/closure/goog/base.js diff --git a/src/vitis/vas/util/printserver/client/lib/jquery/LICENSE.txt b/vas/util/printserver/client/lib/jquery/LICENSE.txt similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/jquery/LICENSE.txt rename to vas/util/printserver/client/lib/jquery/LICENSE.txt diff --git a/src/vitis/vas/util/printserver/client/lib/jquery/jquery-1.11.3.js b/vas/util/printserver/client/lib/jquery/jquery-1.11.3.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/jquery/jquery-1.11.3.js rename to vas/util/printserver/client/lib/jquery/jquery-1.11.3.js diff --git a/src/vitis/vas/util/printserver/client/lib/jquery/jquery-1.11.3.min.js b/vas/util/printserver/client/lib/jquery/jquery-1.11.3.min.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/jquery/jquery-1.11.3.min.js rename to vas/util/printserver/client/lib/jquery/jquery-1.11.3.min.js diff --git a/src/vitis/vas/util/printserver/client/lib/jquery/jquery-1.11.3.min.map b/vas/util/printserver/client/lib/jquery/jquery-1.11.3.min.map similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/jquery/jquery-1.11.3.min.map rename to vas/util/printserver/client/lib/jquery/jquery-1.11.3.min.map diff --git a/src/vitis/vas/util/printserver/client/lib/mapJSON/MapJSON.js b/vas/util/printserver/client/lib/mapJSON/MapJSON.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/mapJSON/MapJSON.js rename to vas/util/printserver/client/lib/mapJSON/MapJSON.js diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol-debug.js b/vas/util/printserver/client/lib/ol/ol-debug.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol-debug.js rename to vas/util/printserver/client/lib/ol/ol-debug.js diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol.css b/vas/util/printserver/client/lib/ol/ol.css similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol.css rename to vas/util/printserver/client/lib/ol/ol.css diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol.js b/vas/util/printserver/client/lib/ol/ol.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol.js rename to vas/util/printserver/client/lib/ol/ol.js diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/licence.txt b/vas/util/printserver/client/lib/ol/ol3-ext/licence.txt similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/licence.txt rename to vas/util/printserver/client/lib/ol/ol3-ext/licence.txt diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/readme.txt b/vas/util/printserver/client/lib/ol/ol3-ext/readme.txt similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/readme.txt rename to vas/util/printserver/client/lib/ol/ol3-ext/readme.txt diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/style/fonts/fontawesome.def.js b/vas/util/printserver/client/lib/ol/ol3-ext/style/fonts/fontawesome.def.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/style/fonts/fontawesome.def.js rename to vas/util/printserver/client/lib/ol/ol3-ext/style/fonts/fontawesome.def.js diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/style/fontsymbol.js b/vas/util/printserver/client/lib/ol/ol3-ext/style/fontsymbol.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/style/fontsymbol.js rename to vas/util/printserver/client/lib/ol/ol3-ext/style/fontsymbol.js diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/style/shadowstyle.js b/vas/util/printserver/client/lib/ol/ol3-ext/style/shadowstyle.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/style/shadowstyle.js rename to vas/util/printserver/client/lib/ol/ol3-ext/style/shadowstyle.js diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/utils/ol.ordering.js b/vas/util/printserver/client/lib/ol/ol3-ext/utils/ol.ordering.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol3-ext/utils/ol.ordering.js rename to vas/util/printserver/client/lib/ol/ol3-ext/utils/ol.ordering.js diff --git a/src/vitis/vas/util/printserver/client/lib/ol/ol3-veremes/ol.veremes.js b/vas/util/printserver/client/lib/ol/ol3-veremes/ol.veremes.js similarity index 100% rename from src/vitis/vas/util/printserver/client/lib/ol/ol3-veremes/ol.veremes.js rename to vas/util/printserver/client/lib/ol/ol3-veremes/ol.veremes.js diff --git a/src/vitis/vas/util/printserver/client/map/index.html b/vas/util/printserver/client/map/index.html similarity index 100% rename from src/vitis/vas/util/printserver/client/map/index.html rename to vas/util/printserver/client/map/index.html diff --git a/src/vitis/vas/util/printserver/client/map/index.js b/vas/util/printserver/client/map/index.js similarity index 100% rename from src/vitis/vas/util/printserver/client/map/index.js rename to vas/util/printserver/client/map/index.js diff --git a/src/vitis/vas/util/printserver/client/map/map.js b/vas/util/printserver/client/map/map.js similarity index 100% rename from src/vitis/vas/util/printserver/client/map/map.js rename to vas/util/printserver/client/map/map.js diff --git a/src/vitis/vas/util/printserver/client/map/progress.js b/vas/util/printserver/client/map/progress.js similarity index 100% rename from src/vitis/vas/util/printserver/client/map/progress.js rename to vas/util/printserver/client/map/progress.js diff --git a/src/vitis/vas/util/printserver/client/map/projections.js b/vas/util/printserver/client/map/projections.js similarity index 100% rename from src/vitis/vas/util/printserver/client/map/projections.js rename to vas/util/printserver/client/map/projections.js diff --git a/src/vitis/vas/util/printserver/client/map/scale.js b/vas/util/printserver/client/map/scale.js similarity index 100% rename from src/vitis/vas/util/printserver/client/map/scale.js rename to vas/util/printserver/client/map/scale.js diff --git a/src/vitis/vas/util/printserver/client/report/index.html b/vas/util/printserver/client/report/index.html similarity index 100% rename from src/vitis/vas/util/printserver/client/report/index.html rename to vas/util/printserver/client/report/index.html diff --git a/src/vitis/vas/util/printserver/client/report/index.js b/vas/util/printserver/client/report/index.js similarity index 100% rename from src/vitis/vas/util/printserver/client/report/index.js rename to vas/util/printserver/client/report/index.js diff --git a/src/vitis/vas/util/printserver/client/report/report.js b/vas/util/printserver/client/report/report.js similarity index 100% rename from src/vitis/vas/util/printserver/client/report/report.js rename to vas/util/printserver/client/report/report.js diff --git a/src/vitis/vas/util/printserver/client/template/index.html b/vas/util/printserver/client/template/index.html similarity index 100% rename from src/vitis/vas/util/printserver/client/template/index.html rename to vas/util/printserver/client/template/index.html diff --git a/src/vitis/vas/util/printserver/client/template/index.js b/vas/util/printserver/client/template/index.js similarity index 100% rename from src/vitis/vas/util/printserver/client/template/index.js rename to vas/util/printserver/client/template/index.js diff --git a/src/vitis/vas/util/printserver/client/template/template.js b/vas/util/printserver/client/template/template.js similarity index 100% rename from src/vitis/vas/util/printserver/client/template/template.js rename to vas/util/printserver/client/template/template.js diff --git a/src/vitis/vas/util/printserver/client/utils/http.js b/vas/util/printserver/client/utils/http.js similarity index 100% rename from src/vitis/vas/util/printserver/client/utils/http.js rename to vas/util/printserver/client/utils/http.js diff --git a/src/vitis/vas/util/printserver/client/utils/properties.js b/vas/util/printserver/client/utils/properties.js similarity index 100% rename from src/vitis/vas/util/printserver/client/utils/properties.js rename to vas/util/printserver/client/utils/properties.js diff --git a/src/vitis/vas/util/printserver/client/utils/utils.js b/vas/util/printserver/client/utils/utils.js similarity index 100% rename from src/vitis/vas/util/printserver/client/utils/utils.js rename to vas/util/printserver/client/utils/utils.js diff --git a/src/vitis/vas/util/printserver/server/printmap.js b/vas/util/printserver/server/printmap.js similarity index 100% rename from src/vitis/vas/util/printserver/server/printmap.js rename to vas/util/printserver/server/printmap.js diff --git a/src/vitis/vas/util/printserver/server/printreport.js b/vas/util/printserver/server/printreport.js similarity index 100% rename from src/vitis/vas/util/printserver/server/printreport.js rename to vas/util/printserver/server/printreport.js diff --git a/src/vitis/vas/util/printserver/server/printtemplate.js b/vas/util/printserver/server/printtemplate.js similarity index 100% rename from src/vitis/vas/util/printserver/server/printtemplate.js rename to vas/util/printserver/server/printtemplate.js diff --git a/src/vitis/vas/util/printserver/server/saveimage.js b/vas/util/printserver/server/saveimage.js similarity index 100% rename from src/vitis/vas/util/printserver/server/saveimage.js rename to vas/util/printserver/server/saveimage.js diff --git a/src/vitis/vas/util/printserver/server/targetsize.js b/vas/util/printserver/server/targetsize.js similarity index 100% rename from src/vitis/vas/util/printserver/server/targetsize.js rename to vas/util/printserver/server/targetsize.js diff --git a/src/vitis/vas/util/proxy/proxy.php b/vas/util/proxy/proxy.php similarity index 100% rename from src/vitis/vas/util/proxy/proxy.php rename to vas/util/proxy/proxy.php diff --git a/src/vitis/vas/util/webSocket/server/lib/SplClassLoader.php b/vas/util/webSocket/server/lib/SplClassLoader.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/SplClassLoader.php rename to vas/util/webSocket/server/lib/SplClassLoader.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/Application.php b/vas/util/webSocket/server/lib/WebSocket/Application/Application.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/Application.php rename to vas/util/webSocket/server/lib/WebSocket/Application/Application.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/DemoApplication.php b/vas/util/webSocket/server/lib/WebSocket/Application/DemoApplication.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/DemoApplication.php rename to vas/util/webSocket/server/lib/WebSocket/Application/DemoApplication.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/GtfEvents.php b/vas/util/webSocket/server/lib/WebSocket/Application/GtfEvents.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/GtfEvents.php rename to vas/util/webSocket/server/lib/WebSocket/Application/GtfEvents.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/Status.php b/vas/util/webSocket/server/lib/WebSocket/Application/Status.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/Status.php rename to vas/util/webSocket/server/lib/WebSocket/Application/Status.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/StatusApplication.php b/vas/util/webSocket/server/lib/WebSocket/Application/StatusApplication.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/StatusApplication.php rename to vas/util/webSocket/server/lib/WebSocket/Application/StatusApplication.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/VitisApplication.php b/vas/util/webSocket/server/lib/WebSocket/Application/VitisApplication.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/VitisApplication.php rename to vas/util/webSocket/server/lib/WebSocket/Application/VitisApplication.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/VmapEvents.php b/vas/util/webSocket/server/lib/WebSocket/Application/VmapEvents.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Application/VmapEvents.php rename to vas/util/webSocket/server/lib/WebSocket/Application/VmapEvents.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Connection.php b/vas/util/webSocket/server/lib/WebSocket/Connection.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Connection.php rename to vas/util/webSocket/server/lib/WebSocket/Connection.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Server.php b/vas/util/webSocket/server/lib/WebSocket/Server.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Server.php rename to vas/util/webSocket/server/lib/WebSocket/Server.php diff --git a/src/vitis/vas/util/webSocket/server/lib/WebSocket/Socket.php b/vas/util/webSocket/server/lib/WebSocket/Socket.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/lib/WebSocket/Socket.php rename to vas/util/webSocket/server/lib/WebSocket/Socket.php diff --git a/src/vitis/vas/util/webSocket/server/server.pem b/vas/util/webSocket/server/server.pem similarity index 100% rename from src/vitis/vas/util/webSocket/server/server.pem rename to vas/util/webSocket/server/server.pem diff --git a/src/vitis/vas/util/webSocket/server/server.php b/vas/util/webSocket/server/server.php similarity index 100% rename from src/vitis/vas/util/webSocket/server/server.php rename to vas/util/webSocket/server/server.php diff --git a/src/vitis/vas/util/writerpick.txt b/vas/util/writerpick.txt similarity index 100% rename from src/vitis/vas/util/writerpick.txt rename to vas/util/writerpick.txt